require('./sharePage.less'); const React = require('react'); const { useState, useEffect, useCallback } = React; const { Meta } = require('vitreum/headtags'); const Nav = require('naturalcrit/nav/nav.jsx'); const Navbar = require('../../navbar/navbar.jsx'); const MetadataNav = require('../../navbar/metadata.navitem.jsx'); const PrintNavItem = require('../../navbar/print.navitem.jsx'); const RecentNavItem = require('../../navbar/recent.navitem.jsx').both; const Account = require('../../navbar/account.navitem.jsx'); const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx'); const { DEFAULT_BREW_LOAD } = require('../../../../server/brewDefaults.js'); const { printCurrentBrew, fetchThemeBundle } = require('../../../../shared/helpers.js'); const SharePage = (props)=>{ const { brew = DEFAULT_BREW_LOAD, disableMeta = false } = props; const [state, setState] = useState({ themeBundle : {}, currentBrewRendererPageNum : 1, }); const handleBrewRendererPageChange = useCallback((pageNumber)=>{ setState((prevState)=>({ currentBrewRendererPageNum : pageNumber, ...prevState })); }, []); const handleControlKeys = (e)=>{ if(!(e.ctrlKey || e.metaKey)) return; const P_KEY = 80; if(e.keyCode === P_KEY) { printCurrentBrew(); e.stopPropagation(); e.preventDefault(); } }; useEffect(()=>{ document.addEventListener('keydown', handleControlKeys); fetchThemeBundle( { setState }, brew.renderer, brew.theme ); return ()=>{ document.removeEventListener('keydown', handleControlKeys); }; }, []); const processShareId = ()=>{ return brew.googleId && !brew.stubbed ? brew.googleId + brew.shareId : brew.shareId; }; const renderEditLink = ()=>{ if(!brew.editId) return null; const editLink = brew.googleId && ! brew.stubbed ? brew.googleId + brew.editId : brew.editId; return ( edit ); }; const titleEl = ( {brew.title} ); return (
{disableMeta ? titleEl : {titleEl}} {brew.shareId && ( <> source view {renderEditLink()} download clone to new )}
); }; module.exports = SharePage;