{"version":3,"sources":["settings.ts","loggingManager.ts","components/authExpiration/AuthExpirationModal.tsx","components/authExpiration/useInterval.ts","components/AuthContext.tsx","components/tenant/tenantClient.ts","components/tenant/tenantSelectorModal.tsx","components/tenant/index.ts","components/tenant/TenantSelector.tsx","components/header/slice.ts","components/header/Header.tsx","screens/catalog/addFontPopup/slice.ts","components/fileUpload/fileUploadButton/FileUploadButton.tsx","components/fileUpload/fileDropZone/FileDropZone.tsx","components/fileUpload/index.tsx","components/fileUpload/FileUpload.tsx","fontUtil.ts","screens/catalog/addFontPopup/AddFontPopup.tsx","screens/catalog/addFont/AddFont.tsx","components/customTextDropdown/CustomTextDropdown.tsx","screens/catalog/fontText/FontText.tsx","screens/catalog/searchFont/SearchFont.tsx","components/fontSizeSelector/index.ts","components/fontSizeSelector/FontSizeSelector.tsx","screens/repository/slice.ts","clients/interceptors.ts","clients/fontClient.ts","screens/repository/saga.ts","screens/repository/Create.tsx","screens/repository/Repository.tsx","screens/repository/RepositoryActions.tsx","fonts/slice.ts","components/fontCard/section/DetailsSection.tsx","components/fontCard/section/PreviewSection.tsx","components/fontCard/section/FooterSection.tsx","components/fontCard/FontCard.tsx","components/fontCard/section/Actions.tsx","components/fontCard/index.ts","screens/catalog/fontList/FontList.tsx","screens/catalog/Catalog.tsx","urlUtil.ts","screens/catalog/fontList/getFontList.ts","state/rootReducer.ts","screens/catalog/addFontPopup/saga.ts","fonts/saga.ts","state/sagaRoot.ts","state/createStore.ts","index.tsx","App.tsx"],"names":["devMode","process","basename","REACT_APP_ROUTER_BASENAME","apiPrefix","logError","message","console","error","AuthExpirationModal","_ref","isOpen","setClose","_useState","useState","_useState2","Object","slicedToArray","count","setCount","callback","delay","shouldStartTicking","savedCallback","useRef","useEffect","current","id","setInterval","clearInterval","useInterval","react_default","a","createElement","lib","bsStyle","show","title","auth","centralizedAuth","clientID","redirectRoute","DEFAULT_CONTEXT","isLoggedIn","authContext","React","createContext","Provider","AuthProvider","children","setIsLoggedIn","_useState3","_useState4","isOpenModal","setIsOpenModal","ensureAuthentication","nextUri","window","location","pathname","search","then","isAuthenticated","on","catch","concat","Fragment","login","value","PERMISSIONS","TENANT_CACHE_KEY","getPrincipalPermissions","_callee","sub","accessToken","urlEncodedSub","regenerator_default","wrap","_context","prev","next","encodeURIComponent","abrupt","axios","get","headers","Authorization","_ref3","data","stop","buildAvailableTenant","resourceReference","resource","resourceType","tenantId","identifier","tenantType","canReadAsset","permissions","includes","canCreateAsset","canReadSetting","canManageSetting","asset","canRead","canCreate","fonts","canManage","setting","tenantDisplayName","reduceNestedResources","resourceReferences","_ref2","resources","toConsumableArray","map","containsPermissions","some","permission","buildAvailableTenants","principalPermissions","entries","reduce","filter","_callee2","availableTenants","_context2","sent","t0","setLastTenant","tenant","localStorage","setItem","JSON","stringify","removeItem","generateTenantHash","generateTenantLabel","TenantSelectorModal","currentTenant","open","onClose","onSave","selectedTenant","setSelectedTenant","requiresSelection","undefined","footer","onClick","type","className","onRequestHide","closeButton","label","options","onChange","matchingTenant","find","tether","text","TenantSelector","onSaveTenant","onLoadTenants","setOpen","setAvailableTenants","getAvailableTenants","tenants","length","INITIAL_STATE","tenantsLoaded","slice","createSlice","initialState","reducers","state","payload","getCurrentTenant","tenantInfo","reducer","connect","onSaveCurrentTenant","actions","connectedPush","push","_useAuth","useContext","setCurrentTenant","currentTenantLoaded","setCurrentTenantLoaded","lastTenant","getItem","parse","_unused","getLastTenant","Header_default","appTitle","appLinks","components_tenant","getProfile","getAccessToken","profile","notifications","onLogInClicked","onLogOutClicked","onbeforeunload","logout","selectedProperties","fontFamilyName","fontStyle","technology","license","isLoading","showSnackbar","uploadSuccess","uploadFailed","onClosePopup","onAddFont","addFontSuccess","objectSpread","addFontFailed","hideSnackbar","FileUploadButton","accept","onFileUpload","event","target","files","join","isAllFilesValid","validExtensions","file","extension","name","split","pop","indexOf","isInValidFileExtension","getFileFromDataTransfer","dataTransfer","items","dataTransferItems","keys","item","kind","getAsFile","FileDropZone","helpText","onFileInvalid","wrapperClassNames","isDragOver","setIsDragOver","onDrop","preventDefault","onDragOver","dropEffect","onDragEnter","onDragLeave","FileUpload","showButton","onUpload","selectedFile","setSelectedFile","size","sizeKB","toFixed","formatFileSize","getFontDetailsFromFile","Promise","resolve","reject","reader","FileReader","onload","e","font","openTypeParse","result","fontFamily","names","en","fontSubFamily","fontSubfamily","err","onerror","readAsArrayBuffer","validFontFiles","validFontStyles","fontProperties","isRequired","Spinner","shapes","defaultAlert","isShown","style","autoHide","fontStyleMap","Map","selectedFontProperty","groupedFonts","addFont","closePopup","defaultProperties","setDefaultProperties","properties","setProperties","_useState5","_useState6","fileUploadErrorMessage","setFileUploadErrorMessage","_useState7","_useState8","setFile","_useState9","_useState10","alert","setAlert","_useState11","_useState12","isTermsAccepted","setIsTermsAccepted","_useState13","_useState14","duplicateFileWarning","setDuplicateFileWarning","_useState15","_useState16","isDisabled","setIsDisabled","setProperty","property","warningIfDuplicateFile","publishedFont","fontGroup","g","familyName","f","preFillFontDetailsFromFile","_x","_x2","_preFillFontDetailsFromFile","apply","this","arguments","asyncToGenerator","mark","fileUploaded","toLocaleLowerCase","_x3","updatedFontProperties","fontToUpdate","p","tech","onChangeSelectOption","createSelectOptions","option","onHideSnackbar","mandatoryFieldsEmpty","validateForm","disabled","components_fileUpload","currentTarget","required","containerClassName","clearable","checked","AddFont","showAddFontModal","setShowAddFontModal","addFontPopup_AddFontPopup","CustomTextDropdown","textOptions","defaultOption","placeholder","onTextChange","customText","setCustomText","textSelected","button","innerText","rightAddon","opt","key","CUSTOM_TEXT","DEFAULT_FONT_PREVIEW_TEXT","FontText","SearchFont","searchText","currentFontRepo","searchType","setSearchText","redirectLink","setRedirectLink","repoPath","searchFont","onKeyPress","which","react_router","to","FontSizeSelector","sizes","defaultSize","onFontSizeChange","fontSize","setFontSize","selection","selectedFontSize","isSaveSuccess","inheritSuccess","fontsInherited","isSaving","isEditing","isError","inheritedRepositories","isLoadingRepo","repoList","isRepoFetchCompleted","onSaveRepoName","onInheritRepo","inheritFailed","saveSuccess","saveFailed","resetSuccess","resetError","startLoadingRepo","_ref4","loadSuccess","_ref5","loadFailed","startFetchingRepoList","fetchSuccess","_ref6","sort","firstRepo","secondRepo","localeCompare","fetchFailed","getCurrentRepoId","repository","getCurrentRepo","axiosWithAuth","create","interceptors","request","use","config","response","status","FONT_BASE_URL","updateRepository","repoInfo","repoId","patch","fetchRepo","_fetchRepo","updateRepo","_x4","_updateRepo","inheritRepos","_x5","_x6","_x7","_inheritRepos","_callee3","_context3","saveRepo","_x8","_saveRepo","_callee4","repo","_context4","post","_x9","_x10","_addFont","_callee5","fontToAdd","_context5","deleteFont","_x11","_x12","_deleteFont","_callee6","fontId","_context6","delete","addFontFile","_x13","_x14","_x15","_addFontFile","_callee7","fontFile","_context7","FormData","append","getAllFontsDetails","_x16","_x17","_getAllFontsDetails","_callee8","publicView","_context8","fetchAllRepositories","_x18","_fetchAllRepositories","_callee9","params","_context9","publishFont","_x19","_x20","_publishFont","_callee10","_context10","onSaveRepo","onLoadRepo","onFetchRepoList","repositorySaga","INHERIT_REPOSITORY_ID","action","repoName","currentRepo","_currentRepo","select","call","put","_marked","_marked2","_marked3","_marked4","all","takeEvery","t1","t2","t3","t4","t5","_marked5","resetIsOpen","repositoryName","setRepositoryName","inheritFromMaster","setInheritFromMaster","errorText","setErrorText","onModalClose","ocean","colors","isRepoLoading","limited","setIsOpen","onClickCreate","renderCreateRepoBtn","primary","color","darker","marginLeft","marginRight","cursor","react_router_dom","position","left","top","repository_Create","setIsEditing","setRepoName","showInheritModal","setShowInheritModal","onInheritModalClose","inheritModalFooter","direction","contents","copyToClipboard","pointerEvents","loaded","isPublishing","publishSuccess","isDeleting","deleteSuccess","onLoadFonts","onQueryFonts","fontsLoadSuccess","fontsLoadFailed","onPublishFont","fontPublishSuccess","fontPublishFailed","onDeleteFont","fontDeleteSuccess","fontDeleteFailed","resetDeleteSuccess","DetailsSection","existingStyles","maxSizeToHeightLevels","fontSizeToHeightRange","sizeHeight","i","minSize","maxSize","height","getPreviewImageHeight","rangeSizes","range","rangeSize","getSizeRange","cimDocFontStyleMap","getFontPreview","fontProps","content","heightInMM","docContent","version","document","surfaces","width","textAreas","x","y","horizontalAlignment","verticalAlignment","blockFlowDirection","textFields","fontRepositoryUrl","deflatedContent","Pako","deflateRaw","encodedContent","btoa","getTransientUdsDocument","getRenderingAssetId","links","draft","renderingAssetId","published","createPreviewStyle","props","fontURL","isVisible","Status","NoAsset","canDownloadFontFile","background","renderPreview","getFontFile","repositoryId","dummyDataImage","deleteIconURL","PreviewSection","fontPreviewProps","imgURL","setImgURL","fontImageURL","setIsLoading","PreviewSection_Spinner","src","alt","onLoad","dangerouslySetInnerHTML","__html","visibility_sensor_default","partialVisibility","FooterSection","Published","Draft","Actions","icon","getStatus","FontCard","FontTech","textContent","fontRepoName","isDetailView","deletedFontCssClass","techListOrdered","Print","valueOf","Embroidery","SearchType","isDeleteSuccess","fontsLoaded","showDeletedFonts","showDeleteModal","setShowDeleteModal","setFontId","setFontToUpdate","showUpdateModal","setShowUpdateModal","onCloseClick","allFonts","showDeleted","onPublishClick","onUpdateCancel","getCardActions","cardActions","Delete","Publish","Update","onUpdateClick","hasDraft","isPublished","techs","acc","b","renderFontCards","fontList","components_fontCard","emptyMessage","getNoFontsMessage","getQueryVariable","queryString","URLSearchParams","getFont","getFontStyles","getFontList","groupedFont","s","gr","FONT_SIZES","DEFAULT_FONT_SIZE","fSize","getSearchType","hasManageFontPermission","fontsLoading","fontDeleting","repoLoading","match","setSearchType","setFonts","previewText","setPreviewText","reposFetched","setReposFetched","setShowDeleted","repository_Repository","Catalog_Spinner","repository_RepositoryActions","fontSizeSelector","fontList_FontList","rootReducer","history","combineReducers","router","connectRouter","generateFontObj","fontObj","forEach","existingFont","fontAddedProperties","propertiesWithFile","fontListSlice","saga_marked","saga_marked2","fontListSaga","groupFonts","queryResponse","_","groupBy","groupByFamilyName","fontName","getUniqueProperties","firstFont","secondFont","getUniqueFonts","masterFonts","localFonts","unionWith","tenantsRepoList","repoIds","_allFonts","uniqueFonts","rId","tenantRepo","fonts_saga_marked","fonts_saga_marked2","saga_marked3","saga_marked4","sagaRoot","sagaRoot_marked","sagaMiddleware","sagaMiddlewareFactory","createBrowserHistory","routeMiddleware","routerMiddleware","store","configureStore","middleware","run","createStore","ReactDOM","render","es","esm","header_Header","path","component","Catalog","exact","getElementById"],"mappings":"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","file":"static/js/main.b1168a3c.chunk.js","sourcesContent":["const authClientId = process.env.REACT_APP_AUTH0_CLIENT_ID || '';\nconst devMode = process.env.NODE_ENV === 'development';\nconst basename = process.env.REACT_APP_ROUTER_BASENAME || '';\nconst apiPrefix = devMode ? 'dev.' : process.env.REACT_APP_API_PREFIX;\n\nexport {\n authClientId,\n devMode,\n basename,\n apiPrefix,\n};\n","import { devMode } from './settings';\n\nexport function logInfo(message: string) {\n if (devMode) {\n console.log(message); // eslint-disable-line no-console\n }\n}\n\nexport function logError(message: string) {\n if (devMode) {\n console.error(message); // eslint-disable-line no-console\n }\n}\n","import { Modal } from '@cimpress/react-components';\nimport React, { useState } from 'react';\n\nimport useInterval from './useInterval';\n\ninterface Props {\n isOpen: boolean;\n setClose(): void;\n}\n\nexport default function AuthExpirationModal({ isOpen, setClose }: Props) {\n const [count, setCount] = useState(5);\n\n useInterval(() => {\n if (count === 1) {\n setCount(5);\n setClose();\n } else {\n setCount(count - 1);\n }\n }, 1000, isOpen);\n\n return (\n \n Your session has expired. We are triggering a refresh in {count} seconds...\n \n );\n}\n","import { useEffect, useRef } from 'react';\n\nexport default function useInterval(callback: () => void, delay: number, shouldStartTicking: boolean) {\n const savedCallback = useRef<() => void>();\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => { // eslint-disable-line consistent-return\n function tick() {\n savedCallback.current && savedCallback.current();\n }\n if (shouldStartTicking) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [shouldStartTicking]); // eslint-disable-line react-hooks/exhaustive-deps\n}\n","import React, { ReactNode, useState, useContext, useEffect } from 'react';\nimport { centralizedAuth } from '@cimpress/simple-auth-wrapper';\n\nimport { authClientId } from '../settings';\nimport { logError } from '../loggingManager';\nimport AuthExpirationModal from './authExpiration/AuthExpirationModal';\n\ninterface Props {\n children: ReactNode;\n}\n\ninterface AuthContext {\n auth: centralizedAuth;\n isLoggedIn: boolean;\n}\n\nexport const auth = new centralizedAuth({ // eslint-disable-line new-cap\n clientID: authClientId,\n redirectRoute: '/',\n});\n\nconst DEFAULT_CONTEXT: AuthContext = {\n auth,\n isLoggedIn: false,\n};\n\nconst authContext = React.createContext(DEFAULT_CONTEXT);\nconst { Provider } = authContext;\n\nfunction AuthProvider({ children }: Props) {\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isOpenModal, setIsOpenModal] = useState(false);\n\n const setCloseModal = () => {\n setIsOpenModal(false);\n auth.login();\n };\n\n useEffect(() => {\n auth.ensureAuthentication({ nextUri: window.location.pathname + window.location.search })\n .then((isAuthenticated: boolean) => {\n if (isAuthenticated) {\n setIsLoggedIn(true);\n auth.on('tokenExpired', () => {\n setIsLoggedIn(false);\n setIsOpenModal(true);\n });\n }\n })\n .catch((error: Error) => logError(`Failed to ensure authentication: ${error}`));\n }, []);\n\n return (\n <>\n \n \n {children}\n \n \n );\n}\n\nfunction useAuth() {\n return useContext(authContext);\n}\n\nexport {\n useAuth,\n AuthProvider,\n};\n","import axios, { AxiosError } from 'axios';\n\nexport interface AssetPermissions {\n canCreate: boolean;\n canRead: boolean;\n}\n\nexport interface SettingPermissions {\n canRead: boolean;\n canManage: boolean;\n}\n\nexport interface FontsPermission {\n canManage: boolean;\n}\n\nexport interface Tenant {\n tenantId: string;\n tenantType: string;\n tenantDisplayName: string;\n permissions: {\n asset: AssetPermissions;\n fonts: FontsPermission;\n setting: SettingPermissions;\n };\n}\n\ninterface ResourceReference {\n resourceType: string;\n resource: Resource;\n}\n\ninterface Resource {\n identifier: string;\n permissions: string[];\n}\n\ninterface PrincipalPermissionsResponse {\n [resourceType: string]: Resource[];\n}\n\nconst READ_ASSET_PERMISSION = 'read:scenes';\nconst CREATE_ASSET_PERMISSION = 'create:scenes';\nconst READ_SETTING_PERMISSION = 'read:setting';\nconst MANAGE_SETTING_PERMISSION = 'manage:setting';\nconst MANAGE_FONT_PERMISSION = 'manage:fonts';\n\nconst PERMISSIONS = [\n READ_ASSET_PERMISSION,\n CREATE_ASSET_PERMISSION,\n READ_SETTING_PERMISSION,\n MANAGE_SETTING_PERMISSION,\n];\n\nconst TENANT_CACHE_KEY = 'FONT_MANAGER_TENANT';\n\nasync function getPrincipalPermissions(sub: string, accessToken: string) {\n const urlEncodedSub = encodeURIComponent(sub);\n\n return axios.get(`https://api.cimpress.io/auth/access-management/v1/principals/${urlEncodedSub}/permissions`, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n })\n .then(({ data }) => data)\n .catch((error: AxiosError) => {\n throw error;\n });\n}\n\nconst buildAvailableTenant = (resourceReference: ResourceReference) => {\n const { resource, resourceType } = resourceReference;\n const tenantId = resource.identifier;\n const tenantType = resourceType;\n const canReadAsset = resource.permissions.includes(READ_ASSET_PERMISSION);\n const canCreateAsset = resource.permissions.includes(CREATE_ASSET_PERMISSION);\n const canReadSetting = resource.permissions.includes(READ_SETTING_PERMISSION);\n const canManageSetting = resource.permissions.includes(MANAGE_SETTING_PERMISSION);\n const canManageFonts = resource.permissions.includes(MANAGE_FONT_PERMISSION);\n\n return {\n tenantId,\n tenantType,\n permissions: {\n asset: {\n canRead: canReadAsset,\n canCreate: canCreateAsset,\n },\n fonts: {\n canManage: canManageFonts,\n },\n setting: {\n canRead: canReadSetting,\n canManage: canManageSetting,\n },\n },\n tenantDisplayName: tenantId,\n };\n};\n\nconst reduceNestedResources = (resourceReferences: ResourceReference[], [resourceType, resources]: [string, Resource[]]) =>\n [...resources.map(resource => ({ resourceType, resource })), ...resourceReferences]; // eslint-disable-line implicit-arrow-linebreak\n\nconst containsPermissions = (resourceReference: ResourceReference) => resourceReference.resource.permissions.some(permission => PERMISSIONS.includes(permission));\n\nconst buildAvailableTenants = (principalPermissions: PrincipalPermissionsResponse) => Object.entries(principalPermissions)\n .reduce(reduceNestedResources, [])\n .filter(containsPermissions)\n .map(buildAvailableTenant);\n\n/**\n * Get users available tenants\n */\nasync function getAvailableTenants(sub: string, accessToken: string): Promise {\n let availableTenants: Tenant[] = [];\n try {\n const principalPermissions = await getPrincipalPermissions(sub, accessToken);\n availableTenants = buildAvailableTenants(principalPermissions);\n } catch (error) {\n throw error;\n }\n\n return availableTenants;\n}\n\nfunction setLastTenant(tenant?: Tenant) {\n if (tenant) {\n localStorage.setItem(TENANT_CACHE_KEY, JSON.stringify(tenant));\n } else {\n localStorage.removeItem(TENANT_CACHE_KEY);\n }\n}\n\nfunction getLastTenant() {\n const lastTenant = localStorage.getItem(TENANT_CACHE_KEY);\n if (lastTenant) {\n try {\n return JSON.parse(lastTenant) as Tenant;\n } catch {\n setLastTenant(); // clear last known tenant\n }\n }\n return null;\n}\n\nexport {\n getAvailableTenants,\n getLastTenant,\n setLastTenant,\n};\n","import React, { useState } from 'react';\nimport { Modal, Button, Select, Label } from '@cimpress/react-components';\nimport { Tenant } from './tenantClient';\n\ninterface Props {\n currentTenant?: Tenant;\n availableTenants: Tenant[];\n open: boolean;\n message?: string;\n onClose(): void;\n onSave(tenant: Tenant): void;\n}\n\nconst generateTenantHash = (tenant: Tenant) => `${tenant.tenantType}-${tenant.tenantId}`;\n\nconst generateTenantLabel = (tenant: Tenant) => `${tenant.tenantType}: ${tenant.tenantDisplayName}`;\n\nexport default function TenantSelectorModal({ currentTenant, availableTenants, open, message, onClose, onSave }: Props) {\n const [selectedTenant, setSelectedTenant] = useState(currentTenant);\n const requiresSelection = currentTenant === undefined;\n\n const onSaveClick = () => {\n if (selectedTenant) {\n onSave(selectedTenant);\n }\n };\n\n const onCloseClick = () => {\n setSelectedTenant(currentTenant); // if they aren't saving the currently selected one, we should reset it\n onClose();\n };\n\n const footer = (\n
\n {!requiresSelection && ()}\n \n
\n );\n\n const onChange = ({ value }: any) => { // eslint-disable-line @typescript-eslint/no-explicit-any\n const matchingTenant = availableTenants.find(tenant => generateTenantHash(tenant) === value);\n if (matchingTenant) {\n setSelectedTenant(matchingTenant);\n }\n };\n\n return (\n \n
\n {message}\n
\n
\n ({ value: generateTenantHash(tenant), label: generateTenantLabel(tenant) }))}\n onChange={onChange}\n tether={true}\n />\n
\n {selectedTenant && (\n
\n Permissions: \n
\n )}\n \n );\n}\n","import TenantSelector from './TenantSelector';\nimport { Tenant, getLastTenant, setLastTenant } from './tenantClient';\n\nexport default TenantSelector;\nexport { getLastTenant, setLastTenant };\n\nexport type Tenant = Tenant;\n","import React, { useState, useEffect } from 'react';\nimport { Tenant, getAvailableTenants } from './tenantClient';\nimport TenantSelectorModal from './tenantSelectorModal';\n\nimport './tenantSelector.scss';\n\ninterface Props {\n currentTenant: Tenant | undefined;\n show: boolean;\n message?: string;\n sub: string;\n accessToken: string;\n onSaveTenant(tenant: Tenant): void;\n onLoadTenants(tenants: Tenant[]): void;\n}\n\nexport default function TenantSelector({ currentTenant, message, sub, accessToken, onSaveTenant, onLoadTenants, show }: Props) {\n const [open, setOpen] = useState(show);\n const [availableTenants, setAvailableTenants] = useState([]);\n const onOpen = () => setOpen(true);\n const onClose = () => setOpen(false);\n const onSave = (tenant: Tenant) => {\n onSaveTenant(tenant);\n setOpen(false);\n };\n\n useEffect(() => {\n if (sub && accessToken) {\n getAvailableTenants(sub, accessToken).then((tenants: Tenant[]) => {\n onLoadTenants(tenants);\n setAvailableTenants(tenants);\n }).catch(() => {\n onLoadTenants([]);\n });\n }\n }, [sub, accessToken, onLoadTenants]);\n\n useEffect(() => {\n setOpen(show);\n }, [show]);\n\n const isOpen = () => open;\n\n return (\n
\n {(availableTenants.length > 0) && (\n
\n Tenant:\n \n
\n )}\n {(currentTenant || isOpen()) && (\n \n )}\n
\n );\n}\n","import { createSlice, PayloadAction } from 'redux-starter-kit';\nimport { RootState } from '../../state/rootReducer';\nimport { Tenant } from '../tenant';\n\n\ninterface TenantInfo {\n tenant: Tenant | undefined;\n tenantsLoaded: boolean;\n availableTenants: Tenant[];\n}\n\nconst INITIAL_STATE: TenantInfo = {\n tenant: undefined,\n tenantsLoaded: false,\n availableTenants: [],\n};\n\nconst slice = createSlice({\n slice: 'tenantInfo',\n initialState: INITIAL_STATE,\n reducers: {\n onSaveTenant: (state, { payload }: PayloadAction) => {\n state.tenant = payload;\n },\n onLoadTenants: (state, { payload }: PayloadAction) => {\n state.tenantsLoaded = true;\n state.availableTenants = payload;\n },\n },\n});\n\nexport function getCurrentTenant(state: RootState) {\n return state.tenantInfo.tenant;\n}\n\nexport const { reducer } = slice;\n\nexport default slice;\n","import React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport Header from '@cimpress-technology/react-platform-header/lib/Header';\nimport { push, Push } from 'connected-react-router';\nimport { useAuth } from '../AuthContext';\nimport TenantSelector, { Tenant, getLastTenant, setLastTenant } from '../tenant';\nimport slice from './slice';\nimport { RootState } from '../../state/rootReducer';\n\ninterface Props {\n tenantsLoaded: boolean;\n availableTenants: Tenant[];\n connectedPush: Push;\n onSaveCurrentTenant(payload: Tenant): void;\n onLoadTenants(payload: Tenant[]): void;\n}\n\n\nexport function AppHeader({ tenantsLoaded, availableTenants, connectedPush, onSaveCurrentTenant, onLoadTenants }: Props) {\n const { auth, isLoggedIn } = useAuth();\n const [currentTenant, setCurrentTenant] = useState();\n const [currentTenantLoaded, setCurrentTenantLoaded] = useState(false);\n\n useEffect(() => {\n const lastTenant = getLastTenant();\n setCurrentTenant(lastTenant || undefined);\n lastTenant && onSaveCurrentTenant(lastTenant);\n setCurrentTenantLoaded(true);\n }, [onSaveCurrentTenant]);\n\n function login() {\n auth.login();\n }\n\n function logout() {\n window.onbeforeunload = null;\n auth.logout('/');\n }\n\n function onSaveTenant(tenant: Tenant) {\n setCurrentTenant(tenant);\n setLastTenant(tenant);\n onSaveCurrentTenant(tenant);\n connectedPush('/');\n }\n\n function getProfile() {\n return isLoggedIn ? auth.getProfile() : {};\n }\n\n return (\n 0 && currentTenantLoaded && !(currentTenant && currentTenant.tenantId)}\n onSaveTenant={onSaveTenant}\n sub={auth.getProfile().sub}\n accessToken={auth.getAccessToken()}\n onLoadTenants={onLoadTenants}\n />\n ),\n ]}\n profile={getProfile()}\n notifications={null}\n onLogInClicked={login}\n onLogOutClicked={logout}\n isLoggedIn={isLoggedIn}\n accessToken={auth.getAccessToken()}\n />\n );\n}\n\nexport default connect(\n (state: RootState) => ({\n availableTenants: state.tenantInfo.availableTenants,\n tenantsLoaded: state.tenantInfo.tenantsLoaded,\n }),\n {\n onSaveCurrentTenant: slice.actions.onSaveTenant,\n onLoadTenants: slice.actions.onLoadTenants,\n connectedPush: push,\n },\n)(AppHeader);\n","import { createSlice, PayloadAction } from 'redux-starter-kit';\nimport { FontProperty } from '../../../clients/fontClient';\nimport { FontProperties } from '../addFontPopup/AddFontPopup';\n\n\nexport const defaultProperties: FontProperty = {\n fontFamilyName: '',\n fontStyle: '',\n technology: 'Print',\n license: 'Open',\n};\n\nexport interface AddFont {\n selectedProperties: FontProperty;\n savedProperties?: FontProperty;\n isLoading: boolean;\n showSnackbar: boolean;\n uploadSuccess: boolean;\n uploadFailed: boolean;\n}\n\nexport interface Properties {\n properties: FontProperties[];\n file: File;\n}\n\nexport const INITIAL_STATE: AddFont = {\n selectedProperties: defaultProperties,\n isLoading: false,\n showSnackbar: false,\n uploadSuccess: false,\n uploadFailed: false,\n};\n\nconst slice = createSlice({\n slice: 'addFont',\n initialState: INITIAL_STATE,\n reducers: {\n onClosePopup: () => INITIAL_STATE,\n onAddFont: (state, { payload }: PayloadAction) => { state.isLoading = true; },\n addFontSuccess: state => ({ ...INITIAL_STATE, uploadSuccess: true, isLoading: false }),\n addFontFailed: (state) => { state.isLoading = false; state.showSnackbar = true; state.uploadSuccess = false; state.uploadFailed = true; },\n hideSnackbar: (state) => { state.showSnackbar = false; state.uploadSuccess = false; state.uploadFailed = false; },\n },\n});\n\n\nexport const { reducer } = slice;\n\nexport default slice;\n","import React, { ReactNode } from 'react';\nimport { Button } from '@cimpress/react-components';\n\nimport './fileUploadButton.scss';\n\ninterface Props {\n children?: ReactNode;\n /**\n * The type of button you are creating.\n */\n type?:\n | 'default'\n | 'primary'\n | 'dark'\n | 'secondary'\n | 'link'\n | 'outline-dark'\n | 'outline-secondary';\n\n /**\n * The callback function used when a selected file changes.\n */\n onFileUpload: (files: File[]) => void;\n\n accept?: string[];\n}\n\n\nexport function FileUploadButton({ children, type, accept, onFileUpload }: Props) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const onChange = (event: any) => onFileUpload(event.target.files);\n return (\n
\n \n
\n );\n}\n","import React, { useState, ReactNode } from 'react';\n\nimport './fileDropZone.scss';\n\ninterface Props {\n accept?: string[];\n helpText?: string;\n bsStyle?: string;\n children?: ReactNode;\n onFileUpload(payload: File[]): void;\n onFileInvalid?(): void;\n}\n\nconst isInValidFileExtension = (file: File, validExtensions: string[]): boolean => {\n const extension = file && file.name && `.${file.name.split('.').pop()}`;\n return !extension || validExtensions.indexOf(extension) === -1;\n};\n\nconst isAllFilesValid = (files: File[], validExtensions: string[] | undefined): boolean => {\n if (!validExtensions || (validExtensions && validExtensions.length === 0)) return true; // can accept all file extensions if validExtensions is undefined or empty\n return !files.some(file => isInValidFileExtension(file, validExtensions));\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getFileFromDataTransfer = (dataTransfer: any): File[] => {\n if (dataTransfer.items) {\n const dataTransferItems = dataTransfer.items;\n const files = Object.keys(dataTransferItems)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .filter((item: any) => dataTransferItems[item].kind === 'file')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map((item: any) => dataTransferItems[item].getAsFile());\n return files;\n }\n return dataTransfer.files;\n};\n\nexport function FileDropZone({ accept, helpText, bsStyle, children, onFileUpload, onFileInvalid }: Props) {\n const wrapperClassNames = ['file-dropzone-wrapper'];\n bsStyle && wrapperClassNames.push(`has-${bsStyle}`);\n\n const [isDragOver, setIsDragOver] = useState(false);\n\n const dropHandler = (event: React.DragEvent) => {\n event.preventDefault();\n const files = getFileFromDataTransfer(event.dataTransfer);\n if (isAllFilesValid(files, accept)) {\n onFileUpload(files);\n } else {\n onFileInvalid && onFileInvalid();\n }\n setIsDragOver(false);\n };\n\n const dragoverHandler = (event: React.DragEvent) => {\n event.preventDefault();\n // eslint-disable-next-line no-param-reassign\n event.dataTransfer.dropEffect = 'copy';\n };\n const ondragenter = () => setIsDragOver(true);\n const ondragleave = () => setIsDragOver(false);\n\n return (\n
\n \n { children }\n
\n { helpText && {helpText} }\n \n );\n}\n","import { FileUpload } from './FileUpload';\n\nexport default FileUpload;\n","import React, { useState } from 'react';\n\nimport { FileUploadButton } from './fileUploadButton/FileUploadButton';\n\nimport './fileUpload.scss';\nimport { FileDropZone } from './fileDropZone/FileDropZone';\n\ninterface Props {\n showButton?: boolean;\n accept?: string[];\n helpText?: string;\n bsStyle?: string;\n onUpload?: (files: File | undefined) => void;\n onFileInvalid?(): void;\n}\n\nfunction formatFileSize(size: number) {\n if (size >= 1024) {\n const sizeKB = size / 1024;\n if (sizeKB >= 1024) {\n const sizeMB = sizeKB / 1024;\n return `${sizeMB.toFixed(2)} MB`;\n }\n return `${sizeKB.toFixed(2)} KB`;\n }\n return `${size} B`;\n}\n\nexport function FileUpload({ showButton, accept, helpText, bsStyle, onUpload, onFileInvalid }: Props) {\n const [selectedFile, setSelectedFile] = useState();\n\n const onFileUpload = (files: File[]) => {\n setSelectedFile(files[0]);\n onUpload && onUpload(files[0]);\n };\n\n const removeFile = () => {\n setSelectedFile(undefined);\n onUpload && onUpload(undefined);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const onChange = (event: any) => onFileUpload(event.target.files);\n\n return (\n
\n {\n selectedFile\n ? (\n
\n \n
{ selectedFile.name }
\n
{ formatFileSize(selectedFile.size) }
\n
{ helpText && {helpText} }
\n
\n )\n : (\n \n {\n showButton\n ? (\n <>\n
Drag and Drop file here
\n Upload\n \n )\n : (\n <>\n
Drag and Drop file here or click to select
\n \n \n )\n }\n \n )\n }\n
\n );\n}\n","import { parse as openTypeParse } from 'opentype.js';\n\nexport function getFontDetailsFromFile(file: File) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n reader.onload = (e: any) => {\n try {\n const font = openTypeParse(e.target.result);\n resolve({ fontFamily: font.names.fontFamily.en, fontSubFamily: font.names.fontSubfamily.en });\n } catch (err) {\n reject(err);\n }\n };\n reader.onerror = (err) => {\n reject(err);\n };\n reader.readAsArrayBuffer(file);\n });\n}\n","import React, { ChangeEvent, useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Modal, TextField, Button, Select, shapes, Snackbar, Checkbox } from '@cimpress/react-components';\n\nimport './addFontPopup.scss';\nimport { RootState } from '../../../state/rootReducer';\nimport slice, { Properties } from './slice';\nimport { FontProperty, Font } from '../../../clients/fontClient';\nimport FontUpload from '../../../components/fileUpload';\nimport { getFontDetailsFromFile } from '../../../fontUtil';\nimport { GroupedFont } from '../../../fonts/saga';\n\ninterface Props {\n font?: Font;\n isOpen: boolean;\n selectedFontProperty: FontProperty;\n uploadSuccess: boolean;\n uploadFailed: boolean;\n isLoading: boolean;\n showSnackbar: boolean;\n groupedFonts: GroupedFont[];\n closePopup(): void;\n onClosePopup(): void;\n addFont({ properties, file }: Properties): void;\n hideSnackbar(): void;\n}\n\nexport interface FontProperties {\n type: string;\n value: string;\n options?: string[];\n error?: string;\n isRequired: boolean;\n}\n\nconst validFontFiles = ['.ttf', '.otf'];\nexport const validFontStyles = ['Normal', 'Bold', 'Italic', 'BoldItalic'];\n\nconst fontProperties: FontProperties[] = [\n {\n type: 'familyName',\n value: '',\n error: '',\n isRequired: true,\n },\n {\n type: 'style',\n options: validFontStyles,\n value: '',\n error: '',\n isRequired: true,\n },\n {\n type: 'technology',\n options: ['Print', 'Embroidery'],\n value: 'Print',\n isRequired: false,\n },\n {\n type: 'license',\n options: ['Open', 'Restricted'],\n value: 'Open',\n isRequired: false,\n },\n];\n\nconst { Spinner } = shapes;\n\nexport interface Alert {\n isShown: boolean;\n message: string;\n style: 'danger' | 'info' | 'success' | 'warning' | undefined;\n autoHide: boolean;\n}\n\nexport const defaultAlert: Alert = {\n isShown: false,\n message: '',\n style: undefined,\n autoHide: false,\n};\n\nconst fontStyleMap = new Map([\n ['regular', 'Normal'],\n ['normal', 'Normal'],\n ['bold', 'Bold'],\n ['italic', 'Italic'],\n ['oblique', 'Italic'],\n ['bold italic', 'BoldItalic'],\n ['bold oblique', 'BoldItalic'],\n]);\n\nexport function AddFontPopup({ font, isOpen, closePopup, onClosePopup, addFont, uploadSuccess, isLoading, hideSnackbar, uploadFailed, groupedFonts }: Props) {\n const [defaultProperties, setDefaultProperties] = useState();\n const [properties, setProperties] = useState(fontProperties);\n const [fileUploadErrorMessage, setFileUploadErrorMessage] = useState('');\n const [file, setFile] = useState();\n const [alert, setAlert] = useState(defaultAlert);\n const [isTermsAccepted, setIsTermsAccepted] = useState(false);\n const [duplicateFileWarning, setDuplicateFileWarning] = useState('');\n const [isDisabled, setIsDisabled] = useState(false);\n\n const getFontProperties = (fontToUpdate: Font) => fontProperties.map((p) => {\n if (p.type === 'familyName') {\n return { ...p, value: fontToUpdate.familyName };\n }\n if (p.type === 'style') {\n return { ...p, value: fontToUpdate.style };\n }\n if (p.type === 'technology') {\n return { ...p, value: fontToUpdate.tech };\n }\n if (p.type === 'licence') {\n return { ...p, value: fontToUpdate.license };\n }\n return p;\n });\n\n const validateForm = () => {\n const mandatoryFieldsEmpty = properties.some(property => property.isRequired && property.value === '');\n if (mandatoryFieldsEmpty) {\n setProperties(properties.map(property => (property.isRequired && property.value === '' ? { ...property, error: 'This field is mandatory' } : { ...property, error: '' })));\n }\n if (!file) {\n setFileUploadErrorMessage('Please upload a font file');\n }\n if (mandatoryFieldsEmpty || !file) {\n return;\n }\n addFont({ properties, file });\n };\n\n\n const onSave = () => validateForm();\n\n function setProperty(type: string, value: string, error: string) {\n setProperties(properties.map(property => (property.type === type ? { ...property, value, error } : property)));\n }\n\n function warningIfDuplicateFile(fontFamily: string, style: string, publishedFont: Font | undefined) {\n const fontGroup = groupedFonts.find(g => g.familyName === fontFamily);\n if (!publishedFont && fontGroup && fontGroup.fonts.some(f => f.style === style)) {\n setDuplicateFileWarning('There is already a font with same font family and style added to this repository');\n } else if (publishedFont && publishedFont.familyName !== '' && publishedFont.familyName !== fontFamily) {\n setDuplicateFileWarning(`You are trying to upload ${fontFamily} within ${publishedFont.familyName} font family. Please upload the correct file`);\n }\n }\n\n async function preFillFontDetailsFromFile(fontFamily: string, style: string) {\n setProperties(properties.map((property) => {\n if (property.type === 'familyName' && fontFamily) {\n return { ...property, value: fontFamily };\n }\n if (property.type === 'style' && style) {\n return { ...property, value: style };\n }\n return property;\n }));\n }\n\n const onUpload = async (fileUploaded: File | undefined) => {\n setFile(fileUploaded);\n setFileUploadErrorMessage('');\n if (fileUploaded) {\n const { fontFamily, fontSubFamily } = await getFontDetailsFromFile(fileUploaded) as {fontFamily: string; fontSubFamily: string};\n const style = fontStyleMap.get(fontSubFamily.toLocaleLowerCase()) || '';\n !font && preFillFontDetailsFromFile(fontFamily, style);\n warningIfDuplicateFile(fontFamily, style, font);\n } else {\n setDuplicateFileWarning('');\n setProperties(defaultProperties || fontProperties);\n }\n };\n\n const onFileInvalid = () => {\n setFile(null);\n setFileUploadErrorMessage('Please enter .otf/.ttf file formats');\n };\n\n const onHideSnackbar = () => {\n setAlert(defaultAlert);\n hideSnackbar();\n };\n\n const onCancel = () => {\n closePopup();\n onClosePopup();\n setProperties(defaultProperties || fontProperties);\n setFileUploadErrorMessage('');\n setFile(null);\n setAlert(defaultAlert);\n setIsTermsAccepted(false);\n setDuplicateFileWarning('');\n };\n\n useEffect(() => {\n if (font) {\n const updatedFontProperties = getFontProperties(font);\n setProperties(updatedFontProperties);\n setDefaultProperties(updatedFontProperties);\n setIsDisabled(true);\n }\n }, [font]);\n\n useEffect(() => {\n if (uploadSuccess) {\n closePopup();\n setProperties(defaultProperties || fontProperties);\n onClosePopup();\n setAlert({ isShown: true, message: 'Font has been saved.', style: 'success', autoHide: true });\n setIsTermsAccepted(false);\n }\n if (uploadFailed) {\n setAlert({ isShown: true, message: 'Font Couldn\\'t be saved, please try again.', style: 'danger', autoHide: false });\n }\n }, [uploadSuccess, onClosePopup, closePopup, uploadFailed, defaultProperties]);\n\n const onChangeFontFamilyName = (e: ChangeEvent, key: string) => {\n setProperty(key, e.currentTarget.value, '');\n };\n const onChangeSelectOption = (e: any) => { // eslint-disable-line @typescript-eslint/no-explicit-any\n setProperty(e.property, e.value, '');\n };\n\n const createSelectOptions = (options: string[] | undefined, property: string) => options && options.map(option => ({\n value: option,\n label: option,\n property,\n }));\n\n const toggleCheckbox = () => setIsTermsAccepted(!isTermsAccepted);\n\n const getBsStyle = () => {\n if (fileUploadErrorMessage !== '') {\n return 'error';\n }\n if (duplicateFileWarning !== '') {\n return 'warning';\n }\n return '';\n };\n\n return (\n <>\n \n {alert.message}\n \n \n \n \n \n )}\n >\n {isLoading && }\n\n {isOpen && (\n \n )}\n\n onChangeFontFamilyName(event, 'familyName')}\n required={true}\n disabled={isDisabled}\n />\n\n \n\n \n\n \n
\n
\n You grant to Cimpress Schweiz GmbH a license to copy,\n use and display fonts furnished by you to Cimpress Schweiz GmbH through this upload page for use in providing your portal and its products.\n The license shall permit Cimpress Schweiz GmbH to store the uploaded font(s) on its systems and servers for use in providing this portal and its products.\n You agree to grant Cimpress Schweiz GmbH sufficient license rights to support the maximum number of concurrent users and or\n servers to properly manage the related volume of your use of the portal and ordering of products by you and your Customers.\n The license shall permit Cimpress Schweiz GmbH to copy the uploaded font for the purpose of fulfillment, including printing.\n
\n I Accept}\n checked={isTermsAccepted}\n onChange={toggleCheckbox}\n />\n
\n \n \n );\n}\n\nexport default connect(\n (state: RootState) => ({\n selectedFontProperty: state.fontProperties.selectedProperties,\n uploadSuccess: state.fontProperties.uploadSuccess,\n uploadFailed: state.fontProperties.uploadFailed,\n isLoading: state.fontProperties.isLoading,\n showSnackbar: state.fontProperties.showSnackbar,\n groupedFonts: state.font.groupedFonts,\n }),\n {\n addFont: slice.actions.onAddFont,\n onClosePopup: slice.actions.onClosePopup,\n hideSnackbar: slice.actions.hideSnackbar,\n },\n)(AddFontPopup);\n","import React, { useState } from 'react';\nimport { Button } from '@cimpress/react-components';\n\nimport './addFont.scss';\nimport AddFontPopup from '../addFontPopup/AddFontPopup';\n\nexport default function AddFont() {\n const [showAddFontModal, setShowAddFontModal] = useState(false);\n\n const onAddFontClick = () => setShowAddFontModal(true);\n const onCancel = () => setShowAddFontModal(false);\n\n return (\n <>\n \n \n \n );\n}\n","import React, { useState, ChangeEvent } from 'react';\nimport { TextField, Dropdown, Button } from '@cimpress/react-components';\nimport './customTextDropdown.scss';\n\ninterface Props {\n onTextChange(text: string): void;\n label: string;\n defaultOption: string;\n textOptions: string[];\n placeholder: string;\n}\n\nexport default function CustomTextDropdown({ label, textOptions, defaultOption, placeholder, onTextChange }: Props) {\n const [customText, setCustomText] = useState(defaultOption);\n\n const changeText = (e: ChangeEvent) => {\n const text = e.currentTarget.value;\n setCustomText(text);\n onTextChange(text);\n };\n\n const textSelected = (button: { target: { innerText: string } }) => {\n const text = placeholder === button.target.innerText ? '' : button.target.innerText;\n\n setCustomText(text);\n onTextChange(text);\n };\n\n return (\n
\n \n {textOptions.map(opt => ())}\n \n )}\n />\n
\n );\n}\n","import React from 'react';\nimport CustomTextDropdown from '../../../components/customTextDropdown/CustomTextDropdown';\n\ninterface Props {\n onTextChange(text: string): void;\n}\n\nconst CUSTOM_TEXT = 'Enter your own text…';\nconst textOptions = [\n CUSTOM_TEXT,\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',\n '0123456789 ¿ ? ¡ ! & @ ‘ ’ “ ” « » % * ^ # $ £ € ¢ / ( ) [ ] { } . , ® ©',\n 'The quick brown fox jumps over the lazy dog',\n];\n\nexport const DEFAULT_FONT_PREVIEW_TEXT = textOptions[3];\n\nexport default function FontText({ onTextChange }: Props) {\n return (\n \n );\n}\n","import React, { useState, ChangeEvent, useEffect } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { TextField, Button, Icon } from '@cimpress/react-components';\n\nimport './searchFont.scss';\nimport { SearchType } from '../Catalog';\nimport { FontRepo } from '../../../clients/fontClient';\n\ninterface Props {\n familyName: string;\n searchText: string;\n searchType: SearchType | undefined;\n currentFontRepo: FontRepo;\n}\n\nexport default function SearchFont({ familyName, searchText, searchType, currentFontRepo }: Props) {\n const [text, setSearchText] = useState('');\n const [redirectLink, setRedirectLink] = useState('');\n\n useEffect(() => {\n setSearchText(searchText && !familyName ? searchText : '');\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [familyName]);\n\n const repoPath = `/repository/${currentFontRepo.id}`;\n\n const clearText = () => {\n setSearchText('');\n setRedirectLink(familyName ? `${repoPath}?familyName=${encodeURIComponent(familyName)}` : repoPath);\n };\n\n const onChangeSearchText = (e: ChangeEvent) => setSearchText(e.currentTarget.value);\n\n const searchFont = () => {\n setRedirectLink(`${repoPath}?search=${text}`);\n };\n\n const handleEnterKeyPress = (event: React.KeyboardEvent) => {\n const keyCode = event.which;\n if (keyCode === 13) {\n searchFont();\n }\n };\n\n return (\n
\n
\n \n {text\n && (\n \n )\n }\n \n \n )}\n />\n {redirectLink && }\n
\n
\n );\n}\n","import { FontSizeSelector } from './FontSizeSelector';\n\nexport default FontSizeSelector;\n","import React, { useState } from 'react';\nimport { Select } from '@cimpress/react-components';\n\nexport interface FontSizeOption {\n value: number;\n label: string;\n}\n\ninterface Props {\n sizes: FontSizeOption[];\n defaultSize: number;\n onFontSizeChange(size: number): void;\n}\n\nexport function FontSizeSelector({ sizes, defaultSize, onFontSizeChange }: Props) {\n const [fontSize, setFontSize] = useState(defaultSize);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const changeSize = (selection: any) => {\n const selectedFontSize = selection ? selection.value : defaultSize;\n setFontSize(selectedFontSize);\n onFontSizeChange(selectedFontSize);\n };\n\n return (\n \n );\n}\n","import { createSlice, PayloadAction } from 'redux-starter-kit';\nimport { RootState } from '../../state/rootReducer';\nimport { FontRepo } from '../../clients/fontClient';\n\nexport interface Repository {\n isSaveSuccess: boolean;\n inheritSuccess: boolean;\n fontsInherited: boolean | undefined;\n showSnackbar: boolean;\n isSaving: boolean;\n isEditing: boolean;\n isLoading: boolean;\n isError: boolean;\n currentFontRepo: FontRepo;\n isLoadingRepo: boolean;\n repoList: FontRepo[];\n isRepoFetchCompleted: boolean;\n}\n\nconst fontRepo: FontRepo = {\n name: '',\n id: '',\n inheritedRepositories: null,\n};\nexport interface RepoPayload {\n name: string;\n id?: string;\n inheritedRepositories?: string[];\n}\n\nexport const INITIAL_STATE: Repository = {\n isSaveSuccess: false,\n inheritSuccess: false,\n fontsInherited: undefined,\n showSnackbar: false,\n isSaving: false,\n isEditing: false,\n isLoading: false,\n isError: false,\n currentFontRepo: fontRepo,\n isLoadingRepo: false,\n repoList: [],\n isRepoFetchCompleted: false,\n};\n\nconst slice = createSlice({\n slice: 'repository',\n initialState: INITIAL_STATE,\n reducers: {\n onSaveRepoName: (state, { payload }: PayloadAction) => {\n state.isSaving = true;\n state.isSaveSuccess = false;\n state.isError = false;\n state.isLoading = true;\n },\n onInheritRepo: (state) => {\n state.isLoading = true;\n state.inheritSuccess = false;\n },\n inheritSuccess: (state, { payload }) => {\n state.isLoading = false;\n state.inheritSuccess = true;\n state.showSnackbar = true;\n state.fontsInherited = true;\n state.currentFontRepo = payload;\n state.isLoading = false;\n },\n inheritFailed: (state) => {\n state.isLoading = false;\n state.inheritSuccess = false;\n state.showSnackbar = true;\n state.isLoading = false;\n },\n hideSnackbar: (state) => {\n state.showSnackbar = false;\n state.inheritSuccess = false;\n },\n saveSuccess: (state, { payload }: PayloadAction) => {\n state.isSaveSuccess = true;\n state.isSaving = false;\n state.isError = false;\n state.currentFontRepo = payload;\n state.isLoading = false;\n },\n saveFailed: (state) => {\n state.isSaving = false;\n state.isSaveSuccess = false;\n state.isError = true;\n state.isLoading = false;\n },\n resetSuccess: (state) => {\n state.isSaveSuccess = false;\n state.isLoading = false;\n },\n resetError: (state) => {\n state.isError = false;\n },\n startLoadingRepo: (state, { payload }: PayloadAction) => { state.isLoading = true; state.fontsInherited = undefined; },\n loadSuccess: (state, { payload }: PayloadAction) => {\n state.currentFontRepo = payload;\n state.isLoading = false;\n },\n loadFailed: (state) => { state.isLoading = false; },\n startFetchingRepoList: (state) => { state.isLoadingRepo = true; },\n fetchSuccess: (state, { payload }: PayloadAction) => {\n state.isLoadingRepo = false;\n state.repoList = payload.sort((firstRepo, secondRepo) => firstRepo.name.localeCompare(secondRepo.name));\n state.isRepoFetchCompleted = true;\n },\n fetchFailed: (state) => {\n state.repoList = [];\n state.isLoadingRepo = false;\n state.isRepoFetchCompleted = true;\n },\n },\n});\n\nexport function getCurrentRepoId(state: RootState) {\n return state.repository.currentFontRepo.id;\n}\n\nexport function getCurrentRepo(state: RootState) {\n return state.repository.currentFontRepo;\n}\n\nexport const { reducer } = slice;\n\nexport default slice;\n","import axios, { AxiosError, AxiosRequestConfig } from 'axios';\nimport { logError } from '../loggingManager';\nimport { auth } from '../components/AuthContext';\n\nexport const axiosWithAuth = axios.create();\n\naxiosWithAuth.interceptors.request.use((config: AxiosRequestConfig) => {\n config.headers.Authorization = `Bearer ${auth.getAccessToken()}`; // eslint-disable-line no-param-reassign\n return config;\n}, async error => Promise.reject(error));\n\naxiosWithAuth.interceptors.response.use(response => response, async (error: AxiosError) => {\n if (error.response && error.response.status === 401) {\n logError('You are not authorized');\n }\n return Promise.reject(error);\n});\n","import { apiPrefix } from '../../src/settings';\nimport { axiosWithAuth } from './interceptors';\nimport { logError } from '../loggingManager';\n\nexport const FONT_BASE_URL = `https://${apiPrefix}fonts.documents.cimpress.io/v1/repositories`;\n\ninterface Tenant {\n tenantId: string;\n tenantType: string;\n}\n\nexport interface FontRepo {\n name: string;\n id: string;\n inheritedRepositories?: string[] | null;\n tenant?: {id: string};\n}\n\nexport interface FontProperty {\n [property: string]: string;\n}\n\nexport interface FontToAdd {\n familyName: string;\n style: string;\n technology: string;\n license: string;\n}\n\ninterface LinkedAsset {\n measurementAssetId: string;\n renderingAssetId: string;\n}\n\nexport interface Links {\n published?: {\n [key: string]: LinkedAsset;\n };\n draft?: {\n [key: string]: LinkedAsset;\n };\n}\n\nexport interface Asset {\n id: string;\n renderTech: string;\n legacyMetadata: Metadata;\n extension: string;\n}\n\nexport interface Metadata {\n fontId: string;\n fontName: string;\n}\n\nexport interface Font {\n id: string;\n repositoryId: string;\n familyName: string;\n style: string;\n tech: string;\n license: string;\n links?: Links;\n assets?: Asset[];\n legacyMetadata: Metadata;\n existingStyles?: string[];\n}\n\ninterface RepoInfo {\n tenant: {\n id: string;\n type: string;\n };\n inheritedRepositories?: string[];\n}\n\ninterface RepoCreatePayload {\n name: string;\n inheritedRepositories?: string[] | null;\n tenant: {\n id: string;\n type: string;\n };\n}\n\nfunction updateRepository(repoInfo: RepoInfo, repoId: string) {\n return axiosWithAuth.patch(`${FONT_BASE_URL}/${repoId}`, repoInfo)\n .then(response => response.data)\n .catch((error) => {\n logError('Failed to inherit master repo!');\n throw error;\n });\n}\n\nexport async function fetchRepo(repoId: string) {\n return axiosWithAuth.get(`${FONT_BASE_URL}/${repoId}`)\n .then(response => response.data)\n .catch((error) => {\n logError('Failed to fetch repo!');\n throw error;\n });\n}\n\nexport async function updateRepo(name: string, tenant: Tenant, repoId: string) {\n const repoInfo = {\n name,\n tenant: {\n id: tenant.tenantId,\n type: tenant.tenantType,\n },\n };\n return updateRepository(repoInfo, repoId);\n}\nexport async function inheritRepos(tenant: Tenant, repoId: string, inheritedRepositories: string[]) {\n const repoInfo = {\n tenant: {\n id: tenant.tenantId,\n type: tenant.tenantType,\n },\n inheritedRepositories,\n };\n return updateRepository(repoInfo, repoId);\n}\n\nexport async function saveRepo(repo: RepoCreatePayload) {\n return axiosWithAuth.post(FONT_BASE_URL, repo)\n .then(response => response.data)\n .catch((error) => {\n logError('Failed to save repo!');\n throw error;\n });\n}\n\nexport async function addFont(fontToAdd: FontToAdd, repoId: string) {\n return axiosWithAuth.post(`${FONT_BASE_URL}/${repoId}/fonts`, fontToAdd)\n .then(response => response.data)\n .catch((error) => {\n logError('Failed to add font!');\n throw error;\n });\n}\n\nexport async function deleteFont(repoId: string, fontId: string) {\n return axiosWithAuth.delete(`${FONT_BASE_URL}/${repoId}/fonts/${fontId}/drafts`)\n .then(response => response.data)\n .catch((error) => {\n logError('Failed to delete font!');\n throw error;\n });\n}\n\nexport async function addFontFile(fontId: string, fontFile: File, repoId: string) {\n const data = new FormData();\n data.append('file', fontFile);\n return axiosWithAuth.post(`${FONT_BASE_URL}/${repoId}/fonts/${fontId}/assets`, data)\n .then(response => response.data)\n .catch((error) => {\n logError('Failed to add font file!');\n throw error;\n });\n}\n\nexport async function getAllFontsDetails(repoId: string, publicView: boolean) {\n return axiosWithAuth.get(`${FONT_BASE_URL}/${repoId}/fonts${publicView ? '?view=Public' : ''}`)\n .then(response => response.data)\n .catch((error) => {\n logError('Failed to load fonts!');\n throw error;\n });\n}\n\nexport async function fetchAllRepositories({ tenantId, tenantType }: Tenant) {\n const params = {\n tenantId,\n tenantType,\n };\n return axiosWithAuth.get(FONT_BASE_URL, { params })\n .then(response => response.data)\n .catch((error) => {\n logError('Failed to fetch repositores!');\n throw error;\n });\n}\n\nexport async function publishFont(repoId: string, fontId: string) {\n return axiosWithAuth.post(`${FONT_BASE_URL}/${repoId}/fonts/${fontId}/drafts:promote`)\n .then(response => response.status)\n .catch((error) => {\n logError('Failed to publish font!');\n throw error;\n });\n}\n","import { takeEvery, all, put, call, select } from 'redux-saga/effects';\nimport { PayloadAction } from 'redux-starter-kit';\nimport { push } from 'connected-react-router';\nimport { saveRepo, updateRepo, fetchRepo, fetchAllRepositories, inheritRepos } from '../../clients/fontClient';\nimport slice, { getCurrentRepoId, RepoPayload } from './slice';\nimport { getCurrentTenant } from '../../components/header/slice';\nimport { logError } from '../../loggingManager';\nimport { Tenant } from '../../components/tenant';\nimport { apiPrefix } from '../../settings';\n\nexport const DEV_TEST_REPO_ID = 'cdb1fdd8-7eff-4501-8faa-71e20237b2ea';\nexport const MASTER_REPO_ID = 'aff15d65-e10f-492d-b8ea-cfd454c93c3f';\n\nexport const INHERIT_REPOSITORY_ID = apiPrefix ? DEV_TEST_REPO_ID : MASTER_REPO_ID;\n\nexport function* onSaveRepo(action: PayloadAction) {\n const repoName = action.payload.name;\n const repoId = action.payload.id;\n const tenant = (yield select(getCurrentTenant)) as Tenant;\n try {\n if (repoId) {\n const currentRepo = (yield call(updateRepo, repoName, tenant, repoId));\n yield put(slice.actions.saveSuccess(currentRepo));\n } else {\n const currentRepo = (yield call(saveRepo, { name: repoName, inheritedRepositories: action.payload.inheritedRepositories, tenant: { id: tenant.tenantId, type: tenant.tenantType } }));\n yield put(slice.actions.saveSuccess(currentRepo));\n yield put(push(`/repository/${currentRepo.id}`));\n }\n } catch {\n logError('Failed to create repository!');\n yield put(slice.actions.saveFailed());\n }\n}\n\nexport function* onInheritRepo() {\n const repoId = (yield select(getCurrentRepoId)) as string;\n const tenant = (yield select(getCurrentTenant)) as Tenant;\n const inheritedRepositories = [INHERIT_REPOSITORY_ID];\n\n try {\n const currentRepo = yield call(inheritRepos, tenant, repoId, inheritedRepositories);\n yield put(slice.actions.inheritSuccess(currentRepo));\n } catch {\n logError('Failed to inherit master repository!');\n yield put(slice.actions.inheritFailed());\n }\n}\n\nexport function* onLoadRepo(action: PayloadAction) {\n try {\n const currentRepo = (yield call(fetchRepo, action.payload));\n yield put(slice.actions.loadSuccess(currentRepo));\n } catch {\n logError('Failed to load repository!');\n yield put(slice.actions.loadFailed());\n }\n}\n\nexport function* onFetchRepoList() {\n const { tenantId, tenantType } = (yield select(getCurrentTenant)) as Tenant;\n try {\n const repoList = (yield call(fetchAllRepositories, { tenantId, tenantType }));\n yield put(slice.actions.fetchSuccess(repoList));\n } catch {\n logError('Failed to fetch repositories!');\n yield put(slice.actions.fetchFailed());\n }\n}\n\nexport default function* repositorySaga() {\n return yield all([\n yield takeEvery(slice.actions.onSaveRepoName, onSaveRepo),\n yield takeEvery(slice.actions.onInheritRepo, onInheritRepo),\n yield takeEvery(slice.actions.startLoadingRepo, onLoadRepo),\n yield takeEvery(slice.actions.startFetchingRepoList, onFetchRepoList),\n ]);\n}\n","import React, { useState, ChangeEvent } from 'react';\nimport { connect } from 'react-redux';\nimport { Button, Modal, TextField, Snackbar, Checkbox } from '@cimpress/react-components';\n\nimport './repository.scss';\n\nimport { RootState } from '../../state/rootReducer';\nimport slice, { RepoPayload } from './slice';\nimport { INHERIT_REPOSITORY_ID } from './saga';\n\ninterface Props {\n isOpen: boolean;\n isSaveSuccess: boolean;\n isError: boolean;\n resetSuccess(): void;\n resetError(): void;\n resetIsOpen(): void;\n onSaveRepoName(payload: RepoPayload): void;\n}\n\nexport function Create({ isOpen, isSaveSuccess, isError, resetIsOpen, resetSuccess, resetError, onSaveRepoName }: Props) {\n const [repositoryName, setRepositoryName] = useState('');\n const [inheritFromMaster, setInheritFromMaster] = useState(false);\n const [errorText, setErrorText] = useState('');\n\n const setName = (e: ChangeEvent) => {\n setErrorText('');\n setRepositoryName(e.currentTarget.value);\n };\n\n const onModalClose = () => {\n setRepositoryName('');\n setErrorText('');\n setInheritFromMaster(false);\n resetIsOpen();\n };\n\n const onClickSave = () => {\n if (!repositoryName) {\n setErrorText('This is a required field.');\n return;\n }\n onSaveRepoName({ name: repositoryName, inheritedRepositories: inheritFromMaster ? [INHERIT_REPOSITORY_ID] : undefined });\n resetIsOpen();\n setRepositoryName('');\n setErrorText('');\n setInheritFromMaster(false);\n };\n\n const generateMessage = (): string => {\n if (isError) {\n return 'Failed to save repository.';\n }\n return 'Repository saved successfully!';\n };\n\n const toggleInheritCheckbox = () => setInheritFromMaster(!inheritFromMaster);\n return (\n <>\n \n {generateMessage()}\n \n \n \n \n \n )}\n >\n
Create a repository to house all your fonts. A Font Repository key is required for using Fonts on Designer.
\n \n \n\n \n \n );\n}\n\nexport default connect(\n (state: RootState) => ({\n isSaveSuccess: state.repository.isSaveSuccess,\n isError: state.repository.isError,\n }),\n {\n onSaveRepoName: slice.actions.onSaveRepoName,\n resetSuccess: slice.actions.resetSuccess,\n resetError: slice.actions.resetError,\n },\n)(Create);\n","import React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Link, Redirect } from 'react-router-dom';\nimport { Button, Icon, colors, Dropdown, Card } from '@cimpress/react-components';\nimport Create from './Create';\nimport slice from './slice';\nimport { RootState } from '../../state/rootReducer';\nimport './repository.scss';\nimport { Tenant } from '../../components/tenant';\nimport { FontRepo } from '../../clients/fontClient';\n\ninterface Props {\n id: string;\n currentFontRepo: FontRepo;\n repoList: FontRepo[];\n isRepoLoading: boolean;\n currentTenant: Tenant | undefined;\n startLoadingRepo(payload: string): void;\n startFetchingRepoList(): void;\n onLoadRepo(): void;\n isRepoFetchCompleted: boolean;\n limited?: boolean;\n}\n\nconst { ocean } = colors;\n\nexport function Repository({ id,\n currentFontRepo,\n repoList,\n startLoadingRepo,\n startFetchingRepoList,\n isRepoLoading,\n currentTenant,\n isRepoFetchCompleted,\n limited,\n onLoadRepo }: Props) {\n const [isOpen, setIsOpen] = useState(false);\n\n const onClickCreate = () => setIsOpen(true);\n\n const generateRepoLink = (repository: FontRepo) => (\n \n {repository.name}\n \n );\n\n const resetIsOpen = () => setIsOpen(false);\n\n const renderCreateRepoBtn = (primary?: boolean) => (\n \n );\n\n useEffect(() => {\n id && startLoadingRepo(id);\n }, [startLoadingRepo, id]);\n\n useEffect(() => {\n startFetchingRepoList();\n }, [startFetchingRepoList, currentFontRepo, currentTenant]);\n\n useEffect(() => {\n if (!isRepoLoading) {\n onLoadRepo();\n }\n }, [isRepoLoading, onLoadRepo]);\n\n if (!id\n && repoList\n && repoList.length\n && currentTenant\n && repoList[0]\n && repoList[0].tenant\n && (currentTenant.tenantId === repoList[0].tenant.id)) {\n return ;\n }\n\n return (\n <>\n {repoList && !!repoList.length ? (\n
\n {limited ? (\n \n {currentFontRepo.name}\n \n \n ) : (\n <>\n \n {repoList.map(repo => (generateRepoLink(repo)))}\n \n {renderCreateRepoBtn()}\n \n )}\n\n
\n ) : (\n
\n \n
Create a font repository and start adding fonts to it.
\n
{renderCreateRepoBtn(true)}
\n
\n
\n )}\n \n \n );\n}\n\nexport default connect(\n (state: RootState) => ({\n currentFontRepo: state.repository.currentFontRepo,\n repoList: state.repository.repoList,\n isRepoLoading: state.repository.isLoading,\n isRepoFetchCompleted: state.repository.isRepoFetchCompleted,\n currentTenant: state.tenantInfo.tenant,\n }),\n {\n startLoadingRepo: slice.actions.startLoadingRepo,\n startFetchingRepoList: slice.actions.startFetchingRepoList,\n },\n)(Repository);\n","import React, { useState, useEffect, ChangeEvent } from 'react';\nimport { Button, TextField, Icon, colors, Tooltip, Modal, Snackbar } from '@cimpress/react-components';\nimport { connect } from 'react-redux';\nimport copyToClipboard from 'clipboard-copy';\nimport slice, { RepoPayload } from './slice';\nimport { RootState } from '../../state/rootReducer';\nimport { Alert } from '../catalog/addFontPopup/AddFontPopup';\nimport { INHERIT_REPOSITORY_ID } from './saga';\nimport { FontRepo } from '../../clients/fontClient';\n\nconst { ocean } = colors;\n\nexport const defaultAlert: Alert = {\n isShown: false,\n message: '',\n style: undefined,\n autoHide: false,\n};\n\ninterface Props {\n currentFontRepo: FontRepo;\n showSnackbar: boolean;\n inheritSuccess: boolean | undefined;\n onSaveRepoName (payload: RepoPayload): void;\n onInheritRepo(): void;\n hideSnackbar(): void;\n}\n\nexport function RepositoryActions({ currentFontRepo, showSnackbar, inheritSuccess, onSaveRepoName, onInheritRepo, hideSnackbar }: Props) {\n const [isEditing, setIsEditing] = useState(false);\n const [repoName, setRepoName] = useState();\n const [showInheritModal, setShowInheritModal] = useState(false);\n const [alert, setAlert] = useState(defaultAlert);\n const [errorText, setErrorText] = useState('');\n\n useEffect(() => {\n setRepoName(currentFontRepo.name);\n }, [currentFontRepo]);\n\n useEffect(() => {\n if (showSnackbar) {\n if (inheritSuccess) {\n setAlert({ isShown: true, message: 'Fonts successfully copied from master repository.', style: 'success', autoHide: true });\n } else {\n setAlert({ isShown: true, message: 'Copying fonts from master repository failed. Please try again.', style: 'danger', autoHide: false });\n }\n }\n }, [inheritSuccess, showSnackbar]);\n\n const onChangeRepoName = (e: ChangeEvent) => {\n setErrorText('');\n setRepoName(e.currentTarget.value);\n };\n\n const onClickEdit = () => setIsEditing(true);\n const onClickSave = () => {\n if (!repoName) {\n setErrorText('This is a required field.');\n return;\n }\n setIsEditing(false);\n onSaveRepoName({ name: repoName, id: currentFontRepo.id });\n };\n const onClickCancel = () => {\n setRepoName(currentFontRepo.name);\n setErrorText('');\n setIsEditing(false);\n };\n\n const onClickCopy = () => {\n copyToClipboard(currentFontRepo.id);\n setAlert({ isShown: true, message: `Repository id copied to clipboard : ${currentFontRepo.id}`, style: 'success', autoHide: true });\n };\n\n const onAcceptInherit = () => {\n onInheritRepo();\n setShowInheritModal(false);\n };\n const onBtnClickInherit = () => setShowInheritModal(true);\n const onInheritModalClose = () => setShowInheritModal(false);\n const onHideSnackbar = () => {\n setAlert(defaultAlert);\n hideSnackbar();\n };\n const isInheritedFromMaster = () => !!(currentFontRepo.inheritedRepositories && currentFontRepo.inheritedRepositories.includes(INHERIT_REPOSITORY_ID));\n const inheritModalFooter = (\n
\n \n \n
\n );\n\n return (\n
\n \n {alert.message}\n \n {!isEditing && (\n \n
\n {repoName}\n
\n
\n )\n }\n {isEditing && (\n \n )\n }\n {!isEditing && (\n \n \n \n )}\n {isEditing && (\n <>\n \n \n \n \n \n \n \n )}\n \n \n \n {!isInheritedFromMaster() && (\n \n \n \n )}\n {showInheritModal && (\n \n If there are fonts in this repository that also exist in the Master repository, your fonts would be overridden by fonts from Master repository, would you like to continue?\n \n )}\n
\n );\n}\n\nexport default connect(\n (state: RootState) => ({\n showSnackbar: state.repository.showSnackbar,\n inheritSuccess: state.repository.inheritSuccess,\n }),\n {\n onSaveRepoName: slice.actions.onSaveRepoName,\n onInheritRepo: slice.actions.onInheritRepo,\n hideSnackbar: slice.actions.hideSnackbar,\n },\n)(RepositoryActions);\n","import { createSlice, PayloadAction } from 'redux-starter-kit';\n\nimport { GroupedFont } from './saga';\n\nexport interface Catalog {\n groupedFonts: GroupedFont[];\n isLoading: boolean;\n loaded: boolean;\n loadSuccess: boolean;\n isPublishing: boolean;\n publishSuccess: boolean;\n showSnackbar: boolean;\n isDeleting: boolean;\n deleteSuccess: boolean;\n}\n\nexport const INITIAL_STATE: Catalog = {\n groupedFonts: [],\n isLoading: false,\n loaded: false,\n loadSuccess: false,\n isPublishing: false,\n publishSuccess: false,\n showSnackbar: false,\n isDeleting: false,\n deleteSuccess: false,\n};\n\nconst slice = createSlice({\n slice: 'font',\n initialState: INITIAL_STATE,\n reducers: {\n onLoadFonts: () => INITIAL_STATE,\n onQueryFonts: (state) => { state.isLoading = true; state.loaded = false; },\n fontsLoadSuccess: (state, { payload }: PayloadAction) => { state.loadSuccess = true; state.isLoading = false; state.groupedFonts = payload; state.loaded = true; },\n fontsLoadFailed: (state) => { state.isLoading = false; state.showSnackbar = true; state.loadSuccess = false; state.loaded = true; },\n hideSnackbar: (state) => { state.showSnackbar = false; state.loadSuccess = false; state.publishSuccess = false; },\n onPublishFont: (state, { payload }: PayloadAction) => { state.isPublishing = true; },\n fontPublishSuccess: (state) => { state.publishSuccess = true; state.isPublishing = false; },\n fontPublishFailed: (state) => { state.publishSuccess = false; state.isPublishing = false; },\n onDeleteFont: (state, { payload }: PayloadAction) => { state.isDeleting = true; },\n fontDeleteSuccess: (state) => { state.deleteSuccess = true; state.isDeleting = false; },\n fontDeleteFailed: (state) => { state.deleteSuccess = false; state.isDeleting = false; },\n resetDeleteSuccess: (state) => { state.deleteSuccess = false; },\n },\n});\n\nexport const { reducer } = slice;\n\nexport default slice;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\n\ninterface Props {\n repoId: string;\n fontFamilyName: string;\n repoName: string;\n existingStyles?: string[];\n style?: string;\n}\n\nexport function DetailsSection({ repoId, fontFamilyName, repoName, existingStyles, style }: Props) {\n return (\n
\n
\n {fontFamilyName}\n
\n {\n style && (\n
\n {style}\n
\n )\n }\n
\n {repoName}\n
\n {existingStyles && (\n
\n {existingStyles.length} font styles\n
\n )}\n
\n );\n}\n","import React, { useState } from 'react';\nimport Pako from 'pako';\nimport VisibilitySensor from 'react-visibility-sensor';\n\nimport { shapes } from '@cimpress/react-components';\nimport { FONT_BASE_URL, Links } from '../../../clients/fontClient';\nimport { Status } from '../FontCard';\n\ninterface FontPreviewProps {\n content: string;\n size: number;\n fontStyle: string;\n fontFamily: string;\n color?: string;\n canDownloadFontFile: boolean;\n links: Links | undefined;\n repoId: string;\n status: Status;\n}\n\ninterface FontRangeSize {\n minSize: number;\n maxSize: number;\n height: number;\n}\n\ninterface FontPreviewStyle {\n height: string;\n fontFamily?: string;\n fontSize?: string;\n background?: string;\n}\n\nconst { Spinner } = shapes;\n\n// Data list, first item is fontSize and 2nd is height\nconst maxSizeToHeightLevelsArr = [\n [20, 30],\n [25, 50],\n [36, 80],\n [100, 100],\n [200, 120],\n [400, 240],\n];\n\n// Initializing size and height ranges\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst fontSizeToHeightRange = ((maxSizeToHeightLevels) => {\n const SIZE = 0; const\n HEIGHT = 1;\n\n return maxSizeToHeightLevels.map((sizeHeight: number[], i: number) => {\n // from 2nd range onwards, minSize of the range is taken from\n // the maxSize of the previous range\n const prevRangeIndex = i - 1;\n return {\n minSize: i === 0 ? 0 : (maxSizeToHeightLevels[prevRangeIndex][SIZE]) + 1,\n maxSize: sizeHeight[SIZE],\n height: sizeHeight[HEIGHT],\n };\n });\n})(maxSizeToHeightLevelsArr);\n\n// This function will give the image height for a particular size\nconst getSizeRange = (size: number, rangeSizes: FontRangeSize[]) => {\n const range = rangeSizes.find((rangeSize, i) => size <= rangeSize.maxSize && size > rangeSize.minSize);\n return range ? range.height : undefined;\n};\n\nconst getPreviewImageHeight = (size: number) => {\n const height = 150;\n return getSizeRange(size, fontSizeToHeightRange) || height;\n};\n\nconst cimDocFontStyleMap = new Map([\n ['Normal', 'Normal'],\n ['Bold', 'Bold'],\n ['Italic', 'Italic'],\n ['BoldItalic', 'Bold, Italic'],\n]);\n\nfunction getTransientUdsDocument({ content, size, fontFamily, fontStyle, color, repoId, status }: FontPreviewProps) {\n const width = 100;\n const height = getPreviewImageHeight(size);\n const fontSize = `${size}pt`;\n\n const heightInMM = `${height}mm`;\n const widthInMM = `${width}mm`;\n const txtAreaWidthInMM = `${width - 8}mm`;\n\n const docContent = {\n version: 2,\n document: {\n surfaces: [\n {\n name: 'front',\n width: widthInMM,\n height: heightInMM,\n textAreas: [\n {\n position: {\n x: '8mm',\n y: '0mm',\n width: txtAreaWidthInMM,\n height: heightInMM,\n },\n horizontalAlignment: 'left',\n verticalAlignment: 'top',\n blockFlowDirection: 'horizontal-tb',\n textFields: [\n {\n fontSize,\n fontStyle: cimDocFontStyleMap.get(fontStyle),\n fontFamily,\n content,\n color: color || 'rgb(0,0,0)',\n },\n ],\n },\n ],\n },\n ],\n },\n fontRepositoryUrl: `${FONT_BASE_URL}/${repoId}/draft`,\n };\n\n const deflatedContent = Pako.deflateRaw(JSON.stringify(docContent), { to: 'string' });\n const encodedContent = encodeURIComponent(btoa(deflatedContent));\n return `https://uds.documents.cimpress.io/v2/transient/deflate?document=${encodedContent}&type=preview`;\n}\n\nfunction getFontPreview(fontProps: FontPreviewProps) {\n const width = 340;\n return `http://rendering.documents.cimpress.io/v1/cse/preview?format=png&width=${width}&instructions_uri=${encodeURIComponent(getTransientUdsDocument(fontProps))}`;\n}\n\nconst getRenderingAssetId = (links?: Links) => {\n if (links) {\n if (links.draft && links.draft['*']) {\n return links.draft['*'].renderingAssetId;\n }\n if (links.published && links.published['*']) {\n return links.published['*'].renderingAssetId;\n }\n }\n\n return '';\n};\n\nconst createPreviewStyle = (props: FontPreviewProps, fontURL: string, isVisible: boolean) => {\n const style: FontPreviewStyle = {\n height: `${getPreviewImageHeight(props.size)}mm`,\n };\n\n if (Status.NoAsset !== props.status && props.canDownloadFontFile && isVisible) {\n style.fontFamily = `'${props.fontFamily}-${getRenderingAssetId(props.links)}'`;\n style.fontSize = `${props.size}pt`;\n } else {\n style.background = `url(${fontURL}) no-repeat center ${Status.NoAsset === props.status ? '/ 100px' : ''}`;\n }\n\n return style;\n};\n\nconst renderPreview = (props: FontPreviewProps, fontURL: string, isVisible: boolean) => (\n
\n {Status.NoAsset !== props.status && props.canDownloadFontFile ? props.content : ''}\n
\n);\n\nconst getFontFile = (repositoryId: string, links?: Links) => `${FONT_BASE_URL}/${repositoryId}/assets/${getRenderingAssetId(links)}`;\n\n// Using data URL for default image: 1px transparent binary gif\nconst dummyDataImage = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\nconst deleteIconURL = 'https://static.ux.cimpress.io/assets/icons/bin-1-l.svg';\n\nexport function PreviewSection(fontPreviewProps: FontPreviewProps) {\n const [imgURL, setImgURL] = useState(dummyDataImage);\n const fontImageURL = fontPreviewProps.canDownloadFontFile ? '' : getFontPreview(fontPreviewProps);\n const [isLoading, setIsLoading] = useState(!fontPreviewProps.canDownloadFontFile);\n\n return (\n
\n {isLoading && }\n hidden setIsLoading(false)} />\n {fontPreviewProps.canDownloadFontFile\n && (\n // eslint-disable-next-line react/no-danger\n