From 32b5bebbc46e88b4e7e6b1e94032c11201e5b7b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Fri, 9 Feb 2024 00:18:39 +0100 Subject: [PATCH] full functionality --- client/homebrew/navbar/newbrew.navitem.jsx | 100 +++++++++++++++++++-- 1 file changed, 93 insertions(+), 7 deletions(-) diff --git a/client/homebrew/navbar/newbrew.navitem.jsx b/client/homebrew/navbar/newbrew.navitem.jsx index cc833013d..94aa9fb85 100644 --- a/client/homebrew/navbar/newbrew.navitem.jsx +++ b/client/homebrew/navbar/newbrew.navitem.jsx @@ -1,12 +1,98 @@ const React = require('react'); +const _ = require('lodash'); const Nav = require('naturalcrit/nav/nav.jsx'); +const yaml = require('js-yaml'); +const { useRef } = React; + +const BREWKEY = 'homebrewery-new'; +const STYLEKEY = 'homebrewery-new-style'; +const METAKEY = 'homebrewery-new-meta'; + +const splitTextStyleAndMetadata = (brew)=>{ + brew.text = brew.text.replaceAll('\r\n', '\n'); + if(brew.text.startsWith('```metadata')) { + const index = brew.text.indexOf('```\n\n'); + const metadataSection = brew.text.slice(12, index - 1); + const metadata = yaml.load(metadataSection); + Object.assign(brew, _.pick(metadata, ['title', 'description', 'tags', 'systems', 'renderer', 'theme', 'lang'])); + brew.text = brew.text.slice(index + 5); + } + if(brew.text.startsWith('```css')) { + const index = brew.text.indexOf('```\n\n'); + brew.style = brew.text.slice(7, index - 1); + brew.text = brew.text.slice(index + 5); + } +}; + + +const handleFileChange = (e) => { + const file = e.target.files[0]; + if (file) { + const reader = new FileReader(); + reader.onload = (e) => { + const fileContent = e.target.result; + + const brew = { + text :fileContent, + style : '' + } + splitTextStyleAndMetadata(brew); + console.log(brew); + localStorage.setItem(BREWKEY, brew.text); + localStorage.setItem(STYLEKEY, brew.style); + localStorage.setItem(METAKEY, JSON.stringify({ + 'title': brew.title, + 'description': brew.description, + 'tags': brew.tags, + 'systems': brew.systems, + 'renderer': brew.renderer, + 'theme': brew.theme, + 'lang': brew.lang + })); + + //window.location.href = '/new'; + }; + reader.readAsText(file); + } +}; + module.exports = function(props){ - return - new - ; + const inputRef = useRef(null); + + return + + new + + + new + + + { inputRef.current.click(); }}> + + New From Local File + + + ; + }; + +/* + + new cloned + +*/ \ No newline at end of file