@yamlresume/playground 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +172 -0
- package/dist/index.d.ts +693 -0
- package/dist/index.js +289 -0
- package/dist/index.js.map +1 -0
- package/package.json +71 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import he from '@monaco-editor/react';
|
|
2
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
3
|
+
import { IconArrowBackUp, IconArrowForwardUp, IconEraser, IconPrinter, IconExternalLink, IconDownload, IconCheck, IconCopy, IconFileCode, IconEdit, IconEye, IconFileText, IconTex, IconMarkdown, IconHtml } from '@tabler/icons-react';
|
|
4
|
+
import { useRef, useCallback, useState, useEffect, useMemo } from 'react';
|
|
5
|
+
import le from 'clsx';
|
|
6
|
+
import { getResumeRenderer } from '@yamlresume/core';
|
|
7
|
+
import { parse } from 'yaml';
|
|
8
|
+
import { Group, Panel, Separator } from 'react-resizable-panels';
|
|
9
|
+
|
|
10
|
+
var s={xs:12,sm:16,md:20,lg:24,xl:28},l={xs:1,sm:1.25,md:1.5,lg:1.75,xl:2},y="#1e1e1e",oe=14;function be(e){let o={displayName:"LaTeX",name:"latex",mimeTypes:["text/latex","text/tex"],fileExtensions:["tex","sty","cls"],tokenPostfix:".latex",defaultToken:"",keywords:["addcontentsline","addtocontents","addtocounter","address","addtolength","addvspace","alph","appendix","arabic","author","backslash","baselineskip","baselinestretch","bf","bibitem","bigskipamount","bigskip","boldmath","boldsymbol","cal","caption","cdots","centering","chapter","circle","cite","cleardoublepage","clearpage","cline","closing","color","copyright","dashbox","date","ddots","documentclass","dotfill","em","emph","ensuremath","epigraph","euro","fbox","flushbottom","fnsymbol","footnote","footnotemark","footnotesize","footnotetext","frac","frame","framebox","frenchspacing","hfill","hline","href","hrulefill","hspace","huge","Huge","hyphenation","include","includegraphics","includeonly","indent","input","it","item","kill","label","large","Large","LARGE","LaTeX","LaTeXe","ldots","left","lefteqn","line","linebreak","linethickness","linewidth","listoffigures","listoftables","location","makebox","maketitle","markboth","mathcal","mathop","mbox","medskip","multicolumn","multiput","newcommand","newcolumntype","newcounter","newenvironment","newfont","newlength","newline","newpage","newsavebox","newtheorem","nocite","noindent","nolinebreak","nonfrenchspacing","normalsize","nopagebreak","not","onecolumn","opening","oval","overbrace","overline","pagebreak","pagenumbering","pageref","pagestyle","par","paragraph","parbox","parindent","parskip","part","protect","providecommand","put","raggedbottom","raggedleft","raggedright","raisebox","ref","renewcommand","right","rm","roman","rule","savebox","sbox","sc","scriptsize","section","setcounter","setlength","settowidth","sf","shortstack","signature","sl","slash","small","smallskip","sout","space","sqrt","stackrel","stepcounter","subparagraph","subsection","subsubsection","tableofcontents","telephone","TeX","textbf","textcolor","textit","textmd","textnormal","textrm","textsc","textsf","textsl","texttt","textup","textwidth","textheight","thanks","thispagestyle","tiny","title","today","tt","twocolumn","typeout","typein","uline","underbrace","underline","unitlength","usebox","usecounter","uwave","value","vbox","vcenter","vdots","vector","verb","vfill","vline","vphantom","vspace","RequirePackage","NeedsTeXFormat","usepackage","input","include","documentclass","documentstyle","def","edef","defcommand","if","ifdim","ifnum","ifx","fi","else","begingroup","endgroup","definecolor","textcolor","color","eifstrequal","eeifstrequal"],tokenizer:{root:[[/(\\begin)(\s*)(\{)([\w\-*@]+)(\})/,["keyword.predefined","white","@brackets",{token:"tag.env-$4",bracket:"@open"},"@brackets"]],[/(\\end)(\s*)(\{)([\w\-*@]+)(\})/,["keyword.predefined","white","@brackets",{token:"tag.env-$4",bracket:"@close"},"@brackets"]],[/\\\[a-zA-Z@]/,"keyword"],[/\\\\[^a-zA-Z@]/,"keyword"],[/\\@[a-zA-Z@]+/,"keyword.at"],[/\\([a-zA-Z@]+)/,{cases:{"$1@keywords":"keyword.predefined","@default":"keyword"}}],{include:"@whitespace"},[/[{}()[\]]/,"@brackets"],[/#+\d/,"number.arg"],[/\\-?(?:\d+(?:\.\d+)?|\.\d+)\s*(?:em|ex|pt|pc|sp|cm|mm|in)/,"number.len"]],whitespace:[[/[ \t\r\n]+/,"white"],["%.*$","comment"]]}},t={comments:{lineComment:"%"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"$",close:"$"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"$",close:"$"}]};e.languages.getLanguages().some(r=>r.id==="latex")||(e.languages.register({id:"latex"}),e.languages.setMonarchTokensProvider("latex",o),e.languages.setLanguageConfiguration("latex",t));}function x({value:e,onChange:o,language:t,readOnly:r=false,lineNumbers:a=true,minimap:i=true,onMount:n}){return jsx(he,{height:"100%",language:t,value:e,onChange:o,theme:"vs-dark",onMount:n,beforeMount:be,options:{readOnly:r,domReadOnly:r,lineNumbers:a?"on":"off",minimap:{enabled:i},fontSize:oe,lineNumbersMinChars:4,padding:{top:8},automaticLayout:true,roundedSelection:false,smoothScrolling:true}})}var v=(e="resume.yaml",o=false)=>{let t=e.split(/[/\\]/).pop()||e;return o?t.replace(/\.(ya?ml|json)$/,""):t},T=e=>{switch(e){case "html":return ".html";case "latex":return ".tex";case "markdown":return ".md";default:return ""}},A=(e,o)=>{try{let t=e?.layouts;if(!e||!t[o]){console.warn("No resume or layout found for download");return}let a=getResumeRenderer(e,o).render(),i=t[o],n=T(i.engine),p=`resume.${o}${n}`,c=new Blob([a],{type:"text/plain"}),d=URL.createObjectURL(c),m=document.createElement("a");m.href=d,m.download=p,document.body.appendChild(m),m.click(),document.body.removeChild(m),URL.revokeObjectURL(d);}catch(t){console.error("Failed to download resume:",t);}},M=(e,o)=>{try{let t=e?.layouts;if(!e||!t[o])return console.warn("No resume or layout found for copy"),Promise.resolve();let a=getResumeRenderer(e,o).render();return navigator.clipboard.writeText(a)}catch(t){return console.error("Failed to copy resume:",t),Promise.resolve()}},D=(e,o)=>{try{let t=e?.layouts;if(!e||!t[o]){console.warn("No resume or layout found for print");return}if(t[o].engine!=="html"){console.warn("Printing is only supported for HTML layouts");return}let i=getResumeRenderer(e,o).render(),n=document.createElement("iframe");n.style.position="absolute",n.style.width="0px",n.style.height="0px",n.style.border="none",document.body.appendChild(n);let p=n.contentWindow?.document;p&&(p.open(),p.write(i),p.close(),n.contentWindow?.focus(),n.contentWindow?.print()),setTimeout(()=>{document.body.removeChild(n);},1e3);}catch(t){console.error("Failed to print resume:",t);}},_=(e,o)=>{try{let t=e?.layouts;if(!e||!t[o]){console.warn("No resume or layout found for new tab");return}if(t[o].engine!=="html"){console.warn("Open in new tab is only supported for HTML layouts");return}let i=getResumeRenderer(e,o).render(),n=new Blob([i],{type:"text/html"}),p=URL.createObjectURL(n);window.open(p,"_blank");}catch(t){console.error("Failed to open resume in new tab:",t);}};function ne({filename:e="resume.yaml"}){let o=v(e);return jsxs("div",{className:le("flex items-center gap-2","h-full px-4","border-r border-neutral-600"),style:{backgroundColor:y},children:[jsx(IconFileCode,{size:s.sm,stroke:l.sm}),jsx("span",{children:o})]})}function W({value:e,onChange:o,onMount:t}){return jsx(x,{language:"yaml",value:e,onChange:o,onMount:t})}function z({value:e,onChange:o,filename:t}){let r=useRef(null),a=d=>{r.current=d;},i=useCallback(()=>{r.current?.trigger("source","undo",null);},[]),n=useCallback(()=>{r.current?.trigger("source","redo",null);},[]),p=useCallback(()=>{let d=r.current?.getValue();return d?navigator.clipboard.writeText(d):Promise.resolve()},[]),c=useCallback(()=>{r.current&&window.confirm("Are you sure you want to clear the editor?")&&r.current.setValue("");},[]);return jsxs(P,{children:[jsxs(w,{children:[jsx("div",{className:"flex h-full",children:jsx(ne,{filename:t})}),jsx("div",{className:"flex-1"}),jsxs("div",{className:"flex items-center gap-0.5 pr-2",children:[jsx(R,{onClick:p}),jsx(h,{}),jsx(g,{onClick:i,title:"Undo",children:jsx(IconArrowBackUp,{size:s.sm,stroke:l.sm})}),jsx(g,{onClick:n,title:"Redo",children:jsx(IconArrowForwardUp,{size:s.sm,stroke:l.sm})}),jsx(h,{}),jsx(g,{onClick:c,title:"Clear",children:jsx(IconEraser,{size:s.sm,stroke:l.sm})})]})]}),jsx(C,{children:jsx(W,{value:e,onChange:o,onMount:a})})]})}function U({resume:e,layoutIndex:o}){let[t,r]=useState(""),[a,i]=useState("html"),[n,p]=useState(null);return useEffect(()=>{if(e)try{let c=e.layouts?.[o];if(!c){p(`Layout at index ${o} not found.`);return}if(typeof c.engine!="string"){p("Layout is incomplete - missing engine property.");return}let d=c.engine;i(d);let m=getResumeRenderer(e,o);r(m.render()),p(null);}catch(c){p(`Render Error: ${c instanceof Error?c.message:String(c)}`);}},[e,o]),{renderedContent:t,engine:a,error:n}}var N=`# MIT License
|
|
11
|
+
#
|
|
12
|
+
# Copyright (c) 2023\u2013Present PPResume (https://ppresume.com)
|
|
13
|
+
#
|
|
14
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
15
|
+
# of this software and associated documentation files (the "Software"), to
|
|
16
|
+
# deal in the Software without restriction, including without limitation the
|
|
17
|
+
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
18
|
+
# sell copies of the Software, and to permit persons to whom the Software is
|
|
19
|
+
# furnished to do so, subject to the following conditions:
|
|
20
|
+
#
|
|
21
|
+
# The above copyright notice and this permission notice shall be included in
|
|
22
|
+
# all copies or substantial portions of the Software.
|
|
23
|
+
#
|
|
24
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
25
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
26
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
27
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
28
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
29
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
30
|
+
# IN THE SOFTWARE.
|
|
31
|
+
|
|
32
|
+
# yaml-language-server: $schema=https://yamlresume.dev/schema.json
|
|
33
|
+
#
|
|
34
|
+
# YAMLResume provides a builtin schema to validate resumes and help avoid lots
|
|
35
|
+
# of low level mistakes.
|
|
36
|
+
#
|
|
37
|
+
# You need to install https://github.com/redhat-developer/yaml-language-server
|
|
38
|
+
# in order to get the best editing experience in your choice of editor/IDE.
|
|
39
|
+
#
|
|
40
|
+
# ref:
|
|
41
|
+
# - https://yamlresume.dev/docs/compiler/schema
|
|
42
|
+
# - https://yamlresume.dev/docs/compiler/schema/json
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
content:
|
|
46
|
+
basics:
|
|
47
|
+
name: Andy Dufresne
|
|
48
|
+
headline: Headed for the Pacific
|
|
49
|
+
phone: "(213) 555-9876"
|
|
50
|
+
email: hi@ppresume.com
|
|
51
|
+
url: https://ppresume.com/gallery
|
|
52
|
+
# All summary fields supports a limited rich text capabilities in markdown
|
|
53
|
+
# syntax:
|
|
54
|
+
#
|
|
55
|
+
# - bold, (e.g, **bold**)
|
|
56
|
+
# - italic, (e.g, *italic*)
|
|
57
|
+
# - ordered list, unordored list and nested sub list
|
|
58
|
+
# - links (e.g. [link](https://ppresume.com))
|
|
59
|
+
summary: |
|
|
60
|
+
- Computer Science major with strong foundation in data structures, algorithms, and software development
|
|
61
|
+
- Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites
|
|
62
|
+
- Experiened in databases (SQL, NoSQL), familiar with server-side technologies (Node.js, Express, etc.)
|
|
63
|
+
- Team player, with detail-oriented mindset and a keen eye for design and user experiences
|
|
64
|
+
location:
|
|
65
|
+
address: 123 Main Street
|
|
66
|
+
city: Sacramento
|
|
67
|
+
region: California
|
|
68
|
+
country: United States
|
|
69
|
+
postalCode: "95814"
|
|
70
|
+
profiles:
|
|
71
|
+
- network: Line
|
|
72
|
+
url: https://line.com/PPResumeX
|
|
73
|
+
username: PPResumeX
|
|
74
|
+
- network: Twitter
|
|
75
|
+
url: https://twitter.com/PPResumeX
|
|
76
|
+
username: PPResumeX
|
|
77
|
+
education:
|
|
78
|
+
- institution: University of Southern California
|
|
79
|
+
url: https://www.cs.usc.edu/
|
|
80
|
+
# Valid degree options:
|
|
81
|
+
#
|
|
82
|
+
# - 'Middle School'
|
|
83
|
+
# - 'High School'
|
|
84
|
+
# - 'Diploma'
|
|
85
|
+
# - 'Associate'
|
|
86
|
+
# - 'Bachelor'
|
|
87
|
+
# - 'Master'
|
|
88
|
+
# - 'Doctor'
|
|
89
|
+
degree: Bachelor
|
|
90
|
+
area: Computer Engineering and Computer Science
|
|
91
|
+
score: "3.8"
|
|
92
|
+
# Should be a valid date string that can be parsed by \\\`new Date(dateStr)\\\`
|
|
93
|
+
# in JavaScript, eg. '2020-01', '2020-02-03', 'Jul 1, 2023' etc.
|
|
94
|
+
#
|
|
95
|
+
# The date part would be removed in the final output as most of the time
|
|
96
|
+
# people won't really care about the exact date for your working
|
|
97
|
+
# experience or education background, etc.
|
|
98
|
+
# ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
|
|
99
|
+
startDate: Sep 1, 2016
|
|
100
|
+
# Leave endDate blank to indicate "Present"
|
|
101
|
+
endDate: Jul 1, 2020
|
|
102
|
+
courses:
|
|
103
|
+
- Discrete Methods in Computer Science
|
|
104
|
+
- Programming Language Concepts
|
|
105
|
+
- Data Structures and Object-Oriented Design
|
|
106
|
+
- Operating Systems
|
|
107
|
+
- Computer Architecture
|
|
108
|
+
- Database Systems
|
|
109
|
+
- Computer Networking
|
|
110
|
+
- Introduction to the Theory of Computing
|
|
111
|
+
summary: |
|
|
112
|
+
- Developed proficiency in programming languages such as Java, C++, and Python
|
|
113
|
+
- Gained hands-on experience in software development through various projects and assignments
|
|
114
|
+
- Strong communication and teamwork skills acquired through group projects and presentations
|
|
115
|
+
work:
|
|
116
|
+
- name: PPResume
|
|
117
|
+
url: https://ppresume.com
|
|
118
|
+
startDate: Dec 1, 2022
|
|
119
|
+
endDate:
|
|
120
|
+
position: Senior Software Engineer
|
|
121
|
+
summary: |
|
|
122
|
+
- Developed and implemented efficient and scalable code, ensuring high-quality and maintainable web applications
|
|
123
|
+
- Collaborated with cross-functional teams to gather project requirements and translate them into technical solutions
|
|
124
|
+
- Conducted thorough testing and debugging to identify and resolve any issues or bugs in the software
|
|
125
|
+
- Actively participated in code reviews, providing valuable feedback to improve code quality and adherence to best practices
|
|
126
|
+
- Mentored and guided junior developers, fostering a collaborative and growth-oriented team environment
|
|
127
|
+
keywords:
|
|
128
|
+
- Scalability
|
|
129
|
+
- Growth
|
|
130
|
+
- Quality
|
|
131
|
+
- Mentorship
|
|
132
|
+
- name: PPResume
|
|
133
|
+
url: https://ppresume.com
|
|
134
|
+
startDate: Sep 1, 2020
|
|
135
|
+
endDate: Dec 1, 2022
|
|
136
|
+
position: Software Engineer
|
|
137
|
+
summary: |
|
|
138
|
+
- Created reusable React components to ensure code efficiency and maintainability
|
|
139
|
+
- Integrated with RESTful APIs to fetch and display dynamic data on the frontend
|
|
140
|
+
- Implemented client-side routing using React Router for smooth navigation between pages
|
|
141
|
+
- Actively participated in Agile development methodologies, attending daily stand-up meetings and sprint planning sessions
|
|
142
|
+
keywords:
|
|
143
|
+
- RESTful
|
|
144
|
+
- React
|
|
145
|
+
- Agile
|
|
146
|
+
languages:
|
|
147
|
+
# Valid language fluency options:
|
|
148
|
+
#
|
|
149
|
+
# - 'Elementary Proficiency'
|
|
150
|
+
# - 'Limited Working Proficiency'
|
|
151
|
+
# - 'Minimum Professional Proficiency'
|
|
152
|
+
# - 'Full Professional Proficiency'
|
|
153
|
+
# - 'Native or Bilingual Proficiency'
|
|
154
|
+
- language: English
|
|
155
|
+
fluency: Native or Bilingual Proficiency
|
|
156
|
+
keywords:
|
|
157
|
+
- TOEFL 110
|
|
158
|
+
- IELTS 7.5
|
|
159
|
+
- language: Chinese
|
|
160
|
+
fluency: Elementary Proficiency
|
|
161
|
+
keywords: []
|
|
162
|
+
skills:
|
|
163
|
+
# Valid level options:
|
|
164
|
+
#
|
|
165
|
+
# - 'Novice'
|
|
166
|
+
# - 'Beginner'
|
|
167
|
+
# - 'Intermediate'
|
|
168
|
+
# - 'Advanced'
|
|
169
|
+
# - 'Expert'
|
|
170
|
+
# - 'Master'
|
|
171
|
+
- name: Web Development
|
|
172
|
+
level: Expert
|
|
173
|
+
keywords:
|
|
174
|
+
- Python
|
|
175
|
+
- Ruby
|
|
176
|
+
- CSS
|
|
177
|
+
- React
|
|
178
|
+
- JavaScript
|
|
179
|
+
- name: DevOps
|
|
180
|
+
level: Intermediate
|
|
181
|
+
keywords:
|
|
182
|
+
- Python
|
|
183
|
+
- Kubernetes
|
|
184
|
+
- Docker
|
|
185
|
+
- Shell
|
|
186
|
+
- Ansible
|
|
187
|
+
- name: Design
|
|
188
|
+
level: Intermediate
|
|
189
|
+
keywords:
|
|
190
|
+
- Sketch
|
|
191
|
+
- Figma
|
|
192
|
+
- Photoshop
|
|
193
|
+
awards:
|
|
194
|
+
- title: Dean's List
|
|
195
|
+
awarder: University of Southern California
|
|
196
|
+
date: Oct 2016
|
|
197
|
+
summary: |
|
|
198
|
+
Awarded to students who achieve a high academic standing by maintaining a specified grade point average (GPA) during a semester.
|
|
199
|
+
certificates:
|
|
200
|
+
- name: AWS Certified Developer - Associate
|
|
201
|
+
url: https://aws.amazon.com/certification/
|
|
202
|
+
issuer: AWS
|
|
203
|
+
date: Mar 2021
|
|
204
|
+
publications:
|
|
205
|
+
- publisher: ACM Transactions on Interactive Intelligent Systems
|
|
206
|
+
url: https://dl.acm.org/journal/tiis
|
|
207
|
+
name: Enhancing Human-Computer Interaction through Augmented Reality
|
|
208
|
+
releaseDate: Dec 2017
|
|
209
|
+
summary: |
|
|
210
|
+
- Explores the potential of augmented reality (AR) in improving interaction between humans and computers
|
|
211
|
+
- Highlights benefits of AR in various areas such as gaming, education, healthcare, and design
|
|
212
|
+
- Discusses challenges and future directions of AR technology in enhancing user experience
|
|
213
|
+
references:
|
|
214
|
+
- name: Dr. Amanda Reynolds
|
|
215
|
+
phone: "(555) 123-4567"
|
|
216
|
+
relationship: Computer Science Professor
|
|
217
|
+
email: amanda.reynolds@usc.edu
|
|
218
|
+
summary: |
|
|
219
|
+
Andy Dufresne shows exceptional problem-solving skills and a solid understanding of programming concepts, he would bring immense value to any team or organization he becomes a part of.
|
|
220
|
+
projects:
|
|
221
|
+
- name: EduWeb
|
|
222
|
+
url: https://www.eduweb.xyz/
|
|
223
|
+
description: A web-based educational platform for interactive learning
|
|
224
|
+
startDate: Sep 2016
|
|
225
|
+
endDate: Dec 2016
|
|
226
|
+
summary: |
|
|
227
|
+
- Designed to enhance online learning experiences
|
|
228
|
+
- Facilitates students' engagement and collaboration through interactive features and user-friendly interface
|
|
229
|
+
- Offers a wide range of courses across various subjects
|
|
230
|
+
- Aims to improve the way students learn through the power of the web
|
|
231
|
+
keywords:
|
|
232
|
+
- Education
|
|
233
|
+
- Online Learning
|
|
234
|
+
- HCI
|
|
235
|
+
interests:
|
|
236
|
+
- name: Sports
|
|
237
|
+
keywords:
|
|
238
|
+
- Soccer
|
|
239
|
+
- Swimming
|
|
240
|
+
- Bicycling
|
|
241
|
+
- Hiking
|
|
242
|
+
- name: Music
|
|
243
|
+
keywords:
|
|
244
|
+
- Piano
|
|
245
|
+
- Guitar
|
|
246
|
+
volunteer:
|
|
247
|
+
- organization: USC Computer Science and Engineering Society
|
|
248
|
+
url: https://www.usccsesociety.org/
|
|
249
|
+
position: Tech Mentor
|
|
250
|
+
startDate: Sep 2015
|
|
251
|
+
endDate: Jul 2023
|
|
252
|
+
summary: |
|
|
253
|
+
- Volunteered as a Tech Mentor at USC Computer Science and Engineering Society
|
|
254
|
+
- Provided guidance and assistance to fellow students in their technical projects and coursework
|
|
255
|
+
- Assisted in organizing workshops, coding competitions, and networking events for the society members
|
|
256
|
+
- Contributed to fostering a collaborative and supportive environment within the student community
|
|
257
|
+
|
|
258
|
+
# Top-level locale setting
|
|
259
|
+
locale:
|
|
260
|
+
# Use \\\`yamlresume languages list\\\` to get the list of supported languages
|
|
261
|
+
language: en
|
|
262
|
+
|
|
263
|
+
# Multiple output layouts configuration
|
|
264
|
+
layouts:
|
|
265
|
+
- engine: html
|
|
266
|
+
# Use \\\`yamlresume templates list\\\` to get the list of available templates
|
|
267
|
+
template: calm
|
|
268
|
+
typography:
|
|
269
|
+
# HTML engine only supports font size in px unit, from 10px to 24px
|
|
270
|
+
fontSize: 16px
|
|
271
|
+
- engine: markdown
|
|
272
|
+
- engine: latex
|
|
273
|
+
page:
|
|
274
|
+
margins:
|
|
275
|
+
top: 2.5cm
|
|
276
|
+
left: 1.5cm
|
|
277
|
+
right: 1.5cm
|
|
278
|
+
bottom: 2.5cm
|
|
279
|
+
showPageNumbers: true
|
|
280
|
+
# Use \\\`yamlresume templates list\\\` to get the list of available templates
|
|
281
|
+
template: moderncv-banking
|
|
282
|
+
typography:
|
|
283
|
+
# LaTeX engine only supports 10pt, 11pt, and 12pt
|
|
284
|
+
fontSize: 11pt
|
|
285
|
+
`;function X({yaml:e=N,onChange:o}){let[t,r]=useState(0),a=n=>{o?.(n);},i=useMemo(()=>{try{return parse(e)}catch{return null}},[e]);return useEffect(()=>{let n=i?.layouts||[];t>=n.length&&n.length>0&&r(n.length-1);},[i?.layouts,t]),{yaml:e,handleYamlChange:a,activeLayoutIndex:t,setActiveLayoutIndex:r,resume:i}}function Ae({yaml:e=N,onChange:o,filename:t}){let{yaml:r,handleYamlChange:a,activeLayoutIndex:i,setActiveLayoutIndex:n,resume:p}=X({yaml:e,onChange:o}),c=jsx(z,{value:r,onChange:m=>a(m||""),filename:t}),d=jsx(J,{activeLayoutIndex:i,setActiveLayoutIndex:n,resume:p,filename:t});return jsxs("div",{className:le("flex flex-col h-full w-full gap-4","text-neutral-200"),style:{backgroundColor:y},children:[jsx(F,{editorPanel:c,previewPanel:d}),jsx(Z,{editorPanel:c,previewPanel:d})]})}function Z({editorPanel:e,previewPanel:o}){return jsx("div",{className:"hidden md:flex flex-1 overflow-hidden",children:jsxs(Group,{orientation:"horizontal",children:[jsx(Panel,{minSize:360,className:"flex flex-col",children:e}),jsx(K,{}),jsx(Panel,{minSize:360,className:"flex flex-col",children:o})]})})}function G({label:e,active:o,onClick:t,icon:r}){return jsxs("button",{type:"button",onClick:t,className:le("flex-1 flex items-center justify-center gap-2 h-10","text-sm","transition-colors",o&&"border-b-2 border-neutral-200 font-medium"),children:[jsx(r,{size:s.sm,stroke:l.sm}),e]})}function se({activeTab:e,onTabChange:o}){return jsxs("div",{className:"flex md:hidden border-b border-neutral-400",children:[jsx(G,{label:"Editor",icon:IconEdit,active:e==="editor",onClick:()=>o("editor")}),jsx(G,{label:"Preview",icon:IconEye,active:e==="preview",onClick:()=>o("preview")})]})}function F({editorPanel:e,previewPanel:o}){let[t,r]=useState("editor");return jsxs("div",{className:"flex-1 flex flex-col gap-2 overflow-hidden md:hidden",children:[jsx(se,{activeTab:t,onTabChange:r}),jsx("div",{className:le("flex-1 flex-col min-h-0",t==="editor"?"flex":"hidden"),children:e}),jsx("div",{className:le("flex-1 flex-col min-h-0",t==="preview"?"flex":"hidden"),children:o})]})}function Y({content:e,language:o}){return jsx(x,{language:o,value:e,readOnly:true,minimap:false,lineNumbers:false})}function Q({content:e}){return jsx("iframe",{title:"Resume HTML Preview",className:"w-full h-full border-none",srcDoc:e})}var pe="data:image/png;base64,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";function me(){return jsxs("div",{className:le("h-full w-full","flex flex-col items-center justify-center gap-4","text-neutral-200"),children:[jsx("img",{src:pe,alt:"YAML Resume Logo",className:"w-32 h-32 opacity-70 grayscale",draggable:false}),jsx("div",{className:"text-lg font-medium",children:"No Layouts Defined"}),jsx("p",{className:"max-w-xs text-center text-sm text-neutral-400",children:"Your resume appears to be empty or contains no layout definitions."})]})}function rt(e){switch(e){case "html":return jsx(IconHtml,{size:s.sm,stroke:l.sm});case "markdown":return jsx(IconMarkdown,{size:s.sm,stroke:l.sm});case "latex":return jsx(IconTex,{size:s.sm,stroke:l.sm});default:return jsx(IconFileText,{size:s.sm,stroke:l.sm})}}function ue({active:e,onClick:o,engine:t,index:r,filename:a}){return jsxs("button",{type:"button",onClick:o,className:le("flex items-center gap-2 max-w-[200px]","h-full px-4","transition-colors border-r border-neutral-600 last:border-neutral-400"),title:`${a}.${r}${T(t)}`,role:"tab","aria-selected":e,style:{backgroundColor:e&&y},children:[rt(t),jsxs("span",{className:"truncate",children:[a,".",r,T(t)]})]})}function de({children:e}){return jsx("div",{role:"tablist",className:le("flex h-full overflow-x-auto"),children:e})}function ee({resume:e,layoutIndex:o}){let{renderedContent:t,engine:r,error:a}=U({resume:e,layoutIndex:o});return a?jsx("div",{role:"alert","aria-live":"polite",className:le("h-full w-full p-4","font-mono text-red-500 bg-red-50","border border-red-200"),children:a}):jsx("div",{className:"h-full w-full flex flex-col bg-white",children:r==="html"?jsx(Q,{content:t}):jsx(Y,{content:t,language:r})})}function J({activeLayoutIndex:e,filename:o,resume:t,setActiveLayoutIndex:r}){let a=useMemo(()=>(t?.layouts||[]).map((m,b)=>({layout:m,originalIndex:b})).filter(m=>m.layout!==null&&m.layout!==void 0&&typeof m.layout.engine=="string"),[t?.layouts]),i=v(o,true)||"resume",n=useCallback(()=>{M(t,e);},[t,e]),p=useCallback(()=>{D(t,e);},[t,e]),c=useCallback(()=>{_(t,e);},[t,e]),d=useCallback(()=>{A(t,e);},[t,e]);return a.length===0?jsxs(P,{children:[jsx(w,{}),jsx(me,{})]}):jsxs(P,{children:[jsxs(w,{children:[jsx(de,{children:a.map(({layout:m,originalIndex:b})=>jsx(ue,{active:e===b,onClick:()=>r(b),engine:m.engine,index:b,filename:i},`${m.engine}-${b}`))}),jsx("div",{className:"flex-1"}),jsxs("div",{className:"flex items-center gap-0.5 pr-2",children:[jsx(R,{onClick:n}),jsx(h,{}),t?.layouts?.[e]?.engine==="html"&&jsxs(Fragment,{children:[jsx(g,{onClick:p,title:"Print",children:jsx(IconPrinter,{size:s.sm,stroke:l.sm})}),jsx(g,{onClick:c,title:"Open in New Tab",children:jsx(IconExternalLink,{size:s.sm,stroke:l.sm})}),jsx(h,{})]}),jsx(g,{onClick:d,title:"Download",children:jsx(IconDownload,{size:s.sm,stroke:l.sm})})]})]}),jsx(C,{children:jsx(ee,{resume:t,layoutIndex:e})})]})}function P({children:e}){return jsx("div",{className:le("flex-1 flex flex-col","border border-neutral-400 overflow-hidden"),children:e})}function C({children:e}){return jsx("div",{className:"flex-1 relative",children:e})}function K(){return jsx(Separator,{className:le("w-2","flex flex-col justify-center items-center group","transition-colors cursor-col-resize"),"data-testid":"separator",children:jsx("div",{className:le("w-1 h-8","bg-neutral-400","group-hover:bg-neutral-300")})})}function w({children:e}){return jsx("div",{className:le("flex items-center border-b border-neutral-400 h-10 text-sm","bg-neutral-800"),children:e})}function g({onClick:e,children:o,title:t}){return jsx("button",{type:"button",onClick:e,className:le("flex items-center justify-center h-8 w-8","text-neutral-200 hover:text-neutral-700 hover:bg-neutral-200","transition-colors","focus:outline-none focus:ring-1 focus:ring-neutral-400"),title:t,children:o})}function R({onClick:e,title:o="Copy"}){let[t,r]=useState(false);return jsx(g,{onClick:async()=>{try{await e(),r(!0),setTimeout(()=>r(!1),2e3);}catch(i){console.error("Failed to copy",i);}},title:o,children:t?jsx(IconCheck,{size:s.sm,stroke:l.sm}):jsx(IconCopy,{size:s.sm,stroke:l.sm})})}function h(){return jsx("div",{className:"w-px h-4 bg-neutral-400 mx-1"})}
|
|
286
|
+
|
|
287
|
+
export { Y as CodeViewer, y as EDITOR_BG_COLOR, oe as EDITOR_FONT_SIZE, x as Editor, z as EditorPanel, Q as HtmlViewer, s as ICON_SIZES, l as ICON_STROKES, P as Panel, C as PanelContent, K as PanelSeparator, w as PanelToolbar, Ae as Playground, Z as PlaygroundDesktop, F as PlaygroundMobile, J as PreviewPanel, W as ResumeEditor, ee as ResumeViewer, g as ToolbarButton, R as ToolbarCopyButton, h as ToolbarSeparator, M as copyResumeToClipboard, A as downloadResume, v as getBasename, T as getExtension, _ as openResumeInNewTab, D as printResume, U as useResumeRenderer, X as useResumeState };
|
|
288
|
+
//# sourceMappingURL=index.js.map
|
|
289
|
+
//# sourceMappingURL=index.js.map
|