{"version":3,"sources":["components/NavMenu.js","components/Layout.js","components/Home.js","components/Instructions.js","App.js","registerServiceWorker.js","index.js"],"names":["NavMenu","props","toggleNavbar","bind","state","collapsed","this","setState","Navbar","className","light","Container","NavbarBrand","tag","Link","to","NavbarToggler","onClick","Collapse","isOpen","navbar","NavItem","NavLink","Component","displayName","name","Layout","children","Home","handleCardShortSideInInchesChange","event","cardShortSideInInches","target","value","handleCardLongSideInInchesChange","cardLongSideInInches","handleBleedSizeInInchesChange","bleedSizeInInches","handleBorderPaddingInInchesChange","borderPaddingInInches","handleShowSiteBackTextBackground","showSiteBackTextBackground","handleSaveConfigurationChange","saveConfiguration","handleCardTypesToIncludeChange","cardTypesToInclude","Array","from","selectedOptions","map","option","handleGenerateClick","a","generating","error","downloadLink","body","JSON","stringify","fetch","method","headers","response","ok","text","statusText","htmlFor","id","type","onChange","disabled","multiple","size","href","Instructions","App","exact","path","component","isLocalhost","Boolean","window","location","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","console","log","catch","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","URL","process","origin","addEventListener","status","get","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.1fb25c21.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\nimport { Link } from 'react-router-dom';\nimport './NavMenu.css';\n\nexport class NavMenu extends Component {\n static displayName = NavMenu.name;\n\n constructor (props) {\n super(props);\n\n this.toggleNavbar = this.toggleNavbar.bind(this);\n this.state = {\n collapsed: true\n };\n }\n\n toggleNavbar () {\n this.setState({\n collapsed: !this.state.collapsed\n });\n }\n\n render () {\n return (\n
\n \n \n Glory to Rome Image Generator\n \n \n
    \n \n Home\n \n \n Instructions\n \n
\n
\n
\n
\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport { Container } from 'reactstrap';\nimport { NavMenu } from './NavMenu';\n\nexport class Layout extends Component {\n static displayName = Layout.name;\n\n render () {\n return (\n
\n \n \n {this.props.children}\n \n
\n );\n }\n}\n","import React, { Component } from 'react';\n\nexport class Home extends Component {\n static displayName = Home.name;\n\n constructor(props) {\n super(props);\n this.state = {\n cardShortSideInInches: 2.5,\n cardLongSideInInches: 3.5,\n bleedSizeInInches: 0.125,\n borderPaddingInInches: .0625,\n saveConfiguration: 'Page',\n showSiteBackTextBackground: false,\n cardTypesToInclude: ['StandardOrderCard', 'RepublicOrderCard', 'ImperiumOrderCard', 'SiteCard', 'MiscCard'],\n generating: false,\n error: null,\n downloadLink: null\n };\n }\n\n handleCardShortSideInInchesChange = (event) => {\n this.setState({ cardShortSideInInches: +event.target.value });\n }\n handleCardLongSideInInchesChange = (event) => {\n this.setState({ cardLongSideInInches: +event.target.value });\n }\n handleBleedSizeInInchesChange = (event) => {\n this.setState({ bleedSizeInInches: +event.target.value });\n }\n handleBorderPaddingInInchesChange = (event) => {\n this.setState({ borderPaddingInInches: +event.target.value });\n }\n handleShowSiteBackTextBackground = () => {\n const { showSiteBackTextBackground } = this.state;\n this.setState({ showSiteBackTextBackground: !showSiteBackTextBackground });\n }\n handleSaveConfigurationChange = (event) => {\n this.setState({ saveConfiguration: event.target.value });\n }\n handleCardTypesToIncludeChange = (event) => {\n const cardTypesToInclude = Array.from(event.target.selectedOptions).map(option => option.value);\n this.setState({ cardTypesToInclude });\n }\n\n handleGenerateClick = async () => {\n var {\n cardShortSideInInches,\n cardLongSideInInches,\n bleedSizeInInches,\n borderPaddingInInches,\n saveConfiguration,\n cardTypesToInclude,\n showSiteBackTextBackground\n } = this.state;\n this.setState({ generating: true, error: null, downloadLink: null });\n const body = JSON.stringify({\n cardShortSideInInches,\n cardLongSideInInches,\n bleedSizeInInches,\n borderPaddingInInches,\n saveConfiguration,\n cardTypesToInclude,\n showSiteBackTextBackground\n });\n try {\n var response = await fetch('Gtr/GenerateImages', {\n method: 'POST',\n body,\n headers: { 'Content-Type': 'application/json', },\n });\n if (response.ok) {\n var downloadLink = await response.text();\n this.setState({ generating: false, downloadLink });\n }\n else\n this.setState({ generating: false, error: response.statusText });\n\n } catch (error) {\n this.setState({ generating: false, error });\n }\n }\n\n render() {\n var {\n cardShortSideInInches,\n cardLongSideInInches,\n bleedSizeInInches,\n borderPaddingInInches,\n saveConfiguration,\n cardTypesToInclude,\n showSiteBackTextBackground,\n generating,\n error,\n downloadLink\n } = this.state;\n return (\n
\n
\n
\n Image Generation\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n {!generating && }\n {generating && }\n
\n
\n {downloadLink != null &&

Download generated file (Link valid for 1 day)

}\n {error != null &&

Error generating file or uploading to S3.

}\n
\n
\n );\n }\n}\n","import React, { Component } from 'react';\n\nexport class Instructions extends Component {\n static displayName = Instructions.name;\n\n render() {\n return (\n <>\n
\n
\n Glory to Rome Printing Guide\n
\n
\n
This guide will attempt to walk through the steps needed to generate files for Glory to Rome.
\n
\n
\n
\n
\n Step 1: Printing Site\n
\n
\n
\n Decide what site you want to print from and what card size you want. This will inform your decisions later for configuration.\n
    \n
  • For example, if you want standard size cards (Poker card sized, used for MTG and tons of other games) you will want the images to be 2.5\" by 3.5\".
  • \n
  • For the printer, PrintPlayGames (https://www.printplaygames.com/) takes the cards in sheets of 18 cards, where other sites like Gamecrafter take them as individual cards.
  • \n
\n
\n
\n
\n
\n
\n Step 2: Create Images\n
\n
\n
\n On the main page of this site, input your values and generate the images. You can change:\n
    \n
  • Card short side, in inches - This is the smaller dimension of the cards in inches. Default value: 2.5
  • \n
  • Card long side, in inches - This is larger dimension of the cards, in inches. Default value: 3.5
  • \n
  • Bleed size, in inches - This is the amount of bleed to include outside the bounds of the card image. Default value: .125
  • \n
  • Border padding, in inches (default is 1/16th of an inch) - This is the extra padding -inside the valid printing area- to leave blank. Default value: .0625
  • \n
  • Show Site Back Text Background Rectangle - check this if you want to include a white background behind the 'out of town site' text. Default value: false (unchecked)
  • \n
  • Cards To Include - You can choose which cards you need. Default value: Everything but promo cards.
  • \n
  • Card Configuration - This is the output type, can be 'Pages of Cards' or 'One Image Per Card'. Default value: 'Pages of Cards'
  • \n
\n
\n
\n
\n
\n
\n Step 3: Upload Images\n
\n
\n
\n Upload the images to the site of your choice, pay them, and wait for GtR to arrive on your doorstep!\n
    \n
  • \n The various printers will usually require you to give them a front image and a back image for each card to be printed.\n
      \n
    • \n If you're doing sheets, you will need\n
        \n
      • 3 copies of each order card sheet, with the order card back for each (9 sheets total).
      • \n
      • 2 copies of the site cards sheet, with the site cards back for both (2 sheets total).
      • \n
      • 1 copy of the misc sheet, with the misc sheet back (has the leader card (double sided), the jacks (one side sword, other side quill) and the merchant bonus cards (double sided).
      • \n
      \n
    • \n
    • \n If you're doing individual cards, you will need\n
        \n
      • \n 3 copies of each order card, with the order card back for each.\n
        • Note that you will need 6 copies of each Wood/Craftsman/Green card and each Rubble/Laborer/Yellow card, which is why the app makes two of each of those.
        \n
      • \n
      • 36 total sites, 6 of each material, with the site back.
      • \n
      • 1 double-sided Leader
      • \n
      • 6 Jacks, with sword on one side and quill on the other
      • \n
      • 6 total double-sided Merchant bonuses, 1 of each material
      • \n
      \n
    • \n
    \n
  • \n
  • \n You will also need to pick a material and/or finish for your cards.\n
      \n
    • There's no right or wrong answer here.
    • \n
    • I went for PrintPlayGames's cheapest option, since we sleeve everything anyway (even the Trash card in Dominion!).
    • \n
    • You can spend more for a nicer finish and/or plastic cards if you like.
    • \n
    \n
  • \n
\n
\n
\n
\n
\n
\n Step 4: Player Boards\n
\n
\n
\n You will need to figure out an option for the player boards.\n
    \n
  • \n For my copy, all I did was print the ones available on BGG: Link (Full credit to Arachnode from BGG for that file)\n
      \n
    • I got them printed at FedEx for about $5 onto 100lb glossy cardstock.
    • \n
    • This only gives 1-sided boards. Personally I felt that the other side (with the card flow) was really dense and unhelpful. If you want it you'll need to find it yourself.
    • \n
    \n
  • \n
\n
\n
\n
\n
\n
\n Step 5: Other Components\n
\n
\n
\n You will need to figure out what you want to do for the other components.\n
    \n
  • Box: You can put a lot of effort into a great box. I didn't and just used a box from Stonemaier Realistic Resources I had lying around.
  • \n
  • Rome Demands mat: This seemed even more useless to me than the reverse side of the player boards, so I ignored it.
  • \n
  • Rules: They're available online: Link. I didn't bother printing them, but you can probably just do regular paper or something fancy if you feel up to it.
  • \n
  • Small Player Mat cards: These seemed like the least useful component in the box, so I skipped them entirely.
  • \n
\n
\n
\n
\n
\n
\n Step 6: Play!\n
\n
\n
\n Good luck and Glory to Rome!\n
\n
\n
\n
\n
\n Acknowledgements\n
\n
\n
\n \"If I have seen further it is by standing on the shoulders of Giants.\"\n
My thanks to:
\n
  • Carl Chudyk for the amazing game
  • \n
  • Arachnode on BGG for doing a ton of work on his copy, his images were invaluable for this production
  • \n
  • My wife for letting me spend hours just tinkering with a card generator for no reason (and for beating me with a Catacomb-ending on her first play).
  • \n --Storm\n
    \n
    \n
    \n
    \n
    \n Future\n
    \n
    \n
    \n Some future updates (that might or might not happen)\n
  • Page size configurable (images per page / size of page)
  • \n
  • \n Allow only printing individual cards. So far, the following cards have been fixed since inception:\n
      \n
    • Domus Aurea>
    • \n
    • Palace
    • \n
    \n
  • \n
    \n
    \n
    \n \n );\n }\n}\n","import React, { Component } from 'react';\nimport { Route } from 'react-router';\nimport { Layout } from './components/Layout';\nimport { Home } from './components/Home';\nimport { Instructions } from './components/Instructions';\n\nimport './custom.css'\n\nexport default class App extends Component {\n static displayName = App.name;\n\n render () {\n return (\n \n \n \n \n );\n }\n}\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register () {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW (swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker (swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import 'bootstrap/dist/css/bootstrap.css';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport App from './App';\nimport registerServiceWorker from './registerServiceWorker';\n\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\nconst rootElement = document.getElementById('root');\n\nReactDOM.render(\n \n \n ,\n rootElement);\n\nregisterServiceWorker();\n\n"],"sourceRoot":""}