From 6c89e7ada9466b0832d985dd919165de9880e93e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christophe=20No=C3=ABl?= Date: Mon, 13 Dec 2021 22:00:55 +0100 Subject: [PATCH] build --- packages/chord-charts-studio/SLOC | 12 ++++++------ .../build/css/main.1c1ff44e8eff34a1438d.css | 2 ++ .../build/css/main.1c1ff44e8eff34a1438d.css.map | 1 + .../build/css/main.493c19c5bf42afc6ee19.css | 2 -- .../build/css/main.493c19c5bf42afc6ee19.css.map | 1 - packages/chord-charts-studio/build/index.html | 2 +- ...5bf42afc6ee19.js => main.1c1ff44e8eff34a1438d.js} | 2 +- ...6ee19.js.map => main.1c1ff44e8eff34a1438d.js.map} | 2 +- ...42afc6ee19.js => vendors.1c1ff44e8eff34a1438d.js} | 4 ++-- ...t => vendors.1c1ff44e8eff34a1438d.js.LICENSE.txt} | 0 ...19.js.map => vendors.1c1ff44e8eff34a1438d.js.map} | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) create mode 100644 packages/chord-charts-studio/build/css/main.1c1ff44e8eff34a1438d.css create mode 100644 packages/chord-charts-studio/build/css/main.1c1ff44e8eff34a1438d.css.map delete mode 100644 packages/chord-charts-studio/build/css/main.493c19c5bf42afc6ee19.css delete mode 100644 packages/chord-charts-studio/build/css/main.493c19c5bf42afc6ee19.css.map rename packages/chord-charts-studio/build/{main.493c19c5bf42afc6ee19.js => main.1c1ff44e8eff34a1438d.js} (99%) rename packages/chord-charts-studio/build/{main.493c19c5bf42afc6ee19.js.map => main.1c1ff44e8eff34a1438d.js.map} (99%) rename packages/chord-charts-studio/build/{vendors.493c19c5bf42afc6ee19.js => vendors.1c1ff44e8eff34a1438d.js} (99%) rename packages/chord-charts-studio/build/{vendors.493c19c5bf42afc6ee19.js.LICENSE.txt => vendors.1c1ff44e8eff34a1438d.js.LICENSE.txt} (100%) rename packages/chord-charts-studio/build/{vendors.493c19c5bf42afc6ee19.js.map => vendors.1c1ff44e8eff34a1438d.js.map} (99%) diff --git a/packages/chord-charts-studio/SLOC b/packages/chord-charts-studio/SLOC index 510bfaaf..c81f60cc 100644 --- a/packages/chord-charts-studio/SLOC +++ b/packages/chord-charts-studio/SLOC @@ -2,14 +2,14 @@ Source code: ---------- Result ------------ - Physical : 6314 - Source : 5227 + Physical : 6325 + Source : 5237 Comment : 128 Single-line comment : 60 Block comment : 68 Mixed : 5 Empty block comment : 0 - Empty : 964 + Empty : 965 To Do : 0 Number of files read : 145 @@ -38,14 +38,14 @@ Total: ---------- Result ------------ - Physical : 13877 - Source : 11456 + Physical : 13888 + Source : 11466 Comment : 193 Single-line comment : 118 Block comment : 75 Mixed : 13 Empty block comment : 0 - Empty : 2241 + Empty : 2242 To Do : 0 Number of files read : 216 diff --git a/packages/chord-charts-studio/build/css/main.1c1ff44e8eff34a1438d.css b/packages/chord-charts-studio/build/css/main.1c1ff44e8eff34a1438d.css new file mode 100644 index 00000000..d04994d7 --- /dev/null +++ b/packages/chord-charts-studio/build/css/main.1c1ff44e8eff34a1438d.css @@ -0,0 +1,2 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}html{box-sizing:border-box;font-size:62.5%;font-size:.625em}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:1.6rem;line-height:1.5}.cmLine{font-family:Consolas,Andale Mono WT,Andale Mono,Lucida Console,Lucida Sans Typewriter,DejaVu Sans Mono,Bitstream Vera Sans Mono,Liberation Mono,Nimbus Mono L,Monaco,Courier New,Courier,monospace;margin:0;white-space:pre-wrap}.editorPreview .cmLine{font-size:1.4rem;padding:0 1rem}.exportPreview .cmLine{font-size:1.4rem}.playRenderer.cmLine--fontSize-5 .cmLine{font-size:9px}.playRenderer.cmLine--fontSize-4 .cmLine{font-size:10px}.playRenderer.cmLine--fontSize-3 .cmLine{font-size:11px}.playRenderer.cmLine--fontSize-2 .cmLine{font-size:12px}.playRenderer.cmLine--fontSize-1 .cmLine{font-size:13px}.playRenderer.cmLine--fontSize0 .cmLine{font-size:14px}.playRenderer.cmLine--fontSize1 .cmLine{font-size:15px}.playRenderer.cmLine--fontSize2 .cmLine{font-size:16px}.playRenderer.cmLine--fontSize3 .cmLine{font-size:17px}.playRenderer.cmLine--fontSize4 .cmLine{font-size:18px}.playRenderer.cmLine--fontSize5 .cmLine{font-size:19px}.printPreview .cmLine{color:#000}.cmLine .playRenderer{padding:0 1rem}.theme-dark .editorPreview .cmLyricLine{color:#dbdbdb}.editorPreview .cmLine--isFromSectionCopy .cmLyricLine,.editorPreview .cmLine--isFromSectionRepeat .cmLyricLine{opacity:.5}.theme-dark .playRenderer .cmLyricLine{color:#dbdbdb}.theme-dark .printPreview .cmLyricLine{color:#303846}.editorPreview .cmChordSymbol{font-weight:700}.theme-dark .editorPreview .cmChordSymbol{background-color:#404c4e;color:#dbdbdb}.editorPreview .cmLine--isFromAutoRepeatChords .cmChordSymbol,.editorPreview .cmLine--isFromChordLineRepeater .cmChordSymbol,.editorPreview .cmLine--isFromSectionCopy .cmChordSymbol,.editorPreview .cmLine--isFromSectionRepeat .cmChordSymbol{background-color:transparent;opacity:.3}.theme-dark .playRenderer.cmChordSymbol--chordsColor-base .cmChordSymbol{color:#dbdbdb}.theme-dark .playRenderer.cmChordSymbol--chordsColor-red .cmChordSymbol{color:#ff7060}.theme-dark .playRenderer.cmChordSymbol--chordsColor-yellow .cmChordSymbol{color:#ecab06}.theme-dark .playRenderer.cmChordSymbol--chordsColor-green .cmChordSymbol{color:#74f14e}.theme-dark .playRenderer.cmChordLine--highlightChords .cmChordSymbol{background-color:#30393a}.printPreview .cmChordSymbol{font-weight:700}.theme-dark .printPreview.cmChordLine--highlightChords .cmChordSymbol{background-color:#e7e7e7}.exportPreview .cmChordSymbol{font-weight:400}.cmBarSeparator:first-of-type{margin-left:0}.cmBarSeparator:last-of-type{margin-right:0}.theme-dark .editorPreview .cmBarSeparator{color:#a8a8a8}.editorPreview .cmLine--isFromChordLineRepeater .cmBarSeparator,.editorPreview .cmLine--isFromSectionCopy .cmBarSeparator,.editorPreview .cmLine--isFromSectionRepeat .cmBarSeparator{opacity:.3}.theme-dark .playRenderer.cmChordSymbol--chordsColor-base .cmBarSeparator{color:#a8a8a8}.theme-dark .playRenderer.cmChordSymbol--chordsColor-red .cmBarSeparator{color:#ff9e93}.theme-dark .playRenderer.cmChordSymbol--chordsColor-yellow .cmBarSeparator{color:#bb8704}.theme-dark .playRenderer.cmChordSymbol--chordsColor-green .cmBarSeparator{color:#99f57d}.theme-dark .printPreview .cmBarSeparator{color:#a8a8a8}.editorPreview .cmSectionLabel,.playRenderer .cmSectionLabel,.printPreview .cmSectionLabel{border-bottom-style:dotted;border-bottom-width:1px;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:90%!important;font-weight:700;letter-spacing:.1em;line-height:2em;margin-bottom:.5rem;text-transform:uppercase;width:100%}.theme-dark .editorPreview .cmSectionLabel{border-color:#a8a8a8;color:#dbdbdb}.editorPreview .cmLine--isFromSectionCopy .cmSectionLabel,.editorPreview .cmLine--isFromSectionRepeat .cmSectionLabel{opacity:.3}.theme-dark .playRenderer .cmSectionLabel{border-color:hsla(0,0%,96%,.7);color:#dbdbdb}.exportPreview .cmSectionLabel{text-transform:uppercase}.editorPreview .cmTimeSignature,.playRenderer .cmTimeSignature,.printPreview .cmTimeSignature{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:90%;font-weight:700;letter-spacing:.1em;line-height:2em;text-transform:uppercase}.theme-dark .editorPreview .cmTimeSignature,.theme-dark .playRenderer .cmTimeSignature{color:#dbdbdb}.ErrorBoundary{padding:2rem}#app,body,html{height:100%;padding:0}.appLayout-wrapper{height:100%;width:100%}.appLayout-wrapper,.leftBar{display:flex;flex-direction:row;flex-wrap:nowrap}.leftBar{flex-shrink:0;width:15%}.leftBar.leftBar-isCollapsed{width:48px}.theme-light .leftBar.leftBar-isCollapsed{border-right:1px solid}.theme-dark .leftBar{background-color:#303846;color:#f4f4f4}.theme-dark .leftBar.leftBar-isCollapsed{border-right:1px solid #dbdbdb}.theme-dark .leftBar.leftBar-isCollapsed:hover{background-color:#455064}@media print{.leftBar{display:none}}.rightBar{display:flex;flex-direction:row;flex-shrink:0;flex-wrap:nowrap;width:15%}.rightBar.rightBar-isCollapsed{width:48px}.theme-light .rightBar.rightBar-isCollapsed{border-left:1px solid}.theme-dark .rightBar{background-color:#303846;color:#f4f4f4}.theme-dark .rightBar.rightBar-isCollapsed{border-left:1px solid #dbdbdb}.theme-dark .rightBar.rightBar-isCollapsed:hover{background-color:#455064}@media print{.rightBar{display:none}}.leftBar-content{flex:1 1 auto;overflow-y:scroll}.leftBar-isCollapsed .leftBar-content{cursor:pointer;padding:.5rem 1rem;text-align:center}.rightBar-content{flex:1 1 auto;overflow-y:scroll}.rightBar-isCollapsed .rightBar-content{cursor:pointer;padding:.5rem 1rem;text-align:center}.leftBar-collapser{cursor:pointer;display:flex;flex:0 0 12px}.leftBar-isCollapsed .leftBar-collapser{display:none}.theme-light .leftBar-collapser{border-right:1px solid}.theme-dark .leftBar-collapser{background-color:#405a73;border-right:1px solid #a8a8a8}.theme-dark .leftBar-collapser:hover{background-color:#537393}.theme-dark .leftBar-collapser{color:#f4f4f4}.leftBar-collapserIcon{align-self:center;flex:1 1 auto;font-weight:700}.leftBar-collapserIcon .icon{font-size:1.2rem}.rightBar-collapser{cursor:pointer;display:flex;flex:0 0 12px}.rightBar-isCollapsed .rightBar-collapser{display:none}.theme-light .rightBar-collapser{border-left:1px solid}.theme-dark .rightBar-collapser{background-color:#405a73;border-left:1px solid #a8a8a8}.theme-dark .rightBar-collapser:hover{background-color:#537393}.theme-dark .rightBar-collapser{color:#f4f4f4}.rightBar-collapserIcon{align-self:center;flex:1 1 auto;font-weight:700}.rightBar-collapserIcon .icon{font-size:1.2rem}.appLayout-main{display:flex;flex-direction:column;flex-grow:1;flex-wrap:nowrap}.appLayout-header{flex-shrink:0}.theme-light .appLayout-header{border-bottom:2px solid}.theme-dark .appLayout-header{background-color:#303846;border-bottom:2px solid #1b2028;color:hsla(0,0%,96%,.7)}@media print{.appLayout-header{display:none}}.appLayout-content{flex-grow:1;overflow-y:auto}@media print{.appLayout-content{overflow-y:visible}}.theme-dark .appLayout-footer{color:#a8a8a8}@media print{.appLayout-footer{display:none}}.logo-isExpanded{display:flex;margin:.5rem 1rem}.leftBar-isCollapsed .logo-isExpanded{display:none}.logo-img{flex:0 0 50px}.logo-img img{max-width:100%}.logo-txt{flex:1 1 auto;font-family:Open Sans,sans-serif;font-size:1.6rem;font-weight:700;margin-left:.5rem}.theme-dark .logo-txt{color:#f4f4f4}.mainNav-entries{display:flex;font-family:Open Sans,sans-serif;font-size:1.6rem;font-weight:400;justify-content:center;list-style-type:none;margin:0;padding:0;vertical-align:middle}.mainNavEntry{cursor:default;display:inline-block;font-weight:700;padding:1rem 2rem}.mainNavEntry:hover:not(.mainNavEntry-isActive){cursor:pointer}.theme-dark .mainNavEntry:hover:not(.mainNavEntry-isDisabled):not(.mainNavEntry-isActive){background-color:#fcdd8f;color:#1c2731}.theme-dark .mainNavEntry.mainNavEntry-isActive{background-color:#fabf2b;color:#1c2731}.theme-light .mainNavEntry.mainNavEntry-isDisabled{cursor:not-allowed}.theme-dark .mainNavEntry.mainNavEntry-isDisabled{background-color:#303846;color:#a8a8a8;cursor:not-allowed}.mainNavEntry-icon .icon{font-size:1.4rem;margin-right:.5rem}.icon{vertical-align:middle}.userGuide-isExpanded{margin-left:1rem}.rightBar-isCollapsed .userGuide-isExpanded{display:none}.userGuide-isCollapsed{padding:1rem 0}.rightBar:not(.rightBar-isCollapsed) .userGuide-isCollapsed{display:none}button{background-color:transparent;border:0;border-radius:0}.Button{display:inline-block;font-weight:700;margin:10px 20px 10px 0;padding:10px 20px;text-transform:capitalize}.Button:hover{cursor:pointer}.Button:last-of-type{margin-right:0}.theme-dark .Button-primary:not(.Button-isDisabled){background-color:#fabf2b;color:#1c2731}.theme-dark .Button-primary:not(.Button-isDisabled):hover{background-color:#fcdd8f;color:#000}.theme-dark .Button-primary:not(.Button-isDisabled):active{background-color:#feecc0;color:#2e4052}.Button-primary.Button-isDisabled{cursor:not-allowed}.theme-dark .Button-primary.Button-isDisabled{background-color:#57686a;color:#404c4e}.theme-dark .Button-secondary:not(.Button-isDisabled){background-color:#a8a8a8;color:#121616}.theme-dark .Button-secondary:not(.Button-isDisabled):hover{background-color:#c1c1c1;color:#000}.theme-dark .Button-secondary:not(.Button-isDisabled):active{background-color:#dbdbdb;color:#2e4052}.Button-secondary.Button-isDisabled{cursor:not-allowed}.theme-dark .Button-secondary.Button-isDisabled{background-color:#57686a;color:#404c4e}.versions-isExpanded{font-size:1rem;margin:4rem 0;opacity:.5;padding:0 1rem}.rightBar-isCollapsed .versions-isExpanded{display:none}.sim-SongImporterModal_Container{align-content:stretch;align-items:stretch;display:flex;flex-direction:column;flex-wrap:nowrap;height:90%;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:90%}.theme-light .sim-SongImporterModal_Container{border:1px solid}.theme-dark .sim-SongImporterModal_Container{background-color:#1e2324;border:1px solid #c1c1c1;color:#f4f4f4}.sim-Header_Container{display:flex;flex:0 0 auto}.theme-light .sim-Header_Container{border-bottom:1px solid}.theme-dark .sim-Header_Container{background-color:#303846;border-bottom:1px solid #c1c1c1;color:hsla(0,0%,96%,.7)}.sim-Header_Title{flex:1 1 auto;font-size:1.6rem;font-weight:bolder;padding:20px}.sim-Header_Actions{flex:0 0 auto;padding:0 10px}.sim-TwoColumns_Container{align-self:stretch;display:flex}.sim-TwoColumns_Container-autoHeight{flex:0 1 100%;min-height:0}.sim-Column_Container{align-self:stretch;flex:1 1 50%;padding:0 10px}.sim-Column_Container:first-child{padding-right:5px}.sim-Column_Container:last-child{padding-left:5px}.sim-Input_Header{font-size:1.2rem;height:20px;padding:2px;text-align:center;text-transform:uppercase}.theme-dark .sim-Input_Header{background-color:#404c4e;color:hsla(0,0%,96%,.7)}.sim-Input_Textarea{background-color:transparent;border:0;box-sizing:border-box;font-family:PT Mono,consolas,courier,monospace;font-size:1.2rem;height:calc(100% - 34px);line-height:1.5rem;margin:0;max-height:calc(100% - 34px);outline:none;overflow-y:scroll;padding:10px;resize:none;width:100%}.theme-dark .sim-Input_Textarea{background-color:#121616;color:#f4f4f4}.sim-Input_Textarea-Disabled{opacity:.5}.sim-Preview_Container{box-sizing:border-box;font-family:PT Mono,consolas,courier,monospace;font-size:1.2rem;height:calc(100% - 34px);max-height:calc(100% - 34px);overflow-y:scroll;padding:10px;white-space:pre-wrap}.theme-dark .sim-Preview_Container{background-color:#293132}.sim-Preview_Error{padding:10px}.theme-dark .sim-Preview_Error{background-color:#f91900;color:#f4f4f4}.sim-InputFile_Input{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.sim-InputFormat{padding:10px 0}.sim-InputFormat_Entry{display:inline-block;margin:0 10px}.sim-InputFormat_Entry:hover,.sim-InputFormat_Label:hover{cursor:pointer}.sim-InputFormat_Entry-Disabled,.sim-InputFormat_Label-Disabled{opacity:.5}.sim-InputFormat_Entry-Disabled:hover,.sim-InputFormat_Label-Disabled:hover{cursor:not-allowed}.mod-ModalContainer{z-index:5000}.mod-ModalContainer,.mod-Overlay{height:100%;left:0;position:absolute;top:0;width:100%}.mod-Overlay{background-color:#000;opacity:.7}.mod-ModalConfirmContainer{height:auto;left:50%;padding:10px 20px;position:absolute;top:50%;transform:translate(-50%,-50%);width:auto;z-index:5000}.theme-light .mod-ModalConfirmContainer{border:1px solid}.theme-dark .mod-ModalConfirmContainer{background-color:#1e2324;border:1px solid #c1c1c1;color:#f4f4f4}.mod-ModalConfirmButtons{text-align:center}.fileManager-isExpanded{font-size:1.2rem}.leftBar-isCollapsed .fileManager-isExpanded{display:none}.fileManager-isCollapsed{padding:1rem 0}.leftBar:not(.leftBar-isCollapsed) .fileManager-isCollapsed{display:none}.fileManager-actionsList{display:flex;flex-direction:row;flex-wrap:wrap;padding:1rem}.theme-dark .fileManager-actionsList{background-color:#455064}.fileManagerAction{flex:0 1 auto;margin-right:.5rem;padding:.5rem;white-space:nowrap}.fileManagerAction:hover{cursor:not-allowed}.fileManagerAction:hover:not(.fileManagerAction-isDisabled){cursor:pointer}.theme-dark .fileManagerAction:hover:not(.fileManagerAction-isDisabled){background-color:#596883}.fileManagerAction-isDisabled{opacity:.5}.fileManagerAction-icon .icon{font-size:1.4rem}.fileManager-entriesList{list-style:none;padding-left:0}.fileManagerEntry{cursor:pointer}.theme-dark .fileManagerEntry:hover{background-color:#596883}.theme-dark .fileManagerEntry.fileManagerEntry-isSelected{background-color:#fabf2b}.fileManagerEntry-input{background-color:transparent;border:none;box-sizing:border-box;cursor:pointer;outline:none;padding:.25rem 1rem;width:100%}.theme-dark .fileManagerEntry-input{color:#f4f4f4}.theme-dark .fileManagerEntry-isSelected .fileManagerEntry-input{color:#303846}.fileManagerEntry-isRenamed .fileManagerEntry-input{cursor:text}.theme-dark .fileManagerEntry-isRenamed .fileManagerEntry-input{background-color:#f4f4f4;color:#303846}.songEditor{display:flex;flex-direction:row;flex-wrap:nowrap;font-size:1.2rem;height:100%;width:100%}.songEditor-source{display:flex;flex:0 1 50%;overflow-y:scroll}.theme-dark .songEditor-source{background-color:#121616}.songEditor-preview{flex:0 1 50%;overflow-y:scroll;padding:1rem 0}.theme-dark .songEditor-preview{background-color:#293132}.theme-dark .editorPreview{color:#dbdbdb}.prosemirrorWrapper{flex:1 1 auto;padding:1rem 0}.ProseMirror{font-family:Consolas,Andale Mono WT,Andale Mono,Lucida Console,Lucida Sans Typewriter,DejaVu Sans Mono,Bitstream Vera Sans Mono,Liberation Mono,Nimbus Mono L,Monaco,Courier New,Courier,monospace;font-size:1.4rem;height:100%;outline:none}.theme-dark .ProseMirror{color:#dbdbdb}.ProseMirror p{margin:0;padding:0 1rem}.ProseMirror{word-wrap:break-word;font-feature-settings:"liga" 0;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;position:relative;white-space:pre-wrap;white-space:break-spaces}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection ::selection{background:transparent}.ProseMirror-hideselection ::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{border:2px solid #8cf;bottom:-2px;content:"";left:-32px;pointer-events:none;position:absolute;right:-2px;top:-2px}img.ProseMirror-separator{border:none!important;display:inline!important;margin:0!important}.exportPreview{padding:1rem}.theme-dark .exportPreview{background-color:#f4f4f4}.exp-SongRenderer p{font-family:Consolas,Andale Mono WT,Andale Mono,Lucida Console,Lucida Sans Typewriter,DejaVu Sans Mono,Bitstream Vera Sans Mono,Liberation Mono,Nimbus Mono L,Monaco,Courier New,Courier,monospace;font-size:1.4rem;margin:0;white-space:pre-wrap}.theme-dark .exp-SongRenderer{color:#303846}.playRendererWrapper1{height:100%;overflow-y:scroll;position:relative}.theme-dark .playRendererWrapper1{background-color:#121616}.playRendererWrapper2{bottom:0;left:0;margin:1rem;position:absolute;right:0;top:0}.playRenderer--columns-1{column-count:1}.playRenderer--columns-2{column-count:2;column-fill:auto;height:100%}.playRenderer--columns-3{column-count:3;column-fill:auto;height:100%}.playRenderer--columns-4{column-count:4;column-fill:auto;height:100%}.printPreview{overflow-y:scroll}.theme-dark .printPreview{background-color:#293132}@media print{.printPreview{background-color:#fff!important;overflow-y:auto}}.printPreview-page{background-color:#fff;margin:2rem auto;position:relative}@media print{.printPreview-page{margin:0;page-break-after:auto}}.printPreview-pageContentWrapper{bottom:0;left:0;position:absolute;right:0;top:0}.printPreview-pageContent{display:flex;flex-direction:column;flex-wrap:nowrap;height:100%}.printPreview-pageHeader{font-size:1.8rem;font-weight:700;margin-bottom:1rem}.printPreview-pageColumnWrapper{display:flex;flex:1;flex-direction:row;flex-wrap:nowrap}.printPreview-pageColumn{flex:1 1 0;margin:0 .7rem}.printPreview-pageColumn:first-of-type{margin-left:0}.printPreview-pageColumn:last-of-type{margin-right:0}.printPreview-page--a4{height:297mm;width:210mm}.printPreview-page--booxmax2pro{height:930px;width:698px}.printPreview-pageContentWrapper--padding1{padding:3mm}.printPreview-pageContentWrapper--padding2{padding:6mm}.printPreview-pageContentWrapper--padding3{padding:9mm}.printPreview-pageContentWrapper--padding4{padding:12mm}.printPreview-pageContentWrapper--padding5{padding:15mm}.printPreview-page--font-5{font-size:7px}.printPreview-page--font-4{font-size:8px}.printPreview-page--font-3{font-size:9px}.printPreview-page--font-2{font-size:10px}.printPreview-page--font-1{font-size:11px}.printPreview-page--font0{font-size:12px}.printPreview-page--font1{font-size:13px}.printPreview-page--font2{font-size:14px}.printPreview-page--font3{font-size:15px}.printPreview-page--font4{font-size:16px}.printPreview-page--font5{font-size:17px}.measuring-node{position:absolute;visibility:hidden;z-index:-1}.rightBar-isCollapsed .renderingOptionsPanel-isExpanded{display:none}.renderingOptionsPanel-isCollapsed{padding:1rem 0}.rightBar:not(.rightBar-isCollapsed) .renderingOptionsPanel-isCollapsed{display:none}.sb-optionsGroup{padding-top:2rem}.sb-optionsGroup:first-of-type{padding-top:0}.sb-optionsGroup-title{display:flex;font-size:1.4rem;font-weight:700;padding:.5rem 1rem .5rem .5rem}.theme-light .sb-optionsGroup-title{border-bottom:2px solid}.theme-dark .sb-optionsGroup-title{border-bottom:2px solid hsla(0,0%,96%,.7)}.theme-dark .sb-optionsGroup-isNotInteractable .sb-optionsGroup-title{color:#71819e}.sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover{cursor:pointer}.theme-dark .sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover{background-color:#596883}.sb-optionsGroup-label{flex:1 1 auto}.sb-optionsGroup-toggle{flex:0 0 auto}.sb-optionsGroup-iconTitle .icon{font-size:1.6rem}.sb-optionsGroup-iconToggle .icon{font-size:1.8rem}.sb-optionSelect{font-size:1.2rem;padding:.5rem 1.5rem .5rem 1rem}.theme-light .sb-optionSelect{border-bottom:1px dotted}.theme-dark .sb-optionSelect{border-bottom:1px dotted #71819e}.theme-dark .sb-optionsGroup .sb-optionSelect{background-color:#1b2028}.theme-dark .sb-optionSelect.sb-optionSelect-isNotInteractable{color:#71819e}.sb-optionSelect:hover{cursor:not-allowed}.sb-optionSelect:hover:not(.sb-optionSelect-isNotInteractable){cursor:pointer}.theme-dark .sb-optionSelect:hover:not(.sb-optionSelect-isNotInteractable){background-color:#596883}.sb-optionSelect-title{display:flex}.sb-optionSelect-desc{flex:1 1 auto}.sb-optionSelect-toggle{flex:0 0 auto}.sb-optionSelect-icon .icon{font-size:1.8rem}.sb-optionSelectChoice-activeLabel{opacity:.5}.sb-optionSelectChoice{display:flex;padding-top:.5rem}.sb-optionSelectChoice:hover:not(.sb-optionSelectChoice-isNotInteractable){cursor:pointer;text-decoration:underline}.sb-optionSelectChoice-isSelected{font-weight:700}.sb-optionSelectChoice-check{flex:0 0 20px}.sb-optionSelectChoice-checkIcon .icon{font-size:1.2rem}.sb-optionSelectChoice-label{flex:1 1 auto}.sb-optionSlider{display:flex;flex-wrap:wrap;font-size:1.2rem;padding:.5rem 1.5rem .5rem 1rem}.theme-light .sb-optionSlider{border-bottom:1px dotted}.theme-dark .sb-optionSlider{border-bottom:1px dotted #71819e}.theme-dark .sb-optionsGroup .sb-optionSlider{background-color:#1b2028}.theme-dark .sb-optionSlider.sb-optionSlider-isNotInteractable{color:#71819e}.sb-optionSlider:hover{cursor:not-allowed}.sb-optionSlider:hover:not(.sb-optionSlider-isNotInteractable){cursor:pointer}.theme-dark .sb-optionSlider:hover:not(.sb-optionSlider-isNotInteractable){background-color:#596883}.sb-optionSlider-desc{flex:1 1 auto}.sb-optionSlider-value{flex:0 0 auto;font-size:1.2rem;vertical-align:middle}.sb-optionSlider-range{flex:1 1 100%}.theme-light .sb-optionSlider-range input[type=range]{-webkit-appearance:none;background:transparent;width:100%}.theme-light .sb-optionSlider-range input[type=range]:focus{outline:none}.theme-light .sb-optionSlider-range input[type=range]::-webkit-slider-runnable-track{animation:.2s;background:#feecc0;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:100%}.theme-light .sb-optionSlider-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:#bb8704;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;margin-top:-3.3333333333;width:15px}.theme-light .sb-optionSlider-range input[type=range]:focus::-webkit-slider-runnable-track{background:#feecc0}.theme-light .sb-optionSlider-range input[type=range]::-moz-range-track{animation:.2s;background:#feecc0;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:100%}.theme-light .sb-optionSlider-range input[type=range]::-moz-range-thumb{background:#bb8704;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:15px}.theme-light .sb-optionSlider-range input[type=range]::-ms-track{animation:.2s;background:transparent;border-color:transparent;border-width:15px 0;color:transparent;cursor:pointer;height:10px;width:100%}.theme-light .sb-optionSlider-range input[type=range]::-ms-fill-lower,.theme-light .sb-optionSlider-range input[type=range]::-ms-fill-upper{background:#feecc0;border:0 solid #000;border-radius:0}.theme-light .sb-optionSlider-range input[type=range]::-ms-thumb{background:#bb8704;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:15px}.theme-light .sb-optionSlider-range input[type=range]:focus::-ms-fill-lower,.theme-light .sb-optionSlider-range input[type=range]:focus::-ms-fill-upper{background:#feecc0}.theme-light .sb-optionSlider-range input[type=range]:disabled::-moz-range-thumb,.theme-light .sb-optionSlider-range input[type=range]:disabled::-moz-range-track{cursor:default}.theme-light .sb-optionSlider-range input[type=range]:disabled::-webkit-slider-runnable-track,.theme-light .sb-optionSlider-range input[type=range]:disabled::-webkit-slider-thumb{cursor:default}.theme-light .sb-optionSlider-range input[type=range]:disabled::-ms-thumb,.theme-light .sb-optionSlider-range input[type=range]:disabled::-ms-track{cursor:default}.theme-dark .sb-optionSlider-range input[type=range]{-webkit-appearance:none;background:transparent;width:100%}.theme-dark .sb-optionSlider-range input[type=range]:focus{outline:none}.theme-dark .sb-optionSlider-range input[type=range]::-webkit-slider-runnable-track{animation:.2s;background:#71819e;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:100%}.theme-dark .sb-optionSlider-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:#070809;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;margin-top:-3.3333333333;width:15px}.theme-dark .sb-optionSlider-range input[type=range]:focus::-webkit-slider-runnable-track{background:#71819e}.theme-dark .sb-optionSlider-range input[type=range]::-moz-range-track{animation:.2s;background:#71819e;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:100%}.theme-dark .sb-optionSlider-range input[type=range]::-moz-range-thumb{background:#070809;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:15px}.theme-dark .sb-optionSlider-range input[type=range]::-ms-track{animation:.2s;background:transparent;border-color:transparent;border-width:15px 0;color:transparent;cursor:pointer;height:10px;width:100%}.theme-dark .sb-optionSlider-range input[type=range]::-ms-fill-lower,.theme-dark .sb-optionSlider-range input[type=range]::-ms-fill-upper{background:#71819e;border:0 solid #000;border-radius:0}.theme-dark .sb-optionSlider-range input[type=range]::-ms-thumb{background:#070809;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:15px}.theme-dark .sb-optionSlider-range input[type=range]:focus::-ms-fill-lower,.theme-dark .sb-optionSlider-range input[type=range]:focus::-ms-fill-upper{background:#71819e}.theme-dark .sb-optionSlider-range input[type=range]:disabled::-moz-range-thumb,.theme-dark .sb-optionSlider-range input[type=range]:disabled::-moz-range-track{cursor:default}.theme-dark .sb-optionSlider-range input[type=range]:disabled::-webkit-slider-runnable-track,.theme-dark .sb-optionSlider-range input[type=range]:disabled::-webkit-slider-thumb{cursor:default}.theme-dark .sb-optionSlider-range input[type=range]:disabled::-ms-thumb,.theme-dark .sb-optionSlider-range input[type=range]:disabled::-ms-track{cursor:default}.sb-optionSlider-range input[type=range]:disabled{cursor:not-allowed!important;opacity:.35}.sb-optionToggle{display:flex;font-size:1.2rem;padding:.5rem 1.5rem .5rem 1rem}.theme-light .sb-optionToggle{border-bottom:1px dotted}.theme-dark .sb-optionToggle{border-bottom:1px dotted #71819e}.theme-dark .sb-optionsGroup .sb-optionToggle{background-color:#1b2028}.theme-dark .sb-optionToggle.sb-optionToggle-isNotInteractable{color:#71819e}.sb-optionToggle:hover{cursor:not-allowed}.sb-optionToggle:hover:not(.sb-optionToggle-isNotInteractable){cursor:pointer}.theme-dark .sb-optionToggle:hover:not(.sb-optionToggle-isNotInteractable){background-color:#596883}.sb-optionToggle-desc{flex:1 1 auto}.sb-optionToggle-icon{flex:0 0 auto}.theme-dark .sb-optionToggle-isOff .icon{color:#a8a8a8}.sb-optionToggle-icon .icon{font-size:1.8rem}.theme-dark .sb-optionToggle-isOff .sb-optionToggle-icon .icon{color:#a8a8a8} +/*# sourceMappingURL=main.1c1ff44e8eff34a1438d.css.map*/ \ No newline at end of file diff --git a/packages/chord-charts-studio/build/css/main.1c1ff44e8eff34a1438d.css.map b/packages/chord-charts-studio/build/css/main.1c1ff44e8eff34a1438d.css.map new file mode 100644 index 00000000..1bf867b1 --- /dev/null +++ b/packages/chord-charts-studio/build/css/main.1c1ff44e8eff34a1438d.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css/main.1c1ff44e8eff34a1438d.css","mappings":"AAAA,2EAA2E,CAU3E,KAEE,6BAA8B,CAD9B,gBAEF,CASA,KACE,QACF,CAMA,KACE,aACF,CAOA,GACE,aAAc,CACd,cACF,CAUA,GACE,sBAAuB,CACvB,QAAS,CACT,gBACF,CAOA,IACE,+BAAiC,CACjC,aACF,CASA,EACE,4BACF,CAOA,YACE,kBAAmB,CACnB,yBAA0B,CAC1B,gCACF,CAMA,SAEE,kBACF,CAOA,cAGE,+BAAiC,CACjC,aACF,CAMA,MACE,aACF,CAOA,QAEE,aAAc,CACd,aAAc,CACd,iBAAkB,CAClB,uBACF,CAEA,IACE,aACF,CAEA,IACE,SACF,CASA,IACE,iBACF,CAUA,sCAKE,mBAAoB,CACpB,cAAe,CACf,gBAAiB,CACjB,QACF,CAOA,aAEE,gBACF,CAOA,cAEE,mBACF,CAMA,gDAIE,yBACF,CAMA,wHAIE,iBAAkB,CAClB,SACF,CAMA,4GAIE,6BACF,CAMA,SACE,0BACF,CASA,OACE,qBAAsB,CACtB,aAAc,CACd,aAAc,CACd,cAAe,CACf,SAAU,CACV,kBACF,CAMA,SACE,uBACF,CAMA,SACE,aACF,CAOA,6BAEE,qBAAsB,CACtB,SACF,CAMA,kFAEE,WACF,CAOA,cACE,4BAA6B,CAC7B,mBACF,CAMA,yCACE,uBACF,CAOA,6BACE,yBAA0B,CAC1B,YACF,CASA,QACE,aACF,CAMA,QACE,iBACF,CAiBA,kBACE,YACF,CC5VQ,KCEP,sBAGA,gBAGA,iBAGD,KAEC,mHCRkB,CCIlB,gBADO,CFMP,eCgDkB,CE5BnB,QAEC,mMADA,SAKA,qBAGA,uBDlCA,iBCmCC,cDpCM,CCuCP,uBDtCA,gBADO,CC+CP,yCACC,cAED,yCACC,eAED,yCACC,eAED,yCACC,eAED,yCACC,eAED,wCACC,eAED,wCACC,eAED,wCACC,eAED,wCACC,eAED,wCACC,eAED,wCACC,eAID,sBACC,WAID,sBACC,eCzFC,wCDiGA,cAGF,gHAEC,WCtGC,uCD4GA,cC5GA,uCDmHA,cAUF,8BACC,eF1DY,CGpEX,0CDiIA,yBADA,aACA,CAGF,iPAKC,6BADA,UACA,CCzIC,yED+IA,cC/IA,wEDoJA,cCpJA,2EDyJA,cCzJA,0ED8JA,cC9JA,sEDmKA,yBAKF,6BACC,eFrGY,CGpEX,sED6KA,yBAKF,8BACC,gBAOD,8BACC,cAGD,6BACC,eC/LC,2CDqMA,cAGF,sLAGC,WC3MC,0EDiNA,cCjNA,yEDsNA,cCtNA,4ED2NA,cC3NA,2EDgOA,cChOA,0CDuOA,cAMF,2FAYC,2BACA,wBAVA,qBAIA,mHFtPiB,CEuPjB,wBAFA,eF/KY,CEmLZ,oBACA,gBANA,mBEvPY,CF2PZ,yBALA,UASA,CC1PC,2CDiQA,qBADA,aACA,CAGF,sHAEC,WCtQC,0CD6QA,+BADA,aACA,CAKF,+BACC,yBAKD,8FAIC,mHF9RiB,CE+RjB,cAFA,eFvNY,CE2NZ,oBACA,gBAFA,wBAEA,CChSC,uFD6SA,cGlTH,eACC,YDGe,CEHhB,eAGC,YACA,UAGD,mBAEC,YADA,UAKA,CAKD,4BAPC,aACA,mBACA,gBAWA,CAND,SACC,cACA,SAIA,CAEA,6BACC,WAOA,0CACC,uBH/BA,qBG4BD,yBADA,aACA,CAEA,yCACC,+BAEA,+CACC,yBAKH,aAzBD,SA0BE,cAIF,UAIC,aACA,mBAJA,cAKA,iBAJA,SAIA,CAEA,+BACC,WAOA,4CACC,sBH7DA,sBG0DD,yBADA,aACA,CAEA,2CACC,8BAEA,iDACC,yBAKH,aAzBD,UA0BE,cAIF,iBAEC,cADA,iBACA,CAEA,sCAGC,eAFA,mBACA,iBACA,CAIF,kBAEC,cADA,iBACA,CAEA,wCAGC,eAFA,mBACA,iBACA,CAIF,mBAGC,eADA,aADA,aAEA,CAEA,wCACC,aHtGC,gCG2GD,uBH3GC,+BG0GD,yBACA,+BAEA,qCACC,yBH9GA,+BGmHD,cAIF,uBAEC,kBADA,cAEA,eNtDa,CMwDb,6BL1HA,gBADO,CKgIR,oBAGC,eADA,aADA,aAEA,CAEA,0CACC,aHvIC,iCG4ID,sBH5IC,gCG2ID,yBACA,8BAEA,sCACC,yBH/IA,gCGoJD,cAIF,wBAEC,kBADA,cAEA,eNvFa,CMyFb,8BL3JA,gBADO,CKmKR,gBAGC,aACA,sBAHA,YAIA,iBAGD,kBACC,cH7KE,+BGkLD,wBHlLC,8BGiLD,yBACA,gCAFA,uBAEA,CAGD,aATD,kBAUE,cAIF,mBAEC,WAAU,CADV,eACA,CAEA,aAJD,mBAKE,oBH/LC,8BGqMD,cAGD,aALD,kBAME,cCvMF,iBACC,aACA,kBAEA,sCACC,aAIF,UACC,cACA,cACC,eAIF,UACC,cAIA,gCPvBsB,CCEtB,gBADO,CMuBP,gBAJA,iBAIA,CJxBE,sBI2BD,cC/BF,iBAGC,aAKA,gCRJsB,CQEtB,gBPDO,COIP,gBALA,uBAEA,qBALA,SACA,UAQA,sBAGD,cAGC,eAFA,qBAGA,gBAFA,iBAEA,CAEA,gDACC,eLhBC,0FKsBA,yBADA,aACA,CLtBA,gDK6BA,yBADA,aACA,CL7BA,mDKqCA,mBLrCA,kDKoCA,yBADA,cAEA,mBAMF,yBPzCA,iBO0CC,kBP3CM,CQNR,MACC,sBCDD,sBACC,gBNCc,CMCd,4CACC,aAIF,uBACC,eAEA,4DACC,aCYF,OAGC,6BAFA,SACA,eACA,CAGD,QACC,qBAEA,gBAEA,wBAHA,kBAEA,yBACA,CAEA,cACC,eAGD,qBACC,eRrCC,oDQ2CD,yBACA,cR5CC,0DQkDA,yBADA,UACA,CRlDA,2DQyDA,yBADA,aACA,CAKH,kCACC,mBR/DE,8CQiED,yBACA,cRlEC,sDQwED,yBACA,cRzEC,4DQ+EA,yBADA,UACA,CR/EA,6DQsFA,yBADA,aACA,CAKH,oCACC,mBR5FE,gDQ8FD,yBACA,cCpGF,qBXOC,eWNA,cAEA,WADA,cXIO,CWCP,2CACC,aCPF,iCAWC,sBADA,oBAFA,aACA,sBAGA,iBANA,WAHA,SAFA,kBACA,QAEA,+BACA,SAOA,CVRE,8CUYD,iBVZC,6CUWD,yBACA,yBACA,cAIF,sBAEC,aADA,aACA,CVnBE,mCUuBD,wBVvBC,kCUsBD,yBACA,gCACA,wBAIF,kBACC,cZ3BA,gBADO,CY+BP,mBAFA,YAEA,CAGD,oBACC,cACA,eAGD,0BAEC,mBADA,YACA,CAGD,qCACC,cACA,aAGD,sBAEC,mBADA,aAEA,eAEA,kCACC,kBAED,iCACC,iBAIF,kBZ7DC,iBY8DA,YAEA,YACA,kBAFA,wBZhEO,CEDL,8BUuED,yBACA,wBAIF,oBASC,6BACA,SATA,sBAYA,8CbxFuB,CCCvB,gBADO,CY+EP,yBAWA,mBAPA,SAHA,6BAMA,aALA,kBAJA,aAKA,YAJA,UAYA,CV3FE,gCU8FD,yBACA,cAIF,6BACC,WAGD,uBACC,sBAEA,8CbzGuB,CCCvB,gBADO,CY4GP,yBACA,6BACA,kBACA,aAJA,oBAIA,CVhHE,mCUmHD,yBAIF,mBACC,aVxHE,+BU2HD,yBADA,aACA,CAIF,qBAGC,YACA,UACA,gBACA,kBAJA,WAKA,WAGD,iBACC,eAGD,uBACC,qBACA,cAQA,0DACC,eAIF,gEAKC,WAHA,4EACC,mBC3JF,oBACC,YAKA,CAGD,iCAPC,YAIA,MAAK,CAFL,kBACA,MAFA,UAaA,CAPD,aAOC,sBADA,UACA,CAMD,2BAQC,YAHA,SAKA,kBAPA,kBACA,QAEA,+BACA,WANA,YASA,CXpCE,wCWwCD,iBXxCC,uCWuCD,yBACA,yBACA,cAIF,yBACC,kBClDD,wBdMC,gBADO,CcFP,6CACC,aAIF,yBACC,eACA,4DACC,aAIF,yBAEC,aACA,mBACA,eAHA,YAGA,CZfE,qCYiBD,yBAIF,mBACC,cAEA,kBX7Ba,CW4Bb,aX5Ba,CW8Bb,mBAEA,yBACC,mBAGD,4DAIC,eZnCC,wEYiCA,yBAMH,8BACC,WAIA,8Bd1CA,gBADO,CcgDR,yBAEC,gBADA,cACA,CAGD,kBACC,eZvDE,oCY2DA,yBZ3DA,0DYiEA,yBAKH,wBAKC,6BACA,YALA,sBAMA,eACA,aALA,oBADA,UAMA,CZ9EE,oCYgFD,cZhFC,iEYqFA,cAIF,oDAKC,YZ9FC,gEY2FA,yBACA,cCzFH,YAIC,aACA,mBACA,iBfPA,iBeGA,YADA,UfHO,CeaR,mBAEC,aADA,aAEA,kBbjBE,+BaoBD,yBAIF,oBACC,aAGA,kBAFA,cAEA,Cb5BE,gCa+BD,yBb/BC,2BcID,cCFF,oBACC,cACA,eAGD,aAIC,mMjBTA,iBiBMA,YAEA,YjBTO,CEDL,yBekBD,cAGD,eACC,SACA,eC9BF,aAKE,qBAKA,+BAFA,oCACA,4BARA,kBAKA,qBACA,wBANA,CAYF,iBACE,qBAGF,gBACE,kBAGF,8DACA,mEACA,mDAEA,0BACE,uBAKF,4BACE,aAGF,kCAKE,sBADA,YAHA,WAEA,WAGA,oBAJA,kBAEA,mBAEA,CAKF,0BAEE,sBADA,yBAEA,mBCvCF,eACC,YhBPc,CDGZ,2BiBMD,yBAKD,oBAEC,mMnBXD,iBmBUC,SAKA,oBnBhBM,CEDL,8BiBuBD,cCnBF,sBAEC,YACA,kBAFA,iBAEA,ClBPE,kCkBUD,yBAGF,sBAMC,SACA,MAAK,CANL,WjBjBc,CiBmBd,kBAEA,QADA,KAGA,CAGD,yBACC,eAED,yBACC,eACA,iBACA,YAED,yBACC,eACA,iBACA,YAED,yBACC,eACA,iBACA,YCnCD,cACC,kBnBLE,0BmBQD,yBAGD,aAPD,cAQE,gCACA,iBAIF,mBAKC,sBADA,iBADA,iBAEA,CAEA,aAPD,mBAQE,SACA,uBAKF,iCAMC,SADA,OAFA,kBAIA,OAAM,CAHN,KAGA,CAID,0BACC,aACA,sBACA,iBAEA,YAGD,yBrBhDC,gBADO,CqBmDP,etBgBa,CsBdb,kBlBzDc,CkB6Df,gCAGC,aAFA,OAGA,mBACA,iBAGD,yBACC,WACA,eAEA,uCACC,cAGD,sCACC,eAKF,uBAEC,aADA,WACA,CAGD,gCAEC,aADA,WACA,CAID,2CACC,YAED,2CACC,YAED,2CACC,YAED,2CACC,aAED,2CACC,aAID,2BACC,cAED,2BACC,cAED,2BACC,cAED,2BACC,eAED,2BACC,eAED,0BACC,eAED,0BACC,eAED,0BACC,eAED,0BACC,eAED,0BACC,eAED,0BACC,eClJD,gBAEC,kBADA,kBAEA,WCAA,wDACC,aAIF,mCACC,eAEA,wEACC,aCTF,iBACC,gBrBEe,gCqBCd,cAIF,uBAGC,axBLA,gBADO,CwBSP,gBALA,8BzB+Da,CGpEX,oCsBaD,wBtBbC,mCsBaD,0CtBbC,sEsBkBA,cAIF,sFACC,etBvBC,kGsB0BA,yBAKH,uBACC,cAGD,wBACC,cAOA,iCxBzCA,gBADO,CwBgDP,kCxB/CA,gBADO,CyBLR,iBzBMC,gBADO,CyBFP,gCvBCE,8BuBED,yBvBFC,6BuBED,iCvBFC,8CuBOA,yBvBPA,+DuBaA,cAIF,uBACC,mBAGD,+DACC,evBtBC,2EuBwBA,yBAKH,uBACC,aAGD,sBACC,cAGD,wBACC,cAIA,4BzBxCA,gBADO,CyB8CR,mCACC,WAGD,uBAEC,aADA,iBACA,CAEA,2EAEC,eADA,yBACA,CAIF,kCACC,e1BMa,C0BHd,6BACC,cAIA,uCzBpEA,gBADO,CyB0ER,6BACC,cChFD,iBACC,aACA,e1BIA,gBADO,C0BCP,gCxBFE,8BwBKD,yBxBLC,6BwBKD,iCxBLC,8CwBUA,yBxBVA,+DwBgBA,cAIF,uBACC,mBAGD,+DACC,exBzBC,2EwB2BA,yBAKH,sBACC,cAGD,uBACC,c1BnCA,iB0BoCA,qB1BrCO,C0B0CR,uBACC,cxB5CE,sDyB8CF,wBAEA,uBADA,UACA,CAEA,4DACC,aAGD,qFAjDA,cAsDC,mBAFA,oBACA,eAtBc,CAhCf,eADA,WAmCe,CApCf,UDgDiB,CCYjB,4EASC,wBAjDD,kBD2BiB,CC7BjB,oBACA,eAMe,CARf,eADA,WAUe,CA8Cd,yBAzDD,UAyDC,CAGD,2FACC,kBD5BgB,CC+BjB,wEA5EA,cAiFC,mBAFA,oBACA,eAjDc,CAhCf,eADA,WAmCe,CApCf,UDgDiB,CCuCjB,wEAnEA,mBAFA,oBACA,eAMe,CARf,eADA,WAUe,CAXf,UDgCiB,CCmDjB,iEA/FA,cAoGC,uBADA,yBADA,oBADA,kBAlGD,eADA,WAmCe,CApCf,UAuGC,CAUD,4IAIC,mBAFA,oBACA,eDpEgB,CCwEjB,iEApGA,mBAFA,oBACA,eAMe,CARf,eADA,WAUe,CAXf,UDgCiB,CCwFjB,wJACC,kBDxFgB,CC2FjB,kKAEC,eAGD,mLAEC,eAGD,oJAEC,ezBzJC,qDyB8CF,wBAEA,uBADA,UACA,CAEA,2DACC,aAGD,oFAjDA,cAsDC,mBAFA,oBACA,eAtBc,CAhCf,eADA,WAmCe,CApCf,UDgDiB,CCYjB,2EASC,wBAjDD,kBD2BiB,CC7BjB,oBACA,eAMe,CARf,eADA,WAUe,CA8Cd,yBAzDD,UAyDC,CAGD,0FACC,kBD5BgB,CC+BjB,uEA5EA,cAiFC,mBAFA,oBACA,eAjDc,CAhCf,eADA,WAmCe,CApCf,UDgDiB,CCuCjB,uEAnEA,mBAFA,oBACA,eAMe,CARf,eADA,WAUe,CAXf,UDgCiB,CCmDjB,gEA/FA,cAoGC,uBADA,yBADA,oBADA,kBAlGD,eADA,WAmCe,CApCf,UAuGC,CAUD,0IAIC,mBAFA,oBACA,eDpEgB,CCwEjB,gEApGA,mBAFA,oBACA,eAMe,CARf,eADA,WAUe,CAXf,UDgCiB,CCwFjB,sJACC,kBDxFgB,CC2FjB,gKAEC,eAGD,iLAEC,eAGD,kJAEC,eDnGA,kDAEC,6BADA,WACA,CE5DH,iBACC,a5BKA,gBADO,iCEDL,8B0BID,yB1BJC,6B0BID,iC1BJC,8C0BSA,yB1BTA,+D0BeA,cAIF,uBACC,mBAGD,+DACC,e1BxBC,2E0B0BA,yBAKH,sBACC,cAGD,sBACC,c1BpCE,yC0B0CA,cAMF,4B5B9CA,gBADO,CEDL,+D0BuDC","sources":["webpack://@touffi/chords-charts-studio/./node_modules/normalize.css/normalize.css","webpack://@touffi/chords-charts-studio/./scss/styles.scss","webpack://@touffi/chords-charts-studio/./scss/_base.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/_typography.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/mixins/_fontSize.scss","webpack://@touffi/chords-charts-studio/./scss/chordMark.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/mixins/_themify.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/_spacings.scss","webpack://@touffi/chords-charts-studio/./src/ui/_components/ErrorBoundary.scss","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/App.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/Logo.scss","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/Nav.scss","webpack://@touffi/chords-charts-studio/./src/ui/_components/Icon.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/UserGuide.scss","webpack://@touffi/chords-charts-studio/./src/ui/_components/Button.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/Versions.scss","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/SongImporter.scss","webpack://@touffi/chords-charts-studio/./src/ui/_components/Modal.scss","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileManager.scss","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/_components/EditorLayout.scss","webpack://@touffi/chords-charts-studio/./src/songRenderers/editorPreview/_components/EditorPreview.scss","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/ProsemirrorEditorView.scss","webpack://@touffi/chords-charts-studio/./node_modules/prosemirror-view/style/prosemirror.css","webpack://@touffi/chords-charts-studio/./src/songRenderers/exportPreview/_components/ExportPreview.scss","webpack://@touffi/chords-charts-studio/./src/songRenderers/playRenderer/_components/PlayRenderer.scss","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/PrintPreview.scss","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/getDimensionsFromDom.scss","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/_components/Rendering.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/OptionsGroup.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Select.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Slider.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/mixins/_inputRange.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Toggle.scss"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","@import '../node_modules/normalize.css/normalize.css';\n\n@import './abstract';\n@import './base';\n@import './chordMark';\n","html {\n\t/* switching to border-box model for all elements */\n\tbox-sizing: border-box;\n\n\t/* set base font-size to equiv \"10px\", which is adapted to rem unit */\n\tfont-size: 62.5%;\n\n\t/* IE9-IE11 math fixing. See http://bit.ly/1g4X0bX */\n\tfont-size: calc(1em * 0.625);\n}\n\nbody {\n\t@include font-size(base);\n\tfont-family: $font-family-base;\n\tline-height: $line-height-base;\n}\n","@use 'sass:math';\n\n// Source: Knacss\n\n// Font families\n$font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n\tOxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif !default; // system font stack\n$font-family-headings: 'Open Sans', sans-serif !default; // font for h1, h2.. h6\n$font-family-monospace: 'PT Mono', consolas, courier, monospace !default; // font for code and samples\n\n// Font sizes (1.6rem value is \"16px\" equivalent)\n$font-size-base: 1.6rem !default;\n\n$font-sizes: (\n\th1: (\n\t\tmobile: 2.8rem,\n\t\tdesktop: 3.2rem,\n\t),\n\th2: (\n\t\tmobile: 2.4rem,\n\t\tdesktop: 2.8rem,\n\t),\n\th3: (\n\t\tmobile: 2rem,\n\t\tdesktop: 2.4rem,\n\t),\n\th4: (\n\t\tmobile: 1.8rem,\n\t\tdesktop: 2rem,\n\t),\n\th5: (\n\t\tmobile: 1.6rem,\n\t\tdesktop: 1.8rem,\n\t),\n\th6: (\n\t\tmobile: 1.4rem,\n\t\tdesktop: 1.6rem,\n\t),\n\tbig: (\n\t\tmobile: 1.6rem,\n\t\tdesktop: 1.8rem,\n\t),\n\tbase: (\n\t\tmobile: 1.4rem,\n\t\tdesktop: $font-size-base,\n\t),\n\tnormal: (\n\t\tmobile: 1.2rem,\n\t\tdesktop: 1.4rem,\n\t),\n\tsmall: (\n\t\tmobile: 1rem,\n\t\tdesktop: 1.2rem,\n\t),\n\ttiny: (\n\t\tmobile: 0.8rem,\n\t\tdesktop: 1rem,\n\t),\n) !default;\n\n// Line heights\n$line-height-s: 1.3 !default;\n$line-height-base: 1.5 !default;\n$line-height-l: 1.7 !default;\n\n// Default margin-bottom\n$margin-bottom-base: 1rem !default;\n$headings-margin-bottom: math.div($margin-bottom-base, 2) !default;\n$paragraph-margin-bottom: $margin-bottom-base !default;\n\n// Font weights\n$weight-light: 200 !default;\n$weight-book: 300 !default;\n$weight-regular: 400 !default;\n$weight-medium: 500 !default;\n$weight-bold: 700 !default;\n","// Source: Knacss\n\n// font-size Mixin\n// compiles to font-size mobile + font-size desktop on small-plus devices\n// ex. h2 { @include font-size(h2);}\n@mixin font-size($elem) {\n\t$q: map-get($font-sizes, $elem);\n\t$mob: map-get($q, 'mobile');\n\t$desk: map-get($q, 'desktop');\n\tfont-size: $desk;\n}\n","@import './abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\t// editorPreview\n\t\teditor-line-txt: cv(dark-foreground, dark10),\n\t\teditor-sectionTitle-border: cv(dark-foreground, dark30),\n\t\teditor-chordSymbol-txt: cv(dark-foreground, dark10),\n\t\teditor-chordSymbol-bg: cv(dark-secondary, light10),\n\t\teditor-barSeparator-txt: cv(dark-foreground, dark30),\n\t\teditor-chordLineRepeat-txt: cv(dark-secondary, light20),\n\t\teditor-lineRepeat-txt: cv(dark-secondary, light20),\n\t\t// playRenderer\n\t\tplay-line-txt: cv(dark-foreground, dark10),\n\t\tplay-sectionTitle-border: cv(dark-foreground, fade),\n\t\tplay-chordSymbol-txt--base: cv(dark-foreground, dark10),\n\t\tplay-barSeparator-txt--base: cv(dark-foreground, dark30),\n\t\tplay-chordSymbol-txt--red: cv(dark-red),\n\t\tplay-barSeparator-txt--red: cv(dark-red, light10),\n\t\tplay-chordSymbol-txt--yellow: cv(dark-yellow, dark10),\n\t\tplay-barSeparator-txt--yellow: cv(dark-yellow, dark20),\n\t\tplay-chordSymbol-txt--green: cv(dark-green),\n\t\tplay-barSeparator-txt--green: cv(dark-green, light10),\n\t\tplay-chordSymbol-bg: cv(dark-secondary, light3),\n\t\t// printRenderer\n\t\tprint-song-txt: cv(dark-background),\n\t\tprint-chordSymbol-bg: cv(dark-foreground, dark5),\n\t\tprint-barSeparator-txt: cv(dark-foreground, dark30),\n\t\t// exportPreview\n\t\texport-song-txt: cv(dark-background),\n\t),\n);\n\n.cmLine {\n\tmargin: 0;\n\tfont-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console',\n\t\t'Lucida Sans Typewriter', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono',\n\t\t'Liberation Mono', 'Nimbus Mono L', Monaco, 'Courier New', Courier,\n\t\tmonospace;\n\twhite-space: pre-wrap;\n\n\t// editorPreview\n\t.editorPreview & {\n\t\tpadding: 0 $spacer-small;\n\t\t@include font-size(normal);\n\t}\n\t.exportPreview & {\n\t\t@include font-size(normal);\n\t}\n\n\t// playRenderer\n\t.playRenderer {\n\t\tpadding: 0 $spacer-small;\n\t}\n\t.playRenderer.cmLine--fontSize-5 & {\n\t\tfont-size: 9px;\n\t}\n\t.playRenderer.cmLine--fontSize-4 & {\n\t\tfont-size: 10px;\n\t}\n\t.playRenderer.cmLine--fontSize-3 & {\n\t\tfont-size: 11px;\n\t}\n\t.playRenderer.cmLine--fontSize-2 & {\n\t\tfont-size: 12px;\n\t}\n\t.playRenderer.cmLine--fontSize-1 & {\n\t\tfont-size: 13px;\n\t}\n\t.playRenderer.cmLine--fontSize0 & {\n\t\tfont-size: 14px;\n\t}\n\t.playRenderer.cmLine--fontSize1 & {\n\t\tfont-size: 15px;\n\t}\n\t.playRenderer.cmLine--fontSize2 & {\n\t\tfont-size: 16px;\n\t}\n\t.playRenderer.cmLine--fontSize3 & {\n\t\tfont-size: 17px;\n\t}\n\t.playRenderer.cmLine--fontSize4 & {\n\t\tfont-size: 18px;\n\t}\n\t.playRenderer.cmLine--fontSize5 & {\n\t\tfont-size: 19px;\n\t}\n\n\t// printPreview\n\t.printPreview & {\n\t\tcolor: black;\n\t}\n\n\t// exportRenderer\n\t.playRenderer {\n\t\tpadding: 0 $spacer-small;\n\t}\n}\n\n.cmLyricLine {\n\t// editorPreview\n\t.editorPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-line-txt');\n\t\t}\n\t}\n\t.editorPreview .cmLine--isFromSectionCopy &,\n\t.editorPreview .cmLine--isFromSectionRepeat & {\n\t\topacity: 0.5;\n\t}\n\n\t// playRenderer\n\t.playRenderer & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-line-txt');\n\t\t}\n\t}\n\n\t// printPreview\n\t.printPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('print-song-txt');\n\t\t}\n\t}\n}\n\n.cmChordLine {\n}\n\n.cmChordSymbol {\n\t// editorPreview\n\t.editorPreview & {\n\t\tfont-weight: $weight-bold;\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-chordSymbol-txt');\n\t\t\tbackground-color: themed('editor-chordSymbol-bg');\n\t\t}\n\t}\n\t.editorPreview .cmLine--isFromSectionRepeat &,\n\t.editorPreview .cmLine--isFromAutoRepeatChords &,\n\t.editorPreview .cmLine--isFromSectionCopy &,\n\t.editorPreview .cmLine--isFromChordLineRepeater & {\n\t\topacity: 0.3;\n\t\tbackground-color: transparent;\n\t}\n\n\t// playRenderer\n\t.playRenderer.cmChordSymbol--chordsColor-base & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-chordSymbol-txt--base');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-red & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-chordSymbol-txt--red');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-yellow & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-chordSymbol-txt--yellow');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-green & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-chordSymbol-txt--green');\n\t\t}\n\t}\n\t.playRenderer.cmChordLine--highlightChords & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('play-chordSymbol-bg');\n\t\t}\n\t}\n\n\t// printPreview\n\t.printPreview & {\n\t\tfont-weight: $weight-bold;\n\t}\n\t.printPreview.cmChordLine--highlightChords & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('print-chordSymbol-bg');\n\t\t}\n\t}\n\n\t// exportPreview\n\t.exportPreview & {\n\t\tfont-weight: normal;\n\t}\n}\n\n.cmBarSeparator {\n\t//margin: 0 10px;\n\n\t&:first-of-type {\n\t\tmargin-left: 0;\n\t}\n\n\t&:last-of-type {\n\t\tmargin-right: 0;\n\t}\n\n\t// editorPreview\n\t.editorPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-barSeparator-txt');\n\t\t}\n\t}\n\t.editorPreview .cmLine--isFromChordLineRepeater &,\n\t.editorPreview .cmLine--isFromSectionCopy &,\n\t.editorPreview .cmLine--isFromSectionRepeat & {\n\t\topacity: 0.3;\n\t}\n\n\t// playRenderer\n\t.playRenderer.cmChordSymbol--chordsColor-base & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-barSeparator-txt--base');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-red & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-barSeparator-txt--red');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-yellow & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-barSeparator-txt--yellow');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-green & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-barSeparator-txt--green');\n\t\t}\n\t}\n\n\t// printPreview\n\t.printPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('print-barSeparator-txt');\n\t\t}\n\t}\n}\n\n.cmSectionLabel {\n\t.editorPreview &,\n\t.playRenderer &,\n\t.printPreview & {\n\t\tdisplay: inline-block; // and not \"block\", so we don't have collapsing borders\n\t\twidth: 100%;\n\t\tmargin-bottom: $spacer-tiny;\n\t\tfont-weight: $weight-bold;\n\t\tfont-family: $font-family-base;\n\t\tfont-size: 90% !important;\n\t\ttext-transform: uppercase;\n\t\tletter-spacing: 0.1em;\n\t\tline-height: 2em;\n\t\tborder-bottom-style: dotted;\n\t\tborder-bottom-width: 1px;\n\t}\n\n\t// editorPreview\n\t.editorPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-line-txt');\n\t\t\tborder-color: themed('editor-sectionTitle-border');\n\t\t}\n\t}\n\t.editorPreview .cmLine--isFromSectionCopy &,\n\t.editorPreview .cmLine--isFromSectionRepeat & {\n\t\topacity: 0.3;\n\t}\n\n\t// playRenderer\n\t.playRenderer & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-line-txt');\n\t\t\tborder-color: themed('play-sectionTitle-border');\n\t\t}\n\t}\n\n\t// exportPreview\n\t.exportPreview & {\n\t\ttext-transform: uppercase;\n\t}\n}\n\n.cmTimeSignature {\n\t.editorPreview &,\n\t.playRenderer &,\n\t.printPreview & {\n\t\tfont-weight: $weight-bold;\n\t\tfont-family: $font-family-base;\n\t\tfont-size: 90%;\n\t\ttext-transform: uppercase;\n\t\tletter-spacing: 0.1em;\n\t\tline-height: 2em;\n\t}\n\n\t// editorPreview\n\t.editorPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-line-txt');\n\t\t}\n\t}\n\n\t// playRenderer\n\t.playRenderer & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-line-txt');\n\t\t}\n\t}\n}\n","// Source: https://medium.com/@dmitriy.borodiy/easy-color-theming-with-scss-bc38fd5734d1\n\n@mixin themify($themes: null) {\n\t@if (type-of($themes) != map) {\n\t\t@error \"Please supply a themes map to themify mixin\";\n\t} @else {\n\t\t@each $theme, $map in $themes {\n\t\t\t.theme-#{$theme} & {\n\t\t\t\t$theme-map: () !global;\n\t\t\t\t@each $key, $submap in $map {\n\t\t\t\t\t$value: map-get(map-get($themes, $theme), '#{$key}');\n\t\t\t\t\t$theme-map: map-merge(\n\t\t\t\t\t\t$theme-map,\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t$key: $value,\n\t\t\t\t\t\t)\n\t\t\t\t\t) !global;\n\t\t\t\t}\n\n\t\t\t\t@content;\n\t\t\t\t$theme-map: null !global;\n\t\t\t}\n\t\t}\n\t}\n}\n@function themed($key) {\n\t@return map-get($theme-map, $key);\n}\n","// Spacings\n$spacer-extra-tiny: 0.25rem !default;\n$spacer-tiny: 0.5rem !default;\n$spacer-tiny-plus: 0.7rem !default;\n$spacer-small: 1rem !default;\n$spacer-small-plus: 1.5rem !default;\n$spacer-medium: 2rem !default;\n$spacer-medium-plus: 3rem !default;\n$spacer-large: 4rem !default;\n$spacer-large-plus: 6rem !default;\n$spacer-extra-large: 8rem !default;\n$spacer-extra-large-plus: 12rem !default;\n$spacer-ultra-large: 16rem !default;\n$spacer-ultra-large-plus: 20rem !default;\n","@import '../../../scss/abstract';\n\n.ErrorBoundary {\n\tpadding: $spacer-medium;\n}\n","@import '../../../../../scss/abstract';\n@import '../themes';\n\nhtml,\nbody,\n#app {\n\theight: 100%;\n\tpadding: 0;\n}\n\n.appLayout-wrapper {\n\twidth: 100%;\n\theight: 100%;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n}\n\n// Sidebars\n\n.leftBar {\n\tflex-shrink: 0;\n\twidth: 15%;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t&.leftBar-isCollapsed {\n\t\twidth: 48px;\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('leftBar-txt');\n\t\tbackground-color: themed('leftBar-bg');\n\n\t\t&.leftBar-isCollapsed {\n\t\t\tborder-right: 1px solid themed('leftBar-border');\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: themed('leftBar-bgHover');\n\t\t\t}\n\t\t}\n\t}\n\n\t@media print {\n\t\tdisplay: none;\n\t}\n}\n\n.rightBar {\n\tflex-shrink: 0;\n\twidth: 15%;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t&.rightBar-isCollapsed {\n\t\twidth: 48px;\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('rightBar-txt');\n\t\tbackground-color: themed('rightBar-bg');\n\n\t\t&.rightBar-isCollapsed {\n\t\t\tborder-left: 1px solid themed('rightBar-border');\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: themed('rightBar-bgHover');\n\t\t\t}\n\t\t}\n\t}\n\n\t@media print {\n\t\tdisplay: none;\n\t}\n}\n\n.leftBar-content {\n\toverflow-y: scroll;\n\tflex: 1 1 auto;\n\n\t.leftBar-isCollapsed & {\n\t\tpadding: $spacer-tiny $spacer-small;\n\t\ttext-align: center;\n\t\tcursor: pointer;\n\t}\n}\n\n.rightBar-content {\n\toverflow-y: scroll;\n\tflex: 1 1 auto;\n\n\t.rightBar-isCollapsed & {\n\t\tpadding: $spacer-tiny $spacer-small;\n\t\ttext-align: center;\n\t\tcursor: pointer;\n\t}\n}\n\n.leftBar-collapser {\n\tflex: 0 0 12px;\n\tdisplay: flex;\n\tcursor: pointer;\n\n\t.leftBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('leftBar-collapser-bg');\n\t\tborder-right: 1px solid themed('leftBar-collapser-border');\n\n\t\t&:hover {\n\t\t\tbackground-color: themed('leftBar-collapser-bgHover');\n\t\t}\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('leftBar-collapser-txt');\n\t}\n}\n\n.leftBar-collapserIcon {\n\tflex: 1 1 auto;\n\talign-self: center;\n\tfont-weight: $weight-bold;\n\n\t.icon {\n\t\t@include font-size(small);\n\t}\n}\n\n.rightBar-collapser {\n\tflex: 0 0 12px;\n\tdisplay: flex;\n\tcursor: pointer;\n\n\t.rightBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('rightBar-collapser-bg');\n\t\tborder-left: 1px solid themed('rightBar-collapser-border');\n\n\t\t&:hover {\n\t\t\tbackground-color: themed('rightBar-collapser-bgHover');\n\t\t}\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('rightBar-collapser-txt');\n\t}\n}\n\n.rightBar-collapserIcon {\n\tflex: 1 1 auto;\n\talign-self: center;\n\tfont-weight: $weight-bold;\n\n\t.icon {\n\t\t@include font-size(small);\n\t}\n}\n\n// Main area\n\n.appLayout-main {\n\tflex-grow: 1;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-wrap: nowrap;\n}\n\n.appLayout-header {\n\tflex-shrink: 0;\n\n\t@include themify($themes) {\n\t\tcolor: themed('header-txt');\n\t\tbackground-color: themed('header-bg');\n\t\tborder-bottom: 2px solid themed('header-border');\n\t}\n\n\t@media print {\n\t\tdisplay: none;\n\t}\n}\n\n.appLayout-content {\n\toverflow-y: auto;\n\tflex-grow: 1;\n\n\t@media print {\n\t\toverflow-y: visible;\n\t}\n}\n\n.appLayout-footer {\n\t@include themify($themes) {\n\t\tcolor: themed('footer-txt');\n\t}\n\n\t@media print {\n\t\tdisplay: none;\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tlogo-txt: cv(dark-foreground),\n\t),\n);\n\n.logo-isExpanded {\n\tdisplay: flex;\n\tmargin: $spacer-tiny $spacer-small;\n\n\t.leftBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.logo-img {\n\tflex: 0 0 50px;\n\timg {\n\t\tmax-width: 100%;\n\t}\n}\n\n.logo-txt {\n\tflex: 1 1 auto;\n\tmargin-left: $spacer-tiny;\n\n\t@include font-size(base);\n\tfont-family: $font-family-headings;\n\tfont-weight: 700;\n\n\t@include themify($themes) {\n\t\tcolor: themed('logo-txt');\n\t}\n}\n","@import '../../../../../scss/abstract';\n@import '../themes';\n\n.mainNav-entries {\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: flex;\n\tjustify-content: center;\n\n\tlist-style-type: none;\n\t@include font-size(base);\n\tfont-family: $font-family-headings;\n\tfont-weight: 400;\n\tvertical-align: middle;\n}\n\n.mainNavEntry {\n\tdisplay: inline-block;\n\tpadding: $spacer-small $spacer-medium;\n\tcursor: default;\n\tfont-weight: bold;\n\n\t&:hover:not(.mainNavEntry-isActive) {\n\t\tcursor: pointer;\n\t}\n\n\t&:hover:not(.mainNavEntry-isDisabled):not(.mainNavEntry-isActive) {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('header-txtHover');\n\t\t\tbackground-color: themed('header-bgHover');\n\t\t}\n\t}\n\n\t&.mainNavEntry-isActive {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('header-txtActive');\n\t\t\tbackground-color: themed('header-bgActive');\n\t\t}\n\t}\n\n\t&.mainNavEntry-isDisabled {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('header-txtDisabled');\n\t\t\tbackground-color: themed('header-bgDisabled');\n\t\t\tcursor: not-allowed;\n\t\t}\n\t}\n}\n\n.mainNavEntry-icon {\n\t.icon {\n\t\tmargin-right: $spacer-tiny;\n\t\t@include font-size(normal);\n\t}\n}\n","@import '../../../scss/abstract';\n\n.icon {\n\tvertical-align: middle;\n}\n","@import '../../../../scss/abstract';\n\n.userGuide-isExpanded {\n\tmargin-left: $spacer-small;\n\n\t.rightBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.userGuide-isCollapsed {\n\tpadding: $spacer-small 0;\n\n\t.rightBar:not(.rightBar-isCollapsed) & {\n\t\tdisplay: none;\n\t}\n}\n","@import '../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\t// primary\n\t\tbutton-primary-txt: cv(dark-primary, dark10),\n\t\tbutton-primary-txtHover: cv(dark-secondary, dark20),\n\t\tbutton-primary-txtActive: cv(dark-primary),\n\t\tbutton-primary-txtDisabled: cv(dark-secondary, light10),\n\t\tbutton-primary-bg: cv(dark-accent),\n\t\tbutton-primary-bgHover: cv(dark-accent, light20),\n\t\tbutton-primary-bgActive: cv(dark-accent, light30),\n\t\tbutton-primary-bgDisabled: cv(dark-secondary, light20),\n\t\t// primary\n\t\tbutton-secondary-txt: cv(dark-secondary, dark10),\n\t\tbutton-secondary-txtHover: cv(dark-secondary, dark20),\n\t\tbutton-secondary-txtActive: cv(dark-primary),\n\t\tbutton-secondary-txtDisabled: cv(dark-secondary, light10),\n\t\tbutton-secondary-bg: cv(dark-foreground, dark30),\n\t\tbutton-secondary-bgHover: cv(dark-foreground, dark20),\n\t\tbutton-secondary-bgActive: cv(dark-foreground, dark10),\n\t\tbutton-secondary-bgDisabled: cv(dark-secondary, light20),\n\t),\n);\n\nbutton {\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground-color: transparent;\n}\n\n.Button {\n\tdisplay: inline-block;\n\tpadding: 10px 20px;\n\tfont-weight: bold;\n\ttext-transform: capitalize;\n\tmargin: 10px 20px 10px 0;\n\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n\n\t&:last-of-type {\n\t\tmargin-right: 0;\n\t}\n}\n\n.Button-primary:not(.Button-isDisabled) {\n\t@include themify($themes) {\n\t\tbackground-color: themed('button-primary-bg');\n\t\tcolor: themed('button-primary-txt');\n\t}\n\n\t&:hover {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('button-primary-txtHover');\n\t\t\tbackground-color: themed('button-primary-bgHover');\n\t\t}\n\t}\n\n\t&:active {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('button-primary-txtActive');\n\t\t\tbackground-color: themed('button-primary-bgActive');\n\t\t}\n\t}\n}\n\n.Button-primary.Button-isDisabled {\n\tcursor: not-allowed;\n\t@include themify($themes) {\n\t\tbackground-color: themed('button-primary-bgDisabled');\n\t\tcolor: themed('button-primary-txtDisabled');\n\t}\n}\n\n.Button-secondary:not(.Button-isDisabled) {\n\t@include themify($themes) {\n\t\tbackground-color: themed('button-secondary-bg');\n\t\tcolor: themed('button-secondary-txt');\n\t}\n\n\t&:hover {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('button-secondary-txtHover');\n\t\t\tbackground-color: themed('button-secondary-bgHover');\n\t\t}\n\t}\n\n\t&:active {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('button-secondary-txtActive');\n\t\t\tbackground-color: themed('button-secondary-bgActive');\n\t\t}\n\t}\n}\n\n.Button-secondary.Button-isDisabled {\n\tcursor: not-allowed;\n\t@include themify($themes) {\n\t\tbackground-color: themed('button-secondary-bgDisabled');\n\t\tcolor: themed('button-secondary-txtDisabled');\n\t}\n}\n","@import '../../../../scss/abstract';\n\n.versions-isExpanded {\n\tmargin: $spacer-large 0;\n\tpadding: 0 $spacer-small;\n\topacity: 0.5;\n\n\t@include font-size(tiny);\n\n\t.rightBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n","@import '../../../scss/abstract';\n@import '../themes';\n\n.sim-SongImporterModal_Container {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\twidth: 90%;\n\theight: 90%;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: stretch;\n\talign-content: stretch;\n\tflex-wrap: nowrap;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('modal-bg');\n\t\tborder: 1px solid themed('modal-border');\n\t\tcolor: themed('modal-txt');\n\t}\n}\n\n.sim-Header_Container {\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('header-bg');\n\t\tborder-bottom: 1px solid themed('header-border');\n\t\tcolor: themed('header-txt');\n\t}\n}\n\n.sim-Header_Title {\n\tflex: 1 1 auto;\n\tpadding: 20px;\n\t@include font-size(base);\n\tfont-weight: bolder;\n}\n\n.sim-Header_Actions {\n\tflex: 0 0 auto;\n\tpadding: 0 10px;\n}\n\n.sim-TwoColumns_Container {\n\tdisplay: flex;\n\talign-self: stretch;\n}\n\n.sim-TwoColumns_Container-autoHeight {\n\tflex: 0 1 100%;\n\tmin-height: 0; // necessary, otherwise content doesn't scroll!\n}\n\n.sim-Column_Container {\n\tflex: 1 1 50%;\n\talign-self: stretch;\n\tpadding: 0 10px;\n\n\t&:first-child {\n\t\tpadding-right: 5px;\n\t}\n\t&:last-child {\n\t\tpadding-left: 5px;\n\t}\n}\n\n.sim-Input_Header {\n\theight: 20px;\n\ttext-transform: uppercase;\n\tpadding: 2px;\n\ttext-align: center;\n\t@include font-size(small);\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('inputHeader-bg');\n\t\tcolor: themed('inputHeader-txt');\n\t}\n}\n\n.sim-Input_Textarea {\n\tbox-sizing: border-box;\n\tpadding: 10px;\n\twidth: 100%;\n\theight: calc(100% - 24px - 10px);\n\tmax-height: calc(100% - 24px - 10px);\n\toverflow-y: scroll;\n\tresize: none;\n\tmargin: 0;\n\tbackground-color: transparent;\n\tborder: 0;\n\toutline: none;\n\n\tfont-family: $font-family-monospace;\n\t@include font-size(small);\n\tline-height: 1.5rem;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('input-bg');\n\t\tcolor: themed('input-txt');\n\t}\n}\n\n.sim-Input_Textarea-Disabled {\n\topacity: 0.5;\n}\n\n.sim-Preview_Container {\n\tbox-sizing: border-box;\n\n\tfont-family: $font-family-monospace;\n\t@include font-size(small);\n\twhite-space: pre-wrap;\n\theight: calc(100% - 24px - 10px);\n\tmax-height: calc(100% - 24px - 10px);\n\toverflow-y: scroll;\n\tpadding: 10px;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('preview-bg');\n\t}\n}\n\n.sim-Preview_Error {\n\tpadding: 10px;\n\t@include themify($themes) {\n\t\tcolor: themed('previewError-txt');\n\t\tbackground-color: themed('previewError-bg');\n\t}\n}\n\n.sim-InputFile_Input {\n\t// https://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/\n\twidth: 0.1px;\n\theight: 0.1px;\n\topacity: 0;\n\toverflow: hidden;\n\tposition: absolute;\n\tz-index: -1;\n}\n\n.sim-InputFormat {\n\tpadding: 10px 0;\n}\n\n.sim-InputFormat_Entry {\n\tdisplay: inline-block;\n\tmargin: 0 10px;\n\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n}\n\n.sim-InputFormat_Label {\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n}\n\n.sim-InputFormat_Entry-Disabled,\n.sim-InputFormat_Label-Disabled {\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\topacity: 0.5;\n}\n","@import '../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tmodal-bg: cv(dark-secondary, dark5),\n\t\tmodal-border: cv(dark-foreground, dark20),\n\t\tmodal-txt: cv(dark-foreground),\n\t),\n);\n\n.mod-ModalContainer {\n\tz-index: $zindex-modal;\n\theight: 100%;\n\twidth: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n\n.mod-Overlay {\n\theight: 100%;\n\twidth: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\topacity: 0.7;\n\tbackground-color: black;\n}\n\n.mod-ContentContainer {\n}\n\n.mod-ModalConfirmContainer {\n\tz-index: $zindex-modal;\n\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\twidth: auto;\n\theight: auto;\n\n\tpadding: 10px 20px;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('modal-bg');\n\t\tborder: 1px solid themed('modal-border');\n\t\tcolor: themed('modal-txt');\n\t}\n}\n\n.mod-ModalConfirmButtons {\n\ttext-align: center;\n}\n","@import '../../../scss/abstract';\n@import '../themes';\n\n.fileManager-isExpanded {\n\t@include font-size(small);\n\n\t.leftBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.fileManager-isCollapsed {\n\tpadding: $spacer-small 0;\n\t.leftBar:not(.leftBar-isCollapsed) & {\n\t\tdisplay: none;\n\t}\n}\n\n.fileManager-actionsList {\n\tpadding: $spacer-small;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\t@include themify($themes) {\n\t\tbackground-color: themed('actions-bg');\n\t}\n}\n\n.fileManagerAction {\n\tflex: 0 1 auto;\n\tpadding: $spacer-tiny;\n\tmargin-right: $spacer-tiny;\n\twhite-space: nowrap;\n\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\n\t&:hover:not(.fileManagerAction-isDisabled) {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('action-bgHover');\n\t\t}\n\t\tcursor: pointer;\n\t}\n}\n\n.fileManagerAction-isDisabled {\n\topacity: 0.5;\n}\n\n.fileManagerAction-icon {\n\t.icon {\n\t\t@include font-size(normal);\n\t}\n}\n\n.fileManager-entriesList {\n\tpadding-left: 0;\n\tlist-style: none;\n}\n\n.fileManagerEntry {\n\tcursor: pointer;\n\n\t&:hover {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('fileEntry-bgHover');\n\t\t}\n\t}\n\n\t&.fileManagerEntry-isSelected {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('fileEntry-bgActive');\n\t\t}\n\t}\n}\n\n.fileManagerEntry-input {\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tpadding: $spacer-extra-tiny $spacer-small;\n\n\tbackground-color: transparent;\n\tborder: none;\n\tcursor: pointer;\n\toutline: none;\n\t@include themify($themes) {\n\t\tcolor: themed('fileEntry-txt');\n\t}\n\n\t.fileManagerEntry-isSelected & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('fileEntry-txtActive');\n\t\t}\n\t}\n\n\t.fileManagerEntry-isRenamed & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('fileEntry-bgRenamed');\n\t\t\tcolor: themed('fileEntry-txtRenamed');\n\t\t}\n\t\tcursor: text;\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\teditorSrc-bg: cv(dark-secondary, dark10),\n\t\teditorPreview-bg: cv(dark-secondary),\n\t),\n);\n\n.songEditor {\n\twidth: 100%;\n\theight: 100%;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t@include font-size(small);\n}\n\n.songEditor-source {\n\tflex: 0 1 50%;\n\tdisplay: flex;\n\toverflow-y: scroll;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('editorSrc-bg');\n\t}\n}\n\n.songEditor-preview {\n\tflex: 0 1 50%;\n\tpadding: $spacer-small 0;\n\n\toverflow-y: scroll;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('editorPreview-bg');\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\teditorPreview-txt: cv(dark-foreground, dark10),\n\t),\n);\n\n.editorPreview {\n\t@include themify($themes) {\n\t\tcolor: themed('editorPreview-txt');\n\t\tbackground-color: themed('editorPreview-bg');\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\teditor-txt: cv(dark-foreground, dark10),\n\t),\n);\n\n.prosemirrorWrapper {\n\tflex: 1 1 auto;\n\tpadding: $spacer-small 0;\n}\n\n.ProseMirror {\n\theight: 100%;\n\n\toutline: none;\n\tfont-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console',\n\t\t'Lucida Sans Typewriter', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono',\n\t\t'Liberation Mono', 'Nimbus Mono L', Monaco, 'Courier New', Courier,\n\t\tmonospace;\n\t@include font-size(normal);\n\n\t@include themify($themes) {\n\t\tcolor: themed('editor-txt');\n\t}\n\n\tp {\n\t\tmargin: 0;\n\t\tpadding: 0 $spacer-small;\n\t}\n}\n",".ProseMirror {\n position: relative;\n}\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n white-space: break-spaces;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n}\n\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n\n.ProseMirror li {\n position: relative;\n}\n\n.ProseMirror-hideselection *::selection { background: transparent; }\n.ProseMirror-hideselection *::-moz-selection { background: transparent; }\n.ProseMirror-hideselection { caret-color: transparent; }\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf;\n}\n\n/* Make sure li selections wrap around markers */\n\nli.ProseMirror-selectednode {\n outline: none;\n}\n\nli.ProseMirror-selectednode:after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px; top: -2px; bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n}\n\n/* Protect against generic img rules */\n\nimg.ProseMirror-separator {\n display: inline !important;\n border: none !important;\n margin: 0 !important;\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tsong-txt: cv(dark-background),\n\t\tsong-bg: cv(dark-foreground),\n\t),\n);\n\n.exportPreview {\n\tpadding: $spacer-small;\n\t@include themify($themes) {\n\t\tbackground-color: themed('song-bg');\n\t}\n}\n\n.exp-SongRenderer {\n\tp {\n\t\tmargin: 0;\n\t\tfont-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console',\n\t\t\t'Lucida Sans Typewriter', 'DejaVu Sans Mono',\n\t\t\t'Bitstream Vera Sans Mono', 'Liberation Mono', 'Nimbus Mono L',\n\t\t\tMonaco, 'Courier New', Courier, monospace;\n\t\twhite-space: pre-wrap;\n\n\t\t@include font-size(normal);\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('song-txt');\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tplayRenderer-bg: cv(dark-secondary, dark10),\n\t),\n);\n\n// Those wrapper are used so the columned div can use height: 100% inside a div with margins\n// We use the trick with an \"absolute\" positioned that fills the available height\n.playRendererWrapper1 {\n\tposition: relative; // needs to be relative so the \"absolute\" trick works to fill the height\n\theight: 100%;\n\toverflow-y: scroll;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('playRenderer-bg');\n\t}\n}\n.playRendererWrapper2 {\n\tmargin: $spacer-small;\n\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n}\n\n.playRenderer--columns-1 {\n\tcolumn-count: 1;\n}\n.playRenderer--columns-2 {\n\tcolumn-count: 2;\n\tcolumn-fill: auto;\n\theight: 100%;\n}\n.playRenderer--columns-3 {\n\tcolumn-count: 3;\n\tcolumn-fill: auto;\n\theight: 100%;\n}\n.playRenderer--columns-4 {\n\tcolumn-count: 4;\n\tcolumn-fill: auto;\n\theight: 100%;\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tsong-txt: cv(dark-background),\n\t\tsong-bg: cv(dark-foreground),\n\t\tdesktop-bg: cv(dark-secondary),\n\t),\n);\n\n.printPreview {\n\toverflow-y: scroll;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('desktop-bg');\n\t}\n\n\t@media print {\n\t\tbackground-color: white !important;\n\t\toverflow-y: auto;\n\t}\n}\n\n.printPreview-page {\n\t// see size and font-size definitions below\n\n\tposition: relative;\n\tmargin: $spacer-medium auto;\n\tbackground-color: white;\n\n\t@media print {\n\t\tmargin: 0;\n\t\tpage-break-after: auto;\n\t}\n}\n\n// This wrapper is used for the page padding and to fill all available height\n.printPreview-pageContentWrapper {\n\t// see padding definitions below\n\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tbottom: 0;\n\tright: 0;\n}\n\n// Flex container for header + columnsWrapper\n.printPreview-pageContent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-wrap: nowrap;\n\n\theight: 100%;\n}\n\n.printPreview-pageHeader {\n\t@include font-size(big);\n\tfont-weight: $weight-bold;\n\n\tmargin-bottom: $spacer-small;\n}\n\n// flex container for columns\n.printPreview-pageColumnWrapper {\n\tflex: 1;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n}\n\n.printPreview-pageColumn {\n\tflex: 1 1 0;\n\tmargin: 0 $spacer-tiny-plus;\n\n\t&:first-of-type {\n\t\tmargin-left: 0;\n\t}\n\n\t&:last-of-type {\n\t\tmargin-right: 0;\n\t}\n}\n\n// Document Size definitions\n.printPreview-page--a4 {\n\twidth: 210mm;\n\theight: 297mm;\n}\n\n.printPreview-page--booxmax2pro {\n\twidth: 698px;\n\theight: 930px;\n}\n\n// Margin definitions\n.printPreview-pageContentWrapper--padding1 {\n\tpadding: 3mm;\n}\n.printPreview-pageContentWrapper--padding2 {\n\tpadding: 6mm;\n}\n.printPreview-pageContentWrapper--padding3 {\n\tpadding: 9mm;\n}\n.printPreview-pageContentWrapper--padding4 {\n\tpadding: 12mm;\n}\n.printPreview-pageContentWrapper--padding5 {\n\tpadding: 15mm;\n}\n\n// Font size definitions\n.printPreview-page--font-5 {\n\tfont-size: 7px;\n}\n.printPreview-page--font-4 {\n\tfont-size: 8px;\n}\n.printPreview-page--font-3 {\n\tfont-size: 9px;\n}\n.printPreview-page--font-2 {\n\tfont-size: 10px;\n}\n.printPreview-page--font-1 {\n\tfont-size: 11px;\n}\n.printPreview-page--font0 {\n\tfont-size: 12px;\n}\n.printPreview-page--font1 {\n\tfont-size: 13px;\n}\n.printPreview-page--font2 {\n\tfont-size: 14px;\n}\n.printPreview-page--font3 {\n\tfont-size: 15px;\n}\n.printPreview-page--font4 {\n\tfont-size: 16px;\n}\n.printPreview-page--font5 {\n\tfont-size: 17px;\n}\n",".measuring-node {\n\tvisibility: hidden;\n\tposition: absolute;\n\tz-index: -1;\n}\n","@import '../../../../scss/abstract';\n\n.renderingOptionsPanel-isExpanded {\n\t.rightBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.renderingOptionsPanel-isCollapsed {\n\tpadding: $spacer-small 0;\n\n\t.rightBar:not(.rightBar-isCollapsed) & {\n\t\tdisplay: none;\n\t}\n}\n","@import '../../../../../scss/abstract';\n@import '../_themes.scss';\n\n.sb-optionsGroup {\n\tpadding-top: $spacer-medium;\n\n\t&:first-of-type {\n\t\tpadding-top: 0;\n\t}\n}\n\n.sb-optionsGroup-title {\n\tpadding: $spacer-tiny $spacer-small $spacer-tiny $spacer-tiny;\n\n\tdisplay: flex;\n\n\t@include font-size(normal);\n\tfont-weight: $weight-bold;\n\n\t@include themify($themes) {\n\t\tborder-bottom: 2px solid themed('optionsGroup-border');\n\t}\n\n\t.sb-optionsGroup-isNotInteractable & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('option-isDisabled');\n\t\t}\n\t}\n\n\t.sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) &:hover {\n\t\tcursor: pointer;\n\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('optionsGroup-bgHover');\n\t\t}\n\t}\n}\n\n.sb-optionsGroup-label {\n\tflex: 1 1 auto;\n}\n\n.sb-optionsGroup-toggle {\n\tflex: 0 0 auto;\n}\n\n.sb-optionsGroup-content {\n}\n\n.sb-optionsGroup-iconTitle {\n\t.icon {\n\t\t@include font-size(base);\n\t}\n}\n\n.sb-optionsGroup-iconToggle {\n\t.icon {\n\t\t@include font-size(big);\n\t}\n}\n","@import '../../../../../scss/abstract';\n@import '../_themes.scss';\n\n.sb-optionSelect {\n\t@include font-size(small);\n\n\tpadding: $spacer-tiny $spacer-small-plus $spacer-tiny $spacer-small;\n\n\t@include themify($themes) {\n\t\tborder-bottom: 1px dotted themed('option-border');\n\t}\n\n\t.sb-optionsGroup & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('optionsGroup-option-bg');\n\t\t}\n\t}\n\n\t&.sb-optionSelect-isNotInteractable {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('option-isDisabled');\n\t\t}\n\t}\n\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\n\t&:hover:not(.sb-optionSelect-isNotInteractable) {\n\t\tcursor: pointer;\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('option-bgHover');\n\t\t}\n\t}\n}\n\n.sb-optionSelect-title {\n\tdisplay: flex;\n}\n\n.sb-optionSelect-desc {\n\tflex: 1 1 auto;\n}\n\n.sb-optionSelect-toggle {\n\tflex: 0 0 auto;\n}\n\n.sb-optionSelect-icon {\n\t.icon {\n\t\t@include font-size(big);\n\t}\n}\n\n.sb-optionSelectChoice-activeLabel {\n\topacity: 0.5;\n}\n\n.sb-optionSelectChoice {\n\tpadding-top: $spacer-tiny;\n\tdisplay: flex;\n\n\t&:hover:not(.sb-optionSelectChoice-isNotInteractable) {\n\t\ttext-decoration: underline;\n\t\tcursor: pointer;\n\t}\n}\n\n.sb-optionSelectChoice-isSelected {\n\tfont-weight: $weight-bold;\n}\n\n.sb-optionSelectChoice-check {\n\tflex: 0 0 20px;\n}\n\n.sb-optionSelectChoice-checkIcon {\n\t.icon {\n\t\t@include font-size(small);\n\t}\n}\n\n.sb-optionSelectChoice-label {\n\tflex: 1 1 auto;\n}\n","@import '../../../../../scss/abstract';\n@import '../_themes.scss';\n\n.sb-optionSlider {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t@include font-size(small);\n\n\tpadding: $spacer-tiny $spacer-small-plus $spacer-tiny $spacer-small;\n\n\t@include themify($themes) {\n\t\tborder-bottom: 1px dotted themed('option-border');\n\t}\n\n\t.sb-optionsGroup & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('optionsGroup-option-bg');\n\t\t}\n\t}\n\n\t&.sb-optionSlider-isNotInteractable {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('option-isDisabled');\n\t\t}\n\t}\n\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\n\t&:hover:not(.sb-optionSlider-isNotInteractable) {\n\t\tcursor: pointer;\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('option-bgHover');\n\t\t}\n\t}\n}\n\n.sb-optionSlider-desc {\n\tflex: 1 1 auto;\n}\n\n.sb-optionSlider-value {\n\tflex: 0 0 auto;\n\tvertical-align: middle;\n\n\t@include font-size(small);\n}\n\n.sb-optionSlider-range {\n\tflex: 1 1 100%;\n\n\tinput[type='range'] {\n\t\t@include themify($themes) {\n\t\t\t@include input-type-range(\n\t\t\t\t$thumb-color: themed('range-thumb'),\n\t\t\t\t$track-color: themed('range-track')\n\t\t\t);\n\t\t}\n\n\t\t&:disabled {\n\t\t\topacity: 0.35;\n\t\t\tcursor: not-allowed !important;\n\t\t}\n\t}\n}\n","// Adapted from https://github.com/Jimdo/range-slider-sass\n@use 'sass:math';\n\n@mixin shadow($shadow-size, $shadow-blur, $shadow-color) {\n\tbox-shadow: $shadow-size $shadow-size $shadow-blur $shadow-color,\n\t\t0 0 $shadow-size lighten($shadow-color, 5%);\n}\n\n@mixin track($track-width, $track-height) {\n\twidth: $track-width;\n\theight: $track-height;\n\tcursor: pointer;\n\tanimation: 0.2s;\n}\n\n@mixin thumb(\n\t$thumb-width,\n\t$thumb-height,\n\t$thumb-border-width,\n\t$thumb-border-color,\n\t$thumb-radius,\n\t$thumb-color\n) {\n\t//@include shadow($thumb-shadow-size, $thumb-shadow-blur, $thumb-shadow-color);\n\twidth: $thumb-width;\n\theight: $thumb-height;\n\tcursor: pointer;\n\tborder: $thumb-border-width solid $thumb-border-color;\n\tborder-radius: $thumb-radius;\n\tbackground: $thumb-color;\n}\n\n@mixin input-type-range(\n\t$thumb-color: red,\n\t$thumb-radius: 0,\n\t$thumb-height: 10px,\n\t$thumb-width: 15px,\n\t$thumb-shadow-size: 0,\n\t$thumb-shadow-blur: 0,\n\t$thumb-shadow-color: rgba(0, 0, 0, 0),\n\t$thumb-border-width: 0,\n\t$thumb-border-color: black,\n\t$track-color: blue,\n\t$track-radius: 0,\n\t$track-width: 100%,\n\t$track-height: 10px,\n\t$track-shadow-size: 0,\n\t$track-shadow-blur: 0,\n\t$track-shadow-color: rgba(0, 0, 0, 0),\n\t$track-border-width: 0,\n\t// might not be taken into account everywhere, see belo\n\t$track-border-color: black\n) {\n\t-webkit-appearance: none;\n\twidth: $track-width;\n\tbackground: transparent;\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&::-webkit-slider-runnable-track {\n\t\t@include track($track-width, $track-height);\n\t\t//@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);\n\t\tborder: $track-border-width solid $track-border-color;\n\t\tborder-radius: $track-radius;\n\t\tbackground: $track-color;\n\t}\n\n\t&::-webkit-slider-thumb {\n\t\t@include thumb(\n\t\t\t$thumb-width,\n\t\t\t$thumb-height,\n\t\t\t$thumb-border-width,\n\t\t\t$thumb-border-color,\n\t\t\t$thumb-radius,\n\t\t\t$thumb-color\n\t\t);\n\t\t-webkit-appearance: none;\n\t\t//margin-top: ((-#{$track-border-width} * 2) + $track-height) / (2 - $thumb-height / 2);\n\t\t// the build fails with $track-border-width = 0\n\t\tmargin-top: math.div(($track-height), (2 - math.div($thumb-height, 2)));\n\t}\n\n\t&:focus::-webkit-slider-runnable-track {\n\t\tbackground: $track-color;\n\t}\n\n\t&::-moz-range-track {\n\t\t@include track($track-width, $track-height);\n\t\t//@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);\n\t\tborder: $track-border-width solid $track-border-color;\n\t\tborder-radius: $track-radius;\n\t\tbackground: $track-color;\n\t}\n\n\t&::-moz-range-thumb {\n\t\t@include thumb(\n\t\t\t$thumb-width,\n\t\t\t$thumb-height,\n\t\t\t$thumb-border-width,\n\t\t\t$thumb-border-color,\n\t\t\t$thumb-radius,\n\t\t\t$thumb-color\n\t\t);\n\t}\n\n\t&::-ms-track {\n\t\t@include track($track-width, $track-height);\n\t\tcolor: transparent;\n\t\tborder-width: $thumb-width 0;\n\t\tborder-color: transparent;\n\t\tbackground: transparent;\n\t}\n\n\t&::-ms-fill-lower {\n\t\t//@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);\n\t\tborder: $track-border-width solid $track-border-color;\n\t\tborder-radius: $track-radius * 2;\n\t\tbackground: $track-color;\n\t}\n\n\t&::-ms-fill-upper {\n\t\t//@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);\n\t\tborder: $track-border-width solid $track-border-color;\n\t\tborder-radius: $track-radius * 2;\n\t\tbackground: $track-color;\n\t}\n\n\t&::-ms-thumb {\n\t\t@include thumb(\n\t\t\t$thumb-width,\n\t\t\t$thumb-height,\n\t\t\t$thumb-border-width,\n\t\t\t$thumb-border-color,\n\t\t\t$thumb-radius,\n\t\t\t$thumb-color\n\t\t);\n\t}\n\n\t&:focus::-ms-fill-lower {\n\t\tbackground: $track-color;\n\t}\n\n\t&:focus::-ms-fill-upper {\n\t\tbackground: $track-color;\n\t}\n\n\t&:disabled::-moz-range-track,\n\t&:disabled::-moz-range-thumb {\n\t\tcursor: default;\n\t}\n\n\t&:disabled::-webkit-slider-runnable-track,\n\t&:disabled::-webkit-slider-thumb {\n\t\tcursor: default;\n\t}\n\n\t&:disabled::-ms-track,\n\t&:disabled::-ms-thumb {\n\t\tcursor: default;\n\t}\n}\n","@import '../../../../../scss/abstract';\n@import '../_themes.scss';\n\n.sb-optionToggle {\n\tdisplay: flex;\n\n\t@include font-size(small);\n\n\tpadding: $spacer-tiny $spacer-small-plus $spacer-tiny $spacer-small;\n\n\t@include themify($themes) {\n\t\tborder-bottom: 1px dotted themed('option-border');\n\t}\n\n\t.sb-optionsGroup & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('optionsGroup-option-bg');\n\t\t}\n\t}\n\n\t&.sb-optionToggle-isNotInteractable {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('option-isDisabled');\n\t\t}\n\t}\n\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\n\t&:hover:not(.sb-optionToggle-isNotInteractable) {\n\t\tcursor: pointer;\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('option-bgHover');\n\t\t}\n\t}\n}\n\n.sb-optionToggle-desc {\n\tflex: 1 1 auto;\n}\n\n.sb-optionToggle-icon {\n\tflex: 0 0 auto;\n}\n\n.sb-optionToggle-isOff {\n\t.icon {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('toggle-icon-isOff');\n\t\t}\n\t}\n}\n\n.sb-optionToggle-icon {\n\t.icon {\n\t\t@include font-size(big);\n\t}\n\n\t.sb-optionToggle-isOff & {\n\t\t.icon {\n\t\t\t@include themify($themes) {\n\t\t\t\tcolor: themed('toggle-icon-isOff');\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/packages/chord-charts-studio/build/css/main.493c19c5bf42afc6ee19.css b/packages/chord-charts-studio/build/css/main.493c19c5bf42afc6ee19.css deleted file mode 100644 index 67acbc95..00000000 --- a/packages/chord-charts-studio/build/css/main.493c19c5bf42afc6ee19.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}html{box-sizing:border-box;font-size:62.5%;font-size:.625em}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:1.6rem;line-height:1.5}.cmLine{font-family:PT Mono,consolas,courier,monospace;margin:0;white-space:pre-wrap}.editorPreview .cmLine{font-size:1.2rem;padding:0 1rem}.exportPreview .cmLine{font-size:1.2rem}.playRenderer.cmLine--fontSize-5 .cmLine{font-size:7px}.playRenderer.cmLine--fontSize-4 .cmLine{font-size:8px}.playRenderer.cmLine--fontSize-3 .cmLine{font-size:9px}.playRenderer.cmLine--fontSize-2 .cmLine{font-size:10px}.playRenderer.cmLine--fontSize-1 .cmLine{font-size:11px}.playRenderer.cmLine--fontSize0 .cmLine{font-size:12px}.playRenderer.cmLine--fontSize1 .cmLine{font-size:13px}.playRenderer.cmLine--fontSize2 .cmLine{font-size:14px}.playRenderer.cmLine--fontSize3 .cmLine{font-size:15px}.playRenderer.cmLine--fontSize4 .cmLine{font-size:16px}.playRenderer.cmLine--fontSize5 .cmLine{font-size:17px}.printPreview .cmLine{color:#000}.cmLine .playRenderer{padding:0 1rem}.theme-dark .editorPreview .cmLyricLine{color:#dbdbdb}.editorPreview .cmLine--isFromSectionCopy .cmLyricLine,.editorPreview .cmLine--isFromSectionRepeat .cmLyricLine{opacity:.5}.theme-dark .playRenderer .cmLyricLine{color:#dbdbdb}.theme-dark .printPreview .cmLyricLine{color:#303846}.editorPreview .cmChordSymbol{font-weight:700}.theme-dark .editorPreview .cmChordSymbol{background-color:#404c4e;color:#dbdbdb}.editorPreview .cmLine--isFromAutoRepeatChords .cmChordSymbol,.editorPreview .cmLine--isFromChordLineRepeater .cmChordSymbol,.editorPreview .cmLine--isFromSectionCopy .cmChordSymbol,.editorPreview .cmLine--isFromSectionRepeat .cmChordSymbol{background-color:transparent;opacity:.3}.theme-dark .playRenderer.cmChordSymbol--chordsColor-base .cmChordSymbol{color:#dbdbdb}.theme-dark .playRenderer.cmChordSymbol--chordsColor-red .cmChordSymbol{color:#ff7060}.theme-dark .playRenderer.cmChordSymbol--chordsColor-yellow .cmChordSymbol{color:#ecab06}.theme-dark .playRenderer.cmChordSymbol--chordsColor-green .cmChordSymbol{color:#74f14e}.theme-dark .playRenderer.cmChordLine--highlightChords .cmChordSymbol{background-color:#30393a}.printPreview .cmChordSymbol{font-weight:700}.theme-dark .printPreview.cmChordLine--highlightChords .cmChordSymbol{background-color:#e7e7e7}.exportPreview .cmChordSymbol{font-weight:400}.cmBarSeparator:first-of-type{margin-left:0}.cmBarSeparator:last-of-type{margin-right:0}.theme-dark .editorPreview .cmBarSeparator{color:#a8a8a8}.editorPreview .cmLine--isFromChordLineRepeater .cmBarSeparator,.editorPreview .cmLine--isFromSectionCopy .cmBarSeparator,.editorPreview .cmLine--isFromSectionRepeat .cmBarSeparator{opacity:.3}.theme-dark .playRenderer.cmChordSymbol--chordsColor-base .cmBarSeparator{color:#a8a8a8}.theme-dark .playRenderer.cmChordSymbol--chordsColor-red .cmBarSeparator{color:#ff9e93}.theme-dark .playRenderer.cmChordSymbol--chordsColor-yellow .cmBarSeparator{color:#bb8704}.theme-dark .playRenderer.cmChordSymbol--chordsColor-green .cmBarSeparator{color:#99f57d}.theme-dark .printPreview .cmBarSeparator{color:#a8a8a8}.editorPreview .cmSectionLabel,.playRenderer .cmSectionLabel,.printPreview .cmSectionLabel{border-bottom-style:dotted;border-bottom-width:1px;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:90%!important;font-weight:700;letter-spacing:.1em;line-height:2em;margin-bottom:.5rem;text-transform:uppercase;width:100%}.theme-dark .editorPreview .cmSectionLabel{border-color:#a8a8a8;color:#dbdbdb}.editorPreview .cmLine--isFromSectionCopy .cmSectionLabel,.editorPreview .cmLine--isFromSectionRepeat .cmSectionLabel{opacity:.3}.theme-dark .playRenderer .cmSectionLabel{border-color:hsla(0,0%,96%,.7);color:#dbdbdb}.exportPreview .cmSectionLabel{text-transform:uppercase}.editorPreview .cmTimeSignature,.playRenderer .cmTimeSignature,.printPreview .cmTimeSignature{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:90%;font-weight:700;letter-spacing:.1em;line-height:2em;text-transform:uppercase}.theme-dark .editorPreview .cmTimeSignature,.theme-dark .playRenderer .cmTimeSignature{color:#dbdbdb}.ErrorBoundary{padding:2rem}#app,body,html{height:100%;padding:0}.appLayout-wrapper{height:100%;width:100%}.appLayout-wrapper,.leftBar{display:flex;flex-direction:row;flex-wrap:nowrap}.leftBar{flex-shrink:0;width:15%}.leftBar.leftBar-isCollapsed{width:48px}.theme-light .leftBar.leftBar-isCollapsed{border-right:1px solid}.theme-dark .leftBar{background-color:#303846;color:#f4f4f4}.theme-dark .leftBar.leftBar-isCollapsed{border-right:1px solid #dbdbdb}.theme-dark .leftBar.leftBar-isCollapsed:hover{background-color:#455064}@media print{.leftBar{display:none}}.rightBar{display:flex;flex-direction:row;flex-shrink:0;flex-wrap:nowrap;width:15%}.rightBar.rightBar-isCollapsed{width:48px}.theme-light .rightBar.rightBar-isCollapsed{border-left:1px solid}.theme-dark .rightBar{background-color:#303846;color:#f4f4f4}.theme-dark .rightBar.rightBar-isCollapsed{border-left:1px solid #dbdbdb}.theme-dark .rightBar.rightBar-isCollapsed:hover{background-color:#455064}@media print{.rightBar{display:none}}.leftBar-content{flex:1 1 auto;overflow-y:scroll}.leftBar-isCollapsed .leftBar-content{cursor:pointer;padding:.5rem 1rem;text-align:center}.rightBar-content{flex:1 1 auto;overflow-y:scroll}.rightBar-isCollapsed .rightBar-content{cursor:pointer;padding:.5rem 1rem;text-align:center}.leftBar-collapser{cursor:pointer;display:flex;flex:0 0 12px}.leftBar-isCollapsed .leftBar-collapser{display:none}.theme-light .leftBar-collapser{border-right:1px solid}.theme-dark .leftBar-collapser{background-color:#405a73;border-right:1px solid #a8a8a8}.theme-dark .leftBar-collapser:hover{background-color:#537393}.theme-dark .leftBar-collapser{color:#f4f4f4}.leftBar-collapserIcon{align-self:center;flex:1 1 auto;font-weight:700}.leftBar-collapserIcon .icon{font-size:1.2rem}.rightBar-collapser{cursor:pointer;display:flex;flex:0 0 12px}.rightBar-isCollapsed .rightBar-collapser{display:none}.theme-light .rightBar-collapser{border-left:1px solid}.theme-dark .rightBar-collapser{background-color:#405a73;border-left:1px solid #a8a8a8}.theme-dark .rightBar-collapser:hover{background-color:#537393}.theme-dark .rightBar-collapser{color:#f4f4f4}.rightBar-collapserIcon{align-self:center;flex:1 1 auto;font-weight:700}.rightBar-collapserIcon .icon{font-size:1.2rem}.appLayout-main{display:flex;flex-direction:column;flex-grow:1;flex-wrap:nowrap}.appLayout-header{flex-shrink:0}.theme-light .appLayout-header{border-bottom:2px solid}.theme-dark .appLayout-header{background-color:#303846;border-bottom:2px solid #1b2028;color:hsla(0,0%,96%,.7)}@media print{.appLayout-header{display:none}}.appLayout-content{flex-grow:1;overflow-y:auto}@media print{.appLayout-content{overflow-y:visible}}.theme-dark .appLayout-footer{color:#a8a8a8}@media print{.appLayout-footer{display:none}}.logo-isExpanded{display:flex;margin:.5rem 1rem}.leftBar-isCollapsed .logo-isExpanded{display:none}.logo-img{flex:0 0 50px}.logo-img img{max-width:100%}.logo-txt{flex:1 1 auto;font-family:Open Sans,sans-serif;font-size:1.6rem;font-weight:700;margin-left:.5rem}.theme-dark .logo-txt{color:#f4f4f4}.mainNav-entries{display:flex;font-family:Open Sans,sans-serif;font-size:1.6rem;font-weight:400;justify-content:center;list-style-type:none;margin:0;padding:0;vertical-align:middle}.mainNavEntry{cursor:pointer;display:inline-block;padding:1rem 2rem}.theme-dark .mainNavEntry:hover:not(.mainNavEntry-isDisabled){background-color:#455064;color:#f4f4f4}.theme-dark .mainNavEntry.mainNavEntry-isActive{background-color:#1b2028;color:#f4f4f4}.theme-light .mainNavEntry.mainNavEntry-isDisabled{cursor:not-allowed}.theme-dark .mainNavEntry.mainNavEntry-isDisabled{background-color:#303846;color:#a8a8a8;cursor:not-allowed}.mainNavEntry-icon .icon{font-size:1.4rem;margin-right:.5rem}.icon{vertical-align:middle}.userGuide-isExpanded{margin-left:1rem}.rightBar-isCollapsed .userGuide-isExpanded{display:none}.userGuide-isCollapsed{padding:1rem 0}.rightBar:not(.rightBar-isCollapsed) .userGuide-isCollapsed{display:none}button{background-color:transparent;border:0;border-radius:0}.Button{display:inline-block;font-weight:700;margin:10px 20px 10px 0;padding:10px 20px;text-transform:capitalize}.Button:hover{cursor:pointer}.Button:last-of-type{margin-right:0}.theme-dark .Button-primary:not(.Button-isDisabled){background-color:#fabf2b;color:#1c2731}.theme-dark .Button-primary:not(.Button-isDisabled):hover{background-color:#fcdd8f;color:#000}.theme-dark .Button-primary:not(.Button-isDisabled):active{background-color:#feecc0;color:#2e4052}.Button-primary.Button-isDisabled{cursor:not-allowed}.theme-dark .Button-primary.Button-isDisabled{background-color:#57686a;color:#404c4e}.theme-dark .Button-secondary:not(.Button-isDisabled){background-color:#a8a8a8;color:#121616}.theme-dark .Button-secondary:not(.Button-isDisabled):hover{background-color:#c1c1c1;color:#000}.theme-dark .Button-secondary:not(.Button-isDisabled):active{background-color:#dbdbdb;color:#2e4052}.Button-secondary.Button-isDisabled{cursor:not-allowed}.theme-dark .Button-secondary.Button-isDisabled{background-color:#57686a;color:#404c4e}.versions-isExpanded{font-size:1rem;margin:4rem 0;opacity:.5;padding:0 1rem}.rightBar-isCollapsed .versions-isExpanded{display:none}.sim-SongImporterModal_Container{align-content:stretch;align-items:stretch;display:flex;flex-direction:column;flex-wrap:nowrap;height:90%;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:90%}.theme-light .sim-SongImporterModal_Container{border:1px solid}.theme-dark .sim-SongImporterModal_Container{background-color:#1e2324;border:1px solid #c1c1c1;color:#f4f4f4}.sim-Header_Container{display:flex;flex:0 0 auto}.theme-light .sim-Header_Container{border-bottom:1px solid}.theme-dark .sim-Header_Container{background-color:#303846;border-bottom:1px solid #c1c1c1;color:hsla(0,0%,96%,.7)}.sim-Header_Title{flex:1 1 auto;font-size:1.6rem;font-weight:bolder;padding:20px}.sim-Header_Actions{flex:0 0 auto;padding:0 10px}.sim-TwoColumns_Container{align-self:stretch;display:flex}.sim-TwoColumns_Container-autoHeight{flex:0 1 100%;min-height:0}.sim-Column_Container{align-self:stretch;flex:1 1 50%;padding:0 10px}.sim-Column_Container:first-child{padding-right:5px}.sim-Column_Container:last-child{padding-left:5px}.sim-Input_Header{font-size:1.2rem;height:20px;padding:2px;text-align:center;text-transform:uppercase}.theme-dark .sim-Input_Header{background-color:#404c4e;color:hsla(0,0%,96%,.7)}.sim-Input_Textarea{background-color:transparent;border:0;box-sizing:border-box;font-family:PT Mono,consolas,courier,monospace;font-size:1.2rem;height:calc(100% - 34px);line-height:1.5rem;margin:0;max-height:calc(100% - 34px);outline:none;overflow-y:scroll;padding:10px;resize:none;width:100%}.theme-dark .sim-Input_Textarea{background-color:#121616;color:#f4f4f4}.sim-Input_Textarea-Disabled{opacity:.5}.sim-Preview_Container{box-sizing:border-box;font-family:PT Mono,consolas,courier,monospace;font-size:1.2rem;height:calc(100% - 34px);max-height:calc(100% - 34px);overflow-y:scroll;padding:10px;white-space:pre-wrap}.theme-dark .sim-Preview_Container{background-color:#293132}.sim-Preview_Error{padding:10px}.theme-dark .sim-Preview_Error{background-color:#f91900;color:#f4f4f4}.sim-InputFile_Input{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.sim-InputFormat{padding:10px 0}.sim-InputFormat_Entry{display:inline-block;margin:0 10px}.sim-InputFormat_Entry:hover,.sim-InputFormat_Label:hover{cursor:pointer}.sim-InputFormat_Entry-Disabled,.sim-InputFormat_Label-Disabled{opacity:.5}.sim-InputFormat_Entry-Disabled:hover,.sim-InputFormat_Label-Disabled:hover{cursor:not-allowed}.mod-ModalContainer{z-index:5000}.mod-ModalContainer,.mod-Overlay{height:100%;left:0;position:absolute;top:0;width:100%}.mod-Overlay{background-color:#000;opacity:.7}.mod-ModalConfirmContainer{height:auto;left:50%;padding:10px 20px;position:absolute;top:50%;transform:translate(-50%,-50%);width:auto;z-index:5000}.theme-light .mod-ModalConfirmContainer{border:1px solid}.theme-dark .mod-ModalConfirmContainer{background-color:#1e2324;border:1px solid #c1c1c1;color:#f4f4f4}.mod-ModalConfirmButtons{text-align:center}.fileManager-isExpanded{font-size:1.2rem}.leftBar-isCollapsed .fileManager-isExpanded{display:none}.fileManager-isCollapsed{padding:1rem 0}.leftBar:not(.leftBar-isCollapsed) .fileManager-isCollapsed{display:none}.fileManager-actionsList{display:flex;flex-direction:row;flex-wrap:wrap;padding:1rem}.theme-dark .fileManager-actionsList{background-color:#455064}.fileManagerAction{flex:0 1 auto;margin-right:.5rem;padding:.5rem;white-space:nowrap}.fileManagerAction:hover{cursor:not-allowed}.fileManagerAction:hover:not(.fileManagerAction-isDisabled){cursor:pointer}.theme-dark .fileManagerAction:hover:not(.fileManagerAction-isDisabled){background-color:#596883}.fileManagerAction-isDisabled{opacity:.5}.fileManagerAction-icon .icon{font-size:1.4rem}.fileManager-entriesList{list-style:none;padding-left:0}.fileManagerEntry{cursor:pointer}.theme-dark .fileManagerEntry:hover{background-color:#596883}.theme-dark .fileManagerEntry.fileManagerEntry-isSelected{background-color:#fabf2b}.fileManagerEntry-input{background-color:transparent;border:none;box-sizing:border-box;cursor:pointer;outline:none;padding:.25rem 1rem;width:100%}.theme-dark .fileManagerEntry-input{color:#f4f4f4}.theme-dark .fileManagerEntry-isSelected .fileManagerEntry-input{color:#303846}.fileManagerEntry-isRenamed .fileManagerEntry-input{cursor:text}.theme-dark .fileManagerEntry-isRenamed .fileManagerEntry-input{background-color:#f4f4f4;color:#303846}.songEditor{display:flex;flex-direction:row;flex-wrap:nowrap;font-size:1.2rem;height:100%;width:100%}.songEditor-source{display:flex;flex:0 1 50%;overflow-y:scroll}.theme-dark .songEditor-source{background-color:#121616}.songEditor-preview{flex:0 1 50%;overflow-y:scroll;padding:1rem 0}.theme-dark .songEditor-preview{background-color:#293132}.theme-dark .editorPreview{color:#dbdbdb}.prosemirrorWrapper{flex:1 1 auto;padding:1rem 0}.ProseMirror{font-family:PT Mono,consolas,courier,monospace;font-size:1.2rem;height:100%;outline:none}.theme-dark .ProseMirror{color:#dbdbdb}.ProseMirror p{margin:0;padding:0 1rem}.ProseMirror{word-wrap:break-word;font-feature-settings:"liga" 0;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;position:relative;white-space:pre-wrap;white-space:break-spaces}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection ::selection{background:transparent}.ProseMirror-hideselection ::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{border:2px solid #8cf;bottom:-2px;content:"";left:-32px;pointer-events:none;position:absolute;right:-2px;top:-2px}img.ProseMirror-separator{border:none!important;display:inline!important;margin:0!important}.exportPreview{padding:1rem}.theme-dark .exportPreview{background-color:#f4f4f4}.exp-SongRenderer p{font-family:PT Mono,consolas,courier,monospace;font-size:1.2rem;margin:0;white-space:pre-wrap}.theme-dark .exp-SongRenderer{color:#303846}.playRendererWrapper1{height:100%;overflow-y:scroll;position:relative}.theme-dark .playRendererWrapper1{background-color:#121616}.playRendererWrapper2{bottom:0;left:0;margin:1rem;position:absolute;right:0;top:0}.playRenderer--columns-1{column-count:1}.playRenderer--columns-2{column-count:2;column-fill:auto;height:100%}.playRenderer--columns-3{column-count:3;column-fill:auto;height:100%}.playRenderer--columns-4{column-count:4;column-fill:auto;height:100%}.printPreview{overflow-y:scroll}.theme-dark .printPreview{background-color:#293132}@media print{.printPreview{background-color:#fff!important;overflow-y:auto}}.printPreview-page{background-color:#fff;margin:2rem auto;position:relative}@media print{.printPreview-page{margin:0;page-break-after:auto}}.printPreview-pageContentWrapper{bottom:0;left:0;position:absolute;right:0;top:0}.printPreview-pageContent{display:flex;flex-direction:column;flex-wrap:nowrap;height:100%}.printPreview-pageHeader{font-size:1.8rem;font-weight:700;margin-bottom:1rem}.printPreview-pageColumnWrapper{display:flex;flex:1;flex-direction:row;flex-wrap:nowrap}.printPreview-pageColumn{flex:1 1 0;margin:0 .7rem}.printPreview-pageColumn:first-of-type{margin-left:0}.printPreview-pageColumn:last-of-type{margin-right:0}.printPreview-page--a4{height:297mm;width:210mm}.printPreview-page--booxmax2pro{height:930px;width:698px}.printPreview-pageContentWrapper--padding1{padding:3mm}.printPreview-pageContentWrapper--padding2{padding:6mm}.printPreview-pageContentWrapper--padding3{padding:9mm}.printPreview-pageContentWrapper--padding4{padding:12mm}.printPreview-pageContentWrapper--padding5{padding:15mm}.printPreview-page--font-5{font-size:7px}.printPreview-page--font-4{font-size:8px}.printPreview-page--font-3{font-size:9px}.printPreview-page--font-2{font-size:10px}.printPreview-page--font-1{font-size:11px}.printPreview-page--font0{font-size:12px}.printPreview-page--font1{font-size:13px}.printPreview-page--font2{font-size:14px}.printPreview-page--font3{font-size:15px}.printPreview-page--font4{font-size:16px}.printPreview-page--font5{font-size:17px}.measuring-node{position:absolute;visibility:hidden;z-index:-1}.rightBar-isCollapsed .renderingOptionsPanel-isExpanded{display:none}.renderingOptionsPanel-isCollapsed{padding:1rem 0}.rightBar:not(.rightBar-isCollapsed) .renderingOptionsPanel-isCollapsed{display:none}.sb-optionsGroup{padding-top:2rem}.sb-optionsGroup:first-of-type{padding-top:0}.sb-optionsGroup-title{display:flex;font-size:1.4rem;font-weight:700;padding:.5rem 1rem .5rem .5rem}.theme-light .sb-optionsGroup-title{border-bottom:2px solid}.theme-dark .sb-optionsGroup-title{border-bottom:2px solid hsla(0,0%,96%,.7)}.theme-dark .sb-optionsGroup-isNotInteractable .sb-optionsGroup-title{color:#71819e}.sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover{cursor:pointer}.theme-dark .sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover{background-color:#596883}.sb-optionsGroup-label{flex:1 1 auto}.sb-optionsGroup-toggle{flex:0 0 auto}.sb-optionsGroup-iconTitle .icon{font-size:1.6rem}.sb-optionsGroup-iconToggle .icon{font-size:1.8rem}.sb-optionSelect{font-size:1.2rem;padding:.5rem 1.5rem .5rem 1rem}.theme-light .sb-optionSelect{border-bottom:1px dotted}.theme-dark .sb-optionSelect{border-bottom:1px dotted #71819e}.theme-dark .sb-optionsGroup .sb-optionSelect{background-color:#1b2028}.theme-dark .sb-optionSelect.sb-optionSelect-isNotInteractable{color:#71819e}.sb-optionSelect:hover{cursor:not-allowed}.sb-optionSelect:hover:not(.sb-optionSelect-isNotInteractable){cursor:pointer}.theme-dark .sb-optionSelect:hover:not(.sb-optionSelect-isNotInteractable){background-color:#596883}.sb-optionSelect-title{display:flex}.sb-optionSelect-desc{flex:1 1 auto}.sb-optionSelect-toggle{flex:0 0 auto}.sb-optionSelect-icon .icon{font-size:1.8rem}.sb-optionSelectChoice-activeLabel{opacity:.5}.sb-optionSelectChoice{display:flex;padding-top:.5rem}.sb-optionSelectChoice:hover:not(.sb-optionSelectChoice-isNotInteractable){cursor:pointer;text-decoration:underline}.sb-optionSelectChoice-isSelected{font-weight:700}.sb-optionSelectChoice-check{flex:0 0 20px}.sb-optionSelectChoice-checkIcon .icon{font-size:1.2rem}.sb-optionSelectChoice-label{flex:1 1 auto}.sb-optionSlider{display:flex;flex-wrap:wrap;font-size:1.2rem;padding:.5rem 1.5rem .5rem 1rem}.theme-light .sb-optionSlider{border-bottom:1px dotted}.theme-dark .sb-optionSlider{border-bottom:1px dotted #71819e}.theme-dark .sb-optionsGroup .sb-optionSlider{background-color:#1b2028}.theme-dark .sb-optionSlider.sb-optionSlider-isNotInteractable{color:#71819e}.sb-optionSlider:hover{cursor:not-allowed}.sb-optionSlider:hover:not(.sb-optionSlider-isNotInteractable){cursor:pointer}.theme-dark .sb-optionSlider:hover:not(.sb-optionSlider-isNotInteractable){background-color:#596883}.sb-optionSlider-desc{flex:1 1 auto}.sb-optionSlider-value{flex:0 0 auto;font-size:1.2rem;vertical-align:middle}.sb-optionSlider-range{flex:1 1 100%}.theme-light .sb-optionSlider-range input[type=range]{-webkit-appearance:none;background:transparent;width:100%}.theme-light .sb-optionSlider-range input[type=range]:focus{outline:none}.theme-light .sb-optionSlider-range input[type=range]::-webkit-slider-runnable-track{animation:.2s;background:#feecc0;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:100%}.theme-light .sb-optionSlider-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:#bb8704;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;margin-top:-3.3333333333;width:15px}.theme-light .sb-optionSlider-range input[type=range]:focus::-webkit-slider-runnable-track{background:#feecc0}.theme-light .sb-optionSlider-range input[type=range]::-moz-range-track{animation:.2s;background:#feecc0;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:100%}.theme-light .sb-optionSlider-range input[type=range]::-moz-range-thumb{background:#bb8704;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:15px}.theme-light .sb-optionSlider-range input[type=range]::-ms-track{animation:.2s;background:transparent;border-color:transparent;border-width:15px 0;color:transparent;cursor:pointer;height:10px;width:100%}.theme-light .sb-optionSlider-range input[type=range]::-ms-fill-lower,.theme-light .sb-optionSlider-range input[type=range]::-ms-fill-upper{background:#feecc0;border:0 solid #000;border-radius:0}.theme-light .sb-optionSlider-range input[type=range]::-ms-thumb{background:#bb8704;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:15px}.theme-light .sb-optionSlider-range input[type=range]:focus::-ms-fill-lower,.theme-light .sb-optionSlider-range input[type=range]:focus::-ms-fill-upper{background:#feecc0}.theme-light .sb-optionSlider-range input[type=range]:disabled::-moz-range-thumb,.theme-light .sb-optionSlider-range input[type=range]:disabled::-moz-range-track{cursor:default}.theme-light .sb-optionSlider-range input[type=range]:disabled::-webkit-slider-runnable-track,.theme-light .sb-optionSlider-range input[type=range]:disabled::-webkit-slider-thumb{cursor:default}.theme-light .sb-optionSlider-range input[type=range]:disabled::-ms-thumb,.theme-light .sb-optionSlider-range input[type=range]:disabled::-ms-track{cursor:default}.theme-dark .sb-optionSlider-range input[type=range]{-webkit-appearance:none;background:transparent;width:100%}.theme-dark .sb-optionSlider-range input[type=range]:focus{outline:none}.theme-dark .sb-optionSlider-range input[type=range]::-webkit-slider-runnable-track{animation:.2s;background:#71819e;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:100%}.theme-dark .sb-optionSlider-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:#070809;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;margin-top:-3.3333333333;width:15px}.theme-dark .sb-optionSlider-range input[type=range]:focus::-webkit-slider-runnable-track{background:#71819e}.theme-dark .sb-optionSlider-range input[type=range]::-moz-range-track{animation:.2s;background:#71819e;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:100%}.theme-dark .sb-optionSlider-range input[type=range]::-moz-range-thumb{background:#070809;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:15px}.theme-dark .sb-optionSlider-range input[type=range]::-ms-track{animation:.2s;background:transparent;border-color:transparent;border-width:15px 0;color:transparent;cursor:pointer;height:10px;width:100%}.theme-dark .sb-optionSlider-range input[type=range]::-ms-fill-lower,.theme-dark .sb-optionSlider-range input[type=range]::-ms-fill-upper{background:#71819e;border:0 solid #000;border-radius:0}.theme-dark .sb-optionSlider-range input[type=range]::-ms-thumb{background:#070809;border:0 solid #000;border-radius:0;cursor:pointer;height:10px;width:15px}.theme-dark .sb-optionSlider-range input[type=range]:focus::-ms-fill-lower,.theme-dark .sb-optionSlider-range input[type=range]:focus::-ms-fill-upper{background:#71819e}.theme-dark .sb-optionSlider-range input[type=range]:disabled::-moz-range-thumb,.theme-dark .sb-optionSlider-range input[type=range]:disabled::-moz-range-track{cursor:default}.theme-dark .sb-optionSlider-range input[type=range]:disabled::-webkit-slider-runnable-track,.theme-dark .sb-optionSlider-range input[type=range]:disabled::-webkit-slider-thumb{cursor:default}.theme-dark .sb-optionSlider-range input[type=range]:disabled::-ms-thumb,.theme-dark .sb-optionSlider-range input[type=range]:disabled::-ms-track{cursor:default}.sb-optionSlider-range input[type=range]:disabled{cursor:not-allowed!important;opacity:.35}.sb-optionToggle{display:flex;font-size:1.2rem;padding:.5rem 1.5rem .5rem 1rem}.theme-light .sb-optionToggle{border-bottom:1px dotted}.theme-dark .sb-optionToggle{border-bottom:1px dotted #71819e}.theme-dark .sb-optionsGroup .sb-optionToggle{background-color:#1b2028}.theme-dark .sb-optionToggle.sb-optionToggle-isNotInteractable{color:#71819e}.sb-optionToggle:hover{cursor:not-allowed}.sb-optionToggle:hover:not(.sb-optionToggle-isNotInteractable){cursor:pointer}.theme-dark .sb-optionToggle:hover:not(.sb-optionToggle-isNotInteractable){background-color:#596883}.sb-optionToggle-desc{flex:1 1 auto}.sb-optionToggle-icon{flex:0 0 auto}.theme-dark .sb-optionToggle-isOff .icon{color:#a8a8a8}.sb-optionToggle-icon .icon{font-size:1.8rem}.theme-dark .sb-optionToggle-isOff .sb-optionToggle-icon .icon{color:#a8a8a8} -/*# sourceMappingURL=main.493c19c5bf42afc6ee19.css.map*/ \ No newline at end of file diff --git a/packages/chord-charts-studio/build/css/main.493c19c5bf42afc6ee19.css.map b/packages/chord-charts-studio/build/css/main.493c19c5bf42afc6ee19.css.map deleted file mode 100644 index d4e99ec3..00000000 --- a/packages/chord-charts-studio/build/css/main.493c19c5bf42afc6ee19.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"css/main.493c19c5bf42afc6ee19.css","mappings":"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","sources":["webpack://@touffi/chords-charts-studio/./node_modules/normalize.css/normalize.css","webpack://@touffi/chords-charts-studio/./scss/styles.scss","webpack://@touffi/chords-charts-studio/./scss/_base.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/_typography.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/mixins/_fontSize.scss","webpack://@touffi/chords-charts-studio/./scss/chordMark.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/mixins/_themify.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/_spacings.scss","webpack://@touffi/chords-charts-studio/./src/ui/_components/ErrorBoundary.scss","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/App.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/Logo.scss","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/Nav.scss","webpack://@touffi/chords-charts-studio/./src/ui/_components/Icon.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/UserGuide.scss","webpack://@touffi/chords-charts-studio/./src/ui/_components/Button.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/Versions.scss","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/SongImporter.scss","webpack://@touffi/chords-charts-studio/./src/ui/_components/Modal.scss","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileManager.scss","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/_components/EditorLayout.scss","webpack://@touffi/chords-charts-studio/./src/songRenderers/editorPreview/_components/EditorPreview.scss","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/ProsemirrorEditorView.scss","webpack://@touffi/chords-charts-studio/./node_modules/prosemirror-view/style/prosemirror.css","webpack://@touffi/chords-charts-studio/./src/songRenderers/exportPreview/_components/ExportPreview.scss","webpack://@touffi/chords-charts-studio/./src/songRenderers/playRenderer/_components/PlayRenderer.scss","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/PrintPreview.scss","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/getDimensionsFromDom.scss","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/_components/Rendering.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/OptionsGroup.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Select.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Slider.scss","webpack://@touffi/chords-charts-studio/./scss/abstract/mixins/_inputRange.scss","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Toggle.scss"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","@import '../node_modules/normalize.css/normalize.css';\n\n@import './abstract';\n@import './base';\n@import './chordMark';\n","html {\n\t/* switching to border-box model for all elements */\n\tbox-sizing: border-box;\n\n\t/* set base font-size to equiv \"10px\", which is adapted to rem unit */\n\tfont-size: 62.5%;\n\n\t/* IE9-IE11 math fixing. See http://bit.ly/1g4X0bX */\n\tfont-size: calc(1em * 0.625);\n}\n\nbody {\n\t@include font-size(base);\n\tfont-family: $font-family-base;\n\tline-height: $line-height-base;\n}\n","@use 'sass:math';\n\n// Source: Knacss\n\n// Font families\n$font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n\tOxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif !default; // system font stack\n$font-family-headings: 'Open Sans', sans-serif !default; // font for h1, h2.. h6\n$font-family-monospace: 'PT Mono', consolas, courier, monospace !default; // font for code and samples\n\n// Font sizes (1.6rem value is \"16px\" equivalent)\n$font-size-base: 1.6rem !default;\n\n$font-sizes: (\n\th1: (\n\t\tmobile: 2.8rem,\n\t\tdesktop: 3.2rem,\n\t),\n\th2: (\n\t\tmobile: 2.4rem,\n\t\tdesktop: 2.8rem,\n\t),\n\th3: (\n\t\tmobile: 2rem,\n\t\tdesktop: 2.4rem,\n\t),\n\th4: (\n\t\tmobile: 1.8rem,\n\t\tdesktop: 2rem,\n\t),\n\th5: (\n\t\tmobile: 1.6rem,\n\t\tdesktop: 1.8rem,\n\t),\n\th6: (\n\t\tmobile: 1.4rem,\n\t\tdesktop: 1.6rem,\n\t),\n\tbig: (\n\t\tmobile: 1.6rem,\n\t\tdesktop: 1.8rem,\n\t),\n\tbase: (\n\t\tmobile: 1.4rem,\n\t\tdesktop: $font-size-base,\n\t),\n\tnormal: (\n\t\tmobile: 1.2rem,\n\t\tdesktop: 1.4rem,\n\t),\n\tsmall: (\n\t\tmobile: 1rem,\n\t\tdesktop: 1.2rem,\n\t),\n\ttiny: (\n\t\tmobile: 0.8rem,\n\t\tdesktop: 1rem,\n\t),\n) !default;\n\n// Line heights\n$line-height-s: 1.3 !default;\n$line-height-base: 1.5 !default;\n$line-height-l: 1.7 !default;\n\n// Default margin-bottom\n$margin-bottom-base: 1rem !default;\n$headings-margin-bottom: math.div($margin-bottom-base, 2) !default;\n$paragraph-margin-bottom: $margin-bottom-base !default;\n\n// Font weights\n$weight-light: 200 !default;\n$weight-book: 300 !default;\n$weight-regular: 400 !default;\n$weight-medium: 500 !default;\n$weight-bold: 700 !default;\n","// Source: Knacss\n\n// font-size Mixin\n// compiles to font-size mobile + font-size desktop on small-plus devices\n// ex. h2 { @include font-size(h2);}\n@mixin font-size($elem) {\n\t$q: map-get($font-sizes, $elem);\n\t$mob: map-get($q, 'mobile');\n\t$desk: map-get($q, 'desktop');\n\tfont-size: $desk;\n}\n","@import './abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\t// editorPreview\n\t\teditor-line-txt: cv(dark-foreground, dark10),\n\t\teditor-sectionTitle-border: cv(dark-foreground, dark30),\n\t\teditor-chordSymbol-txt: cv(dark-foreground, dark10),\n\t\teditor-chordSymbol-bg: cv(dark-secondary, light10),\n\t\teditor-barSeparator-txt: cv(dark-foreground, dark30),\n\t\teditor-chordLineRepeat-txt: cv(dark-secondary, light20),\n\t\teditor-lineRepeat-txt: cv(dark-secondary, light20),\n\t\t// playRenderer\n\t\tplay-line-txt: cv(dark-foreground, dark10),\n\t\tplay-sectionTitle-border: cv(dark-foreground, fade),\n\t\tplay-chordSymbol-txt--base: cv(dark-foreground, dark10),\n\t\tplay-barSeparator-txt--base: cv(dark-foreground, dark30),\n\t\tplay-chordSymbol-txt--red: cv(dark-red),\n\t\tplay-barSeparator-txt--red: cv(dark-red, light10),\n\t\tplay-chordSymbol-txt--yellow: cv(dark-yellow, dark10),\n\t\tplay-barSeparator-txt--yellow: cv(dark-yellow, dark20),\n\t\tplay-chordSymbol-txt--green: cv(dark-green),\n\t\tplay-barSeparator-txt--green: cv(dark-green, light10),\n\t\tplay-chordSymbol-bg: cv(dark-secondary, light3),\n\t\t// printRenderer\n\t\tprint-song-txt: cv(dark-background),\n\t\tprint-chordSymbol-bg: cv(dark-foreground, dark5),\n\t\tprint-barSeparator-txt: cv(dark-foreground, dark30),\n\t\t// exportPreview\n\t\texport-song-txt: cv(dark-background),\n\t),\n);\n\n.cmLine {\n\tmargin: 0;\n\tfont-family: $font-family-monospace;\n\twhite-space: pre-wrap;\n\n\t// editorPreview\n\t.editorPreview & {\n\t\tpadding: 0 $spacer-small;\n\t\t@include font-size(small);\n\t}\n\t.exportPreview & {\n\t\t@include font-size(small);\n\t}\n\n\t// playRenderer\n\t.playRenderer {\n\t\tpadding: 0 $spacer-small;\n\t}\n\t.playRenderer.cmLine--fontSize-5 & {\n\t\tfont-size: 7px;\n\t}\n\t.playRenderer.cmLine--fontSize-4 & {\n\t\tfont-size: 8px;\n\t}\n\t.playRenderer.cmLine--fontSize-3 & {\n\t\tfont-size: 9px;\n\t}\n\t.playRenderer.cmLine--fontSize-2 & {\n\t\tfont-size: 10px;\n\t}\n\t.playRenderer.cmLine--fontSize-1 & {\n\t\tfont-size: 11px;\n\t}\n\t.playRenderer.cmLine--fontSize0 & {\n\t\tfont-size: 12px;\n\t}\n\t.playRenderer.cmLine--fontSize1 & {\n\t\tfont-size: 13px;\n\t}\n\t.playRenderer.cmLine--fontSize2 & {\n\t\tfont-size: 14px;\n\t}\n\t.playRenderer.cmLine--fontSize3 & {\n\t\tfont-size: 15px;\n\t}\n\t.playRenderer.cmLine--fontSize4 & {\n\t\tfont-size: 16px;\n\t}\n\t.playRenderer.cmLine--fontSize5 & {\n\t\tfont-size: 17px;\n\t}\n\n\t// printPreview\n\t.printPreview & {\n\t\tcolor: black;\n\t}\n\n\t// exportRenderer\n\t.playRenderer {\n\t\tpadding: 0 $spacer-small;\n\t}\n}\n\n.cmLyricLine {\n\t// editorPreview\n\t.editorPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-line-txt');\n\t\t}\n\t}\n\t.editorPreview .cmLine--isFromSectionCopy &,\n\t.editorPreview .cmLine--isFromSectionRepeat & {\n\t\topacity: 0.5;\n\t}\n\n\t// playRenderer\n\t.playRenderer & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-line-txt');\n\t\t}\n\t}\n\n\t// printPreview\n\t.printPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('print-song-txt');\n\t\t}\n\t}\n}\n\n.cmChordLine {\n}\n\n.cmChordSymbol {\n\t// editorPreview\n\t.editorPreview & {\n\t\tfont-weight: $weight-bold;\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-chordSymbol-txt');\n\t\t\tbackground-color: themed('editor-chordSymbol-bg');\n\t\t}\n\t}\n\t.editorPreview .cmLine--isFromSectionRepeat &,\n\t.editorPreview .cmLine--isFromAutoRepeatChords &,\n\t.editorPreview .cmLine--isFromSectionCopy &,\n\t.editorPreview .cmLine--isFromChordLineRepeater & {\n\t\topacity: 0.3;\n\t\tbackground-color: transparent;\n\t}\n\n\t// playRenderer\n\t.playRenderer.cmChordSymbol--chordsColor-base & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-chordSymbol-txt--base');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-red & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-chordSymbol-txt--red');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-yellow & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-chordSymbol-txt--yellow');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-green & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-chordSymbol-txt--green');\n\t\t}\n\t}\n\t.playRenderer.cmChordLine--highlightChords & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('play-chordSymbol-bg');\n\t\t}\n\t}\n\n\t// printPreview\n\t.printPreview & {\n\t\tfont-weight: $weight-bold;\n\t}\n\t.printPreview.cmChordLine--highlightChords & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('print-chordSymbol-bg');\n\t\t}\n\t}\n\n\t// exportPreview\n\t.exportPreview & {\n\t\tfont-weight: normal;\n\t}\n}\n\n.cmBarSeparator {\n\t//margin: 0 10px;\n\n\t&:first-of-type {\n\t\tmargin-left: 0;\n\t}\n\n\t&:last-of-type {\n\t\tmargin-right: 0;\n\t}\n\n\t// editorPreview\n\t.editorPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-barSeparator-txt');\n\t\t}\n\t}\n\t.editorPreview .cmLine--isFromChordLineRepeater &,\n\t.editorPreview .cmLine--isFromSectionCopy &,\n\t.editorPreview .cmLine--isFromSectionRepeat & {\n\t\topacity: 0.3;\n\t}\n\n\t// playRenderer\n\t.playRenderer.cmChordSymbol--chordsColor-base & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-barSeparator-txt--base');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-red & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-barSeparator-txt--red');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-yellow & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-barSeparator-txt--yellow');\n\t\t}\n\t}\n\t.playRenderer.cmChordSymbol--chordsColor-green & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-barSeparator-txt--green');\n\t\t}\n\t}\n\n\t// printPreview\n\t.printPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('print-barSeparator-txt');\n\t\t}\n\t}\n}\n\n.cmSectionLabel {\n\t.editorPreview &,\n\t.playRenderer &,\n\t.printPreview & {\n\t\tdisplay: inline-block; // and not \"block\", so we don't have collapsing borders\n\t\twidth: 100%;\n\t\tmargin-bottom: $spacer-tiny;\n\t\tfont-weight: $weight-bold;\n\t\tfont-family: $font-family-base;\n\t\tfont-size: 90% !important;\n\t\ttext-transform: uppercase;\n\t\tletter-spacing: 0.1em;\n\t\tline-height: 2em;\n\t\tborder-bottom-style: dotted;\n\t\tborder-bottom-width: 1px;\n\t}\n\n\t// editorPreview\n\t.editorPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-line-txt');\n\t\t\tborder-color: themed('editor-sectionTitle-border');\n\t\t}\n\t}\n\t.editorPreview .cmLine--isFromSectionCopy &,\n\t.editorPreview .cmLine--isFromSectionRepeat & {\n\t\topacity: 0.3;\n\t}\n\n\t// playRenderer\n\t.playRenderer & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-line-txt');\n\t\t\tborder-color: themed('play-sectionTitle-border');\n\t\t}\n\t}\n\n\t// exportPreview\n\t.exportPreview & {\n\t\ttext-transform: uppercase;\n\t}\n}\n\n.cmTimeSignature {\n\t.editorPreview &,\n\t.playRenderer &,\n\t.printPreview & {\n\t\tfont-weight: $weight-bold;\n\t\tfont-family: $font-family-base;\n\t\tfont-size: 90%;\n\t\ttext-transform: uppercase;\n\t\tletter-spacing: 0.1em;\n\t\tline-height: 2em;\n\t}\n\n\t// editorPreview\n\t.editorPreview & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('editor-line-txt');\n\t\t}\n\t}\n\n\t// playRenderer\n\t.playRenderer & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('play-line-txt');\n\t\t}\n\t}\n}\n","// Source: https://medium.com/@dmitriy.borodiy/easy-color-theming-with-scss-bc38fd5734d1\n\n@mixin themify($themes: null) {\n\t@if (type-of($themes) != map) {\n\t\t@error \"Please supply a themes map to themify mixin\";\n\t} @else {\n\t\t@each $theme, $map in $themes {\n\t\t\t.theme-#{$theme} & {\n\t\t\t\t$theme-map: () !global;\n\t\t\t\t@each $key, $submap in $map {\n\t\t\t\t\t$value: map-get(map-get($themes, $theme), '#{$key}');\n\t\t\t\t\t$theme-map: map-merge(\n\t\t\t\t\t\t$theme-map,\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t$key: $value,\n\t\t\t\t\t\t)\n\t\t\t\t\t) !global;\n\t\t\t\t}\n\n\t\t\t\t@content;\n\t\t\t\t$theme-map: null !global;\n\t\t\t}\n\t\t}\n\t}\n}\n@function themed($key) {\n\t@return map-get($theme-map, $key);\n}\n","// Spacings\n$spacer-extra-tiny: 0.25rem !default;\n$spacer-tiny: 0.5rem !default;\n$spacer-tiny-plus: 0.7rem !default;\n$spacer-small: 1rem !default;\n$spacer-small-plus: 1.5rem !default;\n$spacer-medium: 2rem !default;\n$spacer-medium-plus: 3rem !default;\n$spacer-large: 4rem !default;\n$spacer-large-plus: 6rem !default;\n$spacer-extra-large: 8rem !default;\n$spacer-extra-large-plus: 12rem !default;\n$spacer-ultra-large: 16rem !default;\n$spacer-ultra-large-plus: 20rem !default;\n","@import '../../../scss/abstract';\n\n.ErrorBoundary {\n\tpadding: $spacer-medium;\n}\n","@import '../../../../../scss/abstract';\n@import '../themes';\n\nhtml,\nbody,\n#app {\n\theight: 100%;\n\tpadding: 0;\n}\n\n.appLayout-wrapper {\n\twidth: 100%;\n\theight: 100%;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n}\n\n// Sidebars\n\n.leftBar {\n\tflex-shrink: 0;\n\twidth: 15%;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t&.leftBar-isCollapsed {\n\t\twidth: 48px;\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('leftBar-txt');\n\t\tbackground-color: themed('leftBar-bg');\n\n\t\t&.leftBar-isCollapsed {\n\t\t\tborder-right: 1px solid themed('leftBar-border');\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: themed('leftBar-bgHover');\n\t\t\t}\n\t\t}\n\t}\n\n\t@media print {\n\t\tdisplay: none;\n\t}\n}\n\n.rightBar {\n\tflex-shrink: 0;\n\twidth: 15%;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t&.rightBar-isCollapsed {\n\t\twidth: 48px;\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('rightBar-txt');\n\t\tbackground-color: themed('rightBar-bg');\n\n\t\t&.rightBar-isCollapsed {\n\t\t\tborder-left: 1px solid themed('rightBar-border');\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: themed('rightBar-bgHover');\n\t\t\t}\n\t\t}\n\t}\n\n\t@media print {\n\t\tdisplay: none;\n\t}\n}\n\n.leftBar-content {\n\toverflow-y: scroll;\n\tflex: 1 1 auto;\n\n\t.leftBar-isCollapsed & {\n\t\tpadding: $spacer-tiny $spacer-small;\n\t\ttext-align: center;\n\t\tcursor: pointer;\n\t}\n}\n\n.rightBar-content {\n\toverflow-y: scroll;\n\tflex: 1 1 auto;\n\n\t.rightBar-isCollapsed & {\n\t\tpadding: $spacer-tiny $spacer-small;\n\t\ttext-align: center;\n\t\tcursor: pointer;\n\t}\n}\n\n.leftBar-collapser {\n\tflex: 0 0 12px;\n\tdisplay: flex;\n\tcursor: pointer;\n\n\t.leftBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('leftBar-collapser-bg');\n\t\tborder-right: 1px solid themed('leftBar-collapser-border');\n\n\t\t&:hover {\n\t\t\tbackground-color: themed('leftBar-collapser-bgHover');\n\t\t}\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('leftBar-collapser-txt');\n\t}\n}\n\n.leftBar-collapserIcon {\n\tflex: 1 1 auto;\n\talign-self: center;\n\tfont-weight: $weight-bold;\n\n\t.icon {\n\t\t@include font-size(small);\n\t}\n}\n\n.rightBar-collapser {\n\tflex: 0 0 12px;\n\tdisplay: flex;\n\tcursor: pointer;\n\n\t.rightBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('rightBar-collapser-bg');\n\t\tborder-left: 1px solid themed('rightBar-collapser-border');\n\n\t\t&:hover {\n\t\t\tbackground-color: themed('rightBar-collapser-bgHover');\n\t\t}\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('rightBar-collapser-txt');\n\t}\n}\n\n.rightBar-collapserIcon {\n\tflex: 1 1 auto;\n\talign-self: center;\n\tfont-weight: $weight-bold;\n\n\t.icon {\n\t\t@include font-size(small);\n\t}\n}\n\n// Main area\n\n.appLayout-main {\n\tflex-grow: 1;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-wrap: nowrap;\n}\n\n.appLayout-header {\n\tflex-shrink: 0;\n\n\t@include themify($themes) {\n\t\tcolor: themed('header-txt');\n\t\tbackground-color: themed('header-bg');\n\t\tborder-bottom: 2px solid themed('header-border');\n\t}\n\n\t@media print {\n\t\tdisplay: none;\n\t}\n}\n\n.appLayout-content {\n\toverflow-y: auto;\n\tflex-grow: 1;\n\n\t@media print {\n\t\toverflow-y: visible;\n\t}\n}\n\n.appLayout-footer {\n\t@include themify($themes) {\n\t\tcolor: themed('footer-txt');\n\t}\n\n\t@media print {\n\t\tdisplay: none;\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tlogo-txt: cv(dark-foreground),\n\t),\n);\n\n.logo-isExpanded {\n\tdisplay: flex;\n\tmargin: $spacer-tiny $spacer-small;\n\n\t.leftBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.logo-img {\n\tflex: 0 0 50px;\n\timg {\n\t\tmax-width: 100%;\n\t}\n}\n\n.logo-txt {\n\tflex: 1 1 auto;\n\tmargin-left: $spacer-tiny;\n\n\t@include font-size(base);\n\tfont-family: $font-family-headings;\n\tfont-weight: 700;\n\n\t@include themify($themes) {\n\t\tcolor: themed('logo-txt');\n\t}\n}\n","@import '../../../../../scss/abstract';\n@import '../themes';\n\n.mainNav-entries {\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: flex;\n\tjustify-content: center;\n\n\tlist-style-type: none;\n\t@include font-size(base);\n\tfont-family: $font-family-headings;\n\tfont-weight: 400;\n\tvertical-align: middle;\n}\n\n.mainNavEntry {\n\tdisplay: inline-block;\n\tpadding: $spacer-small $spacer-medium;\n\tcursor: pointer;\n\n\t&:hover:not(.mainNavEntry-isDisabled) {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('header-txtHover');\n\t\t\tbackground-color: themed('header-bgHover');\n\t\t}\n\t}\n\n\t&.mainNavEntry-isActive {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('header-txtActive');\n\t\t\tbackground-color: themed('header-bgActive');\n\t\t}\n\t}\n\n\t&.mainNavEntry-isDisabled {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('header-txtDisabled');\n\t\t\tbackground-color: themed('header-bgDisabled');\n\t\t\tcursor: not-allowed;\n\t\t}\n\t}\n}\n\n.mainNavEntry-icon {\n\t.icon {\n\t\tmargin-right: $spacer-tiny;\n\t\t@include font-size(normal);\n\t}\n}\n","@import '../../../scss/abstract';\n\n.icon {\n\tvertical-align: middle;\n}\n","@import '../../../../scss/abstract';\n\n.userGuide-isExpanded {\n\tmargin-left: $spacer-small;\n\n\t.rightBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.userGuide-isCollapsed {\n\tpadding: $spacer-small 0;\n\n\t.rightBar:not(.rightBar-isCollapsed) & {\n\t\tdisplay: none;\n\t}\n}\n","@import '../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\t// primary\n\t\tbutton-primary-txt: cv(dark-primary, dark10),\n\t\tbutton-primary-txtHover: cv(dark-secondary, dark20),\n\t\tbutton-primary-txtActive: cv(dark-primary),\n\t\tbutton-primary-txtDisabled: cv(dark-secondary, light10),\n\t\tbutton-primary-bg: cv(dark-accent),\n\t\tbutton-primary-bgHover: cv(dark-accent, light20),\n\t\tbutton-primary-bgActive: cv(dark-accent, light30),\n\t\tbutton-primary-bgDisabled: cv(dark-secondary, light20),\n\t\t// primary\n\t\tbutton-secondary-txt: cv(dark-secondary, dark10),\n\t\tbutton-secondary-txtHover: cv(dark-secondary, dark20),\n\t\tbutton-secondary-txtActive: cv(dark-primary),\n\t\tbutton-secondary-txtDisabled: cv(dark-secondary, light10),\n\t\tbutton-secondary-bg: cv(dark-foreground, dark30),\n\t\tbutton-secondary-bgHover: cv(dark-foreground, dark20),\n\t\tbutton-secondary-bgActive: cv(dark-foreground, dark10),\n\t\tbutton-secondary-bgDisabled: cv(dark-secondary, light20),\n\t),\n);\n\nbutton {\n\tborder: 0;\n\tborder-radius: 0;\n\tbackground-color: transparent;\n}\n\n.Button {\n\tdisplay: inline-block;\n\tpadding: 10px 20px;\n\tfont-weight: bold;\n\ttext-transform: capitalize;\n\tmargin: 10px 20px 10px 0;\n\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n\n\t&:last-of-type {\n\t\tmargin-right: 0;\n\t}\n}\n\n.Button-primary:not(.Button-isDisabled) {\n\t@include themify($themes) {\n\t\tbackground-color: themed('button-primary-bg');\n\t\tcolor: themed('button-primary-txt');\n\t}\n\n\t&:hover {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('button-primary-txtHover');\n\t\t\tbackground-color: themed('button-primary-bgHover');\n\t\t}\n\t}\n\n\t&:active {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('button-primary-txtActive');\n\t\t\tbackground-color: themed('button-primary-bgActive');\n\t\t}\n\t}\n}\n\n.Button-primary.Button-isDisabled {\n\tcursor: not-allowed;\n\t@include themify($themes) {\n\t\tbackground-color: themed('button-primary-bgDisabled');\n\t\tcolor: themed('button-primary-txtDisabled');\n\t}\n}\n\n.Button-secondary:not(.Button-isDisabled) {\n\t@include themify($themes) {\n\t\tbackground-color: themed('button-secondary-bg');\n\t\tcolor: themed('button-secondary-txt');\n\t}\n\n\t&:hover {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('button-secondary-txtHover');\n\t\t\tbackground-color: themed('button-secondary-bgHover');\n\t\t}\n\t}\n\n\t&:active {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('button-secondary-txtActive');\n\t\t\tbackground-color: themed('button-secondary-bgActive');\n\t\t}\n\t}\n}\n\n.Button-secondary.Button-isDisabled {\n\tcursor: not-allowed;\n\t@include themify($themes) {\n\t\tbackground-color: themed('button-secondary-bgDisabled');\n\t\tcolor: themed('button-secondary-txtDisabled');\n\t}\n}\n","@import '../../../../scss/abstract';\n\n.versions-isExpanded {\n\tmargin: $spacer-large 0;\n\tpadding: 0 $spacer-small;\n\topacity: 0.5;\n\n\t@include font-size(tiny);\n\n\t.rightBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n","@import '../../../scss/abstract';\n@import '../themes';\n\n.sim-SongImporterModal_Container {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\twidth: 90%;\n\theight: 90%;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: stretch;\n\talign-content: stretch;\n\tflex-wrap: nowrap;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('modal-bg');\n\t\tborder: 1px solid themed('modal-border');\n\t\tcolor: themed('modal-txt');\n\t}\n}\n\n.sim-Header_Container {\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('header-bg');\n\t\tborder-bottom: 1px solid themed('header-border');\n\t\tcolor: themed('header-txt');\n\t}\n}\n\n.sim-Header_Title {\n\tflex: 1 1 auto;\n\tpadding: 20px;\n\t@include font-size(base);\n\tfont-weight: bolder;\n}\n\n.sim-Header_Actions {\n\tflex: 0 0 auto;\n\tpadding: 0 10px;\n}\n\n.sim-TwoColumns_Container {\n\tdisplay: flex;\n\talign-self: stretch;\n}\n\n.sim-TwoColumns_Container-autoHeight {\n\tflex: 0 1 100%;\n\tmin-height: 0; // necessary, otherwise content doesn't scroll!\n}\n\n.sim-Column_Container {\n\tflex: 1 1 50%;\n\talign-self: stretch;\n\tpadding: 0 10px;\n\n\t&:first-child {\n\t\tpadding-right: 5px;\n\t}\n\t&:last-child {\n\t\tpadding-left: 5px;\n\t}\n}\n\n.sim-Input_Header {\n\theight: 20px;\n\ttext-transform: uppercase;\n\tpadding: 2px;\n\ttext-align: center;\n\t@include font-size(small);\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('inputHeader-bg');\n\t\tcolor: themed('inputHeader-txt');\n\t}\n}\n\n.sim-Input_Textarea {\n\tbox-sizing: border-box;\n\tpadding: 10px;\n\twidth: 100%;\n\theight: calc(100% - 24px - 10px);\n\tmax-height: calc(100% - 24px - 10px);\n\toverflow-y: scroll;\n\tresize: none;\n\tmargin: 0;\n\tbackground-color: transparent;\n\tborder: 0;\n\toutline: none;\n\n\tfont-family: $font-family-monospace;\n\t@include font-size(small);\n\tline-height: 1.5rem;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('input-bg');\n\t\tcolor: themed('input-txt');\n\t}\n}\n\n.sim-Input_Textarea-Disabled {\n\topacity: 0.5;\n}\n\n.sim-Preview_Container {\n\tbox-sizing: border-box;\n\n\tfont-family: $font-family-monospace;\n\t@include font-size(small);\n\twhite-space: pre-wrap;\n\theight: calc(100% - 24px - 10px);\n\tmax-height: calc(100% - 24px - 10px);\n\toverflow-y: scroll;\n\tpadding: 10px;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('preview-bg');\n\t}\n}\n\n.sim-Preview_Error {\n\tpadding: 10px;\n\t@include themify($themes) {\n\t\tcolor: themed('previewError-txt');\n\t\tbackground-color: themed('previewError-bg');\n\t}\n}\n\n.sim-InputFile_Input {\n\t// https://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/\n\twidth: 0.1px;\n\theight: 0.1px;\n\topacity: 0;\n\toverflow: hidden;\n\tposition: absolute;\n\tz-index: -1;\n}\n\n.sim-InputFormat {\n\tpadding: 10px 0;\n}\n\n.sim-InputFormat_Entry {\n\tdisplay: inline-block;\n\tmargin: 0 10px;\n\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n}\n\n.sim-InputFormat_Label {\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n}\n\n.sim-InputFormat_Entry-Disabled,\n.sim-InputFormat_Label-Disabled {\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\topacity: 0.5;\n}\n","@import '../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tmodal-bg: cv(dark-secondary, dark5),\n\t\tmodal-border: cv(dark-foreground, dark20),\n\t\tmodal-txt: cv(dark-foreground),\n\t),\n);\n\n.mod-ModalContainer {\n\tz-index: $zindex-modal;\n\theight: 100%;\n\twidth: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n\n.mod-Overlay {\n\theight: 100%;\n\twidth: 100%;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\topacity: 0.7;\n\tbackground-color: black;\n}\n\n.mod-ContentContainer {\n}\n\n.mod-ModalConfirmContainer {\n\tz-index: $zindex-modal;\n\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\twidth: auto;\n\theight: auto;\n\n\tpadding: 10px 20px;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('modal-bg');\n\t\tborder: 1px solid themed('modal-border');\n\t\tcolor: themed('modal-txt');\n\t}\n}\n\n.mod-ModalConfirmButtons {\n\ttext-align: center;\n}\n","@import '../../../scss/abstract';\n@import '../themes';\n\n.fileManager-isExpanded {\n\t@include font-size(small);\n\n\t.leftBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.fileManager-isCollapsed {\n\tpadding: $spacer-small 0;\n\t.leftBar:not(.leftBar-isCollapsed) & {\n\t\tdisplay: none;\n\t}\n}\n\n.fileManager-actionsList {\n\tpadding: $spacer-small;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\t@include themify($themes) {\n\t\tbackground-color: themed('actions-bg');\n\t}\n}\n\n.fileManagerAction {\n\tflex: 0 1 auto;\n\tpadding: $spacer-tiny;\n\tmargin-right: $spacer-tiny;\n\twhite-space: nowrap;\n\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\n\t&:hover:not(.fileManagerAction-isDisabled) {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('action-bgHover');\n\t\t}\n\t\tcursor: pointer;\n\t}\n}\n\n.fileManagerAction-isDisabled {\n\topacity: 0.5;\n}\n\n.fileManagerAction-icon {\n\t.icon {\n\t\t@include font-size(normal);\n\t}\n}\n\n.fileManager-entriesList {\n\tpadding-left: 0;\n\tlist-style: none;\n}\n\n.fileManagerEntry {\n\tcursor: pointer;\n\n\t&:hover {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('fileEntry-bgHover');\n\t\t}\n\t}\n\n\t&.fileManagerEntry-isSelected {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('fileEntry-bgActive');\n\t\t}\n\t}\n}\n\n.fileManagerEntry-input {\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tpadding: $spacer-extra-tiny $spacer-small;\n\n\tbackground-color: transparent;\n\tborder: none;\n\tcursor: pointer;\n\toutline: none;\n\t@include themify($themes) {\n\t\tcolor: themed('fileEntry-txt');\n\t}\n\n\t.fileManagerEntry-isSelected & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('fileEntry-txtActive');\n\t\t}\n\t}\n\n\t.fileManagerEntry-isRenamed & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('fileEntry-bgRenamed');\n\t\t\tcolor: themed('fileEntry-txtRenamed');\n\t\t}\n\t\tcursor: text;\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\teditorSrc-bg: cv(dark-secondary, dark10),\n\t\teditorPreview-bg: cv(dark-secondary),\n\t),\n);\n\n.songEditor {\n\twidth: 100%;\n\theight: 100%;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t@include font-size(small);\n}\n\n.songEditor-source {\n\tflex: 0 1 50%;\n\tdisplay: flex;\n\toverflow-y: scroll;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('editorSrc-bg');\n\t}\n}\n\n.songEditor-preview {\n\tflex: 0 1 50%;\n\tpadding: $spacer-small 0;\n\n\toverflow-y: scroll;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('editorPreview-bg');\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\teditorPreview-txt: cv(dark-foreground, dark10),\n\t),\n);\n\n.editorPreview {\n\t@include themify($themes) {\n\t\tcolor: themed('editorPreview-txt');\n\t\tbackground-color: themed('editorPreview-bg');\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\teditor-txt: cv(dark-foreground, dark10),\n\t),\n);\n\n.prosemirrorWrapper {\n\tflex: 1 1 auto;\n\tpadding: $spacer-small 0;\n}\n\n.ProseMirror {\n\theight: 100%;\n\n\toutline: none;\n\tfont-family: $font-family-monospace;\n\t@include font-size(small);\n\n\t@include themify($themes) {\n\t\tcolor: themed('editor-txt');\n\t}\n\n\tp {\n\t\tmargin: 0;\n\t\tpadding: 0 $spacer-small;\n\t}\n}\n",".ProseMirror {\n position: relative;\n}\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n white-space: break-spaces;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\n}\n\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n\n.ProseMirror li {\n position: relative;\n}\n\n.ProseMirror-hideselection *::selection { background: transparent; }\n.ProseMirror-hideselection *::-moz-selection { background: transparent; }\n.ProseMirror-hideselection { caret-color: transparent; }\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf;\n}\n\n/* Make sure li selections wrap around markers */\n\nli.ProseMirror-selectednode {\n outline: none;\n}\n\nli.ProseMirror-selectednode:after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px; top: -2px; bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none;\n}\n\n/* Protect against generic img rules */\n\nimg.ProseMirror-separator {\n display: inline !important;\n border: none !important;\n margin: 0 !important;\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tsong-txt: cv(dark-background),\n\t\tsong-bg: cv(dark-foreground),\n\t),\n);\n\n.exportPreview {\n\tpadding: $spacer-small;\n\t@include themify($themes) {\n\t\tbackground-color: themed('song-bg');\n\t}\n}\n\n.exp-SongRenderer {\n\tp {\n\t\tmargin: 0;\n\t\tfont-family: $font-family-monospace;\n\t\twhite-space: pre-wrap;\n\n\t\t@include font-size(small);\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('song-txt');\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tplayRenderer-bg: cv(dark-secondary, dark10),\n\t),\n);\n\n// Those wrapper are used so the columned div can use height: 100% inside a div with margins\n// We use the trick with an \"absolute\" positioned that fills the available height\n.playRendererWrapper1 {\n\tposition: relative; // needs to be relative so the \"absolute\" trick works to fill the height\n\theight: 100%;\n\toverflow-y: scroll;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('playRenderer-bg');\n\t}\n}\n.playRendererWrapper2 {\n\tmargin: $spacer-small;\n\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n}\n\n.playRenderer--columns-1 {\n\tcolumn-count: 1;\n}\n.playRenderer--columns-2 {\n\tcolumn-count: 2;\n\tcolumn-fill: auto;\n\theight: 100%;\n}\n.playRenderer--columns-3 {\n\tcolumn-count: 3;\n\tcolumn-fill: auto;\n\theight: 100%;\n}\n.playRenderer--columns-4 {\n\tcolumn-count: 4;\n\tcolumn-fill: auto;\n\theight: 100%;\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tsong-txt: cv(dark-background),\n\t\tsong-bg: cv(dark-foreground),\n\t\tdesktop-bg: cv(dark-secondary),\n\t),\n);\n\n.printPreview {\n\toverflow-y: scroll;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('desktop-bg');\n\t}\n\n\t@media print {\n\t\tbackground-color: white !important;\n\t\toverflow-y: auto;\n\t}\n}\n\n.printPreview-page {\n\t// see size and font-size definitions below\n\n\tposition: relative;\n\tmargin: $spacer-medium auto;\n\tbackground-color: white;\n\n\t@media print {\n\t\tmargin: 0;\n\t\tpage-break-after: auto;\n\t}\n}\n\n// This wrapper is used for the page padding and to fill all available height\n.printPreview-pageContentWrapper {\n\t// see padding definitions below\n\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tbottom: 0;\n\tright: 0;\n}\n\n// Flex container for header + columnsWrapper\n.printPreview-pageContent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-wrap: nowrap;\n\n\theight: 100%;\n}\n\n.printPreview-pageHeader {\n\t@include font-size(big);\n\tfont-weight: $weight-bold;\n\n\tmargin-bottom: $spacer-small;\n}\n\n// flex container for columns\n.printPreview-pageColumnWrapper {\n\tflex: 1;\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n}\n\n.printPreview-pageColumn {\n\tflex: 1 1 0;\n\tmargin: 0 $spacer-tiny-plus;\n\n\t&:first-of-type {\n\t\tmargin-left: 0;\n\t}\n\n\t&:last-of-type {\n\t\tmargin-right: 0;\n\t}\n}\n\n// Document Size definitions\n.printPreview-page--a4 {\n\twidth: 210mm;\n\theight: 297mm;\n}\n\n.printPreview-page--booxmax2pro {\n\twidth: 698px;\n\theight: 930px;\n}\n\n// Margin definitions\n.printPreview-pageContentWrapper--padding1 {\n\tpadding: 3mm;\n}\n.printPreview-pageContentWrapper--padding2 {\n\tpadding: 6mm;\n}\n.printPreview-pageContentWrapper--padding3 {\n\tpadding: 9mm;\n}\n.printPreview-pageContentWrapper--padding4 {\n\tpadding: 12mm;\n}\n.printPreview-pageContentWrapper--padding5 {\n\tpadding: 15mm;\n}\n\n// Font size definitions\n.printPreview-page--font-5 {\n\tfont-size: 7px;\n}\n.printPreview-page--font-4 {\n\tfont-size: 8px;\n}\n.printPreview-page--font-3 {\n\tfont-size: 9px;\n}\n.printPreview-page--font-2 {\n\tfont-size: 10px;\n}\n.printPreview-page--font-1 {\n\tfont-size: 11px;\n}\n.printPreview-page--font0 {\n\tfont-size: 12px;\n}\n.printPreview-page--font1 {\n\tfont-size: 13px;\n}\n.printPreview-page--font2 {\n\tfont-size: 14px;\n}\n.printPreview-page--font3 {\n\tfont-size: 15px;\n}\n.printPreview-page--font4 {\n\tfont-size: 16px;\n}\n.printPreview-page--font5 {\n\tfont-size: 17px;\n}\n",".measuring-node {\n\tvisibility: hidden;\n\tposition: absolute;\n\tz-index: -1;\n}\n","@import '../../../../scss/abstract';\n\n.renderingOptionsPanel-isExpanded {\n\t.rightBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.renderingOptionsPanel-isCollapsed {\n\tpadding: $spacer-small 0;\n\n\t.rightBar:not(.rightBar-isCollapsed) & {\n\t\tdisplay: none;\n\t}\n}\n","@import '../../../../../scss/abstract';\n@import '../_themes.scss';\n\n.sb-optionsGroup {\n\tpadding-top: $spacer-medium;\n\n\t&:first-of-type {\n\t\tpadding-top: 0;\n\t}\n}\n\n.sb-optionsGroup-title {\n\tpadding: $spacer-tiny $spacer-small $spacer-tiny $spacer-tiny;\n\n\tdisplay: flex;\n\n\t@include font-size(normal);\n\tfont-weight: $weight-bold;\n\n\t@include themify($themes) {\n\t\tborder-bottom: 2px solid themed('optionsGroup-border');\n\t}\n\n\t.sb-optionsGroup-isNotInteractable & {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('option-isDisabled');\n\t\t}\n\t}\n\n\t.sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) &:hover {\n\t\tcursor: pointer;\n\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('optionsGroup-bgHover');\n\t\t}\n\t}\n}\n\n.sb-optionsGroup-label {\n\tflex: 1 1 auto;\n}\n\n.sb-optionsGroup-toggle {\n\tflex: 0 0 auto;\n}\n\n.sb-optionsGroup-content {\n}\n\n.sb-optionsGroup-iconTitle {\n\t.icon {\n\t\t@include font-size(base);\n\t}\n}\n\n.sb-optionsGroup-iconToggle {\n\t.icon {\n\t\t@include font-size(big);\n\t}\n}\n","@import '../../../../../scss/abstract';\n@import '../_themes.scss';\n\n.sb-optionSelect {\n\t@include font-size(small);\n\n\tpadding: $spacer-tiny $spacer-small-plus $spacer-tiny $spacer-small;\n\n\t@include themify($themes) {\n\t\tborder-bottom: 1px dotted themed('option-border');\n\t}\n\n\t.sb-optionsGroup & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('optionsGroup-option-bg');\n\t\t}\n\t}\n\n\t&.sb-optionSelect-isNotInteractable {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('option-isDisabled');\n\t\t}\n\t}\n\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\n\t&:hover:not(.sb-optionSelect-isNotInteractable) {\n\t\tcursor: pointer;\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('option-bgHover');\n\t\t}\n\t}\n}\n\n.sb-optionSelect-title {\n\tdisplay: flex;\n}\n\n.sb-optionSelect-desc {\n\tflex: 1 1 auto;\n}\n\n.sb-optionSelect-toggle {\n\tflex: 0 0 auto;\n}\n\n.sb-optionSelect-icon {\n\t.icon {\n\t\t@include font-size(big);\n\t}\n}\n\n.sb-optionSelectChoice-activeLabel {\n\topacity: 0.5;\n}\n\n.sb-optionSelectChoice {\n\tpadding-top: $spacer-tiny;\n\tdisplay: flex;\n\n\t&:hover:not(.sb-optionSelectChoice-isNotInteractable) {\n\t\ttext-decoration: underline;\n\t\tcursor: pointer;\n\t}\n}\n\n.sb-optionSelectChoice-isSelected {\n\tfont-weight: $weight-bold;\n}\n\n.sb-optionSelectChoice-check {\n\tflex: 0 0 20px;\n}\n\n.sb-optionSelectChoice-checkIcon {\n\t.icon {\n\t\t@include font-size(small);\n\t}\n}\n\n.sb-optionSelectChoice-label {\n\tflex: 1 1 auto;\n}\n","@import '../../../../../scss/abstract';\n@import '../_themes.scss';\n\n.sb-optionSlider {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t@include font-size(small);\n\n\tpadding: $spacer-tiny $spacer-small-plus $spacer-tiny $spacer-small;\n\n\t@include themify($themes) {\n\t\tborder-bottom: 1px dotted themed('option-border');\n\t}\n\n\t.sb-optionsGroup & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('optionsGroup-option-bg');\n\t\t}\n\t}\n\n\t&.sb-optionSlider-isNotInteractable {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('option-isDisabled');\n\t\t}\n\t}\n\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\n\t&:hover:not(.sb-optionSlider-isNotInteractable) {\n\t\tcursor: pointer;\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('option-bgHover');\n\t\t}\n\t}\n}\n\n.sb-optionSlider-desc {\n\tflex: 1 1 auto;\n}\n\n.sb-optionSlider-value {\n\tflex: 0 0 auto;\n\tvertical-align: middle;\n\n\t@include font-size(small);\n}\n\n.sb-optionSlider-range {\n\tflex: 1 1 100%;\n\n\tinput[type='range'] {\n\t\t@include themify($themes) {\n\t\t\t@include input-type-range(\n\t\t\t\t$thumb-color: themed('range-thumb'),\n\t\t\t\t$track-color: themed('range-track')\n\t\t\t);\n\t\t}\n\n\t\t&:disabled {\n\t\t\topacity: 0.35;\n\t\t\tcursor: not-allowed !important;\n\t\t}\n\t}\n}\n","// Adapted from https://github.com/Jimdo/range-slider-sass\n@use 'sass:math';\n\n@mixin shadow($shadow-size, $shadow-blur, $shadow-color) {\n\tbox-shadow: $shadow-size $shadow-size $shadow-blur $shadow-color,\n\t\t0 0 $shadow-size lighten($shadow-color, 5%);\n}\n\n@mixin track($track-width, $track-height) {\n\twidth: $track-width;\n\theight: $track-height;\n\tcursor: pointer;\n\tanimation: 0.2s;\n}\n\n@mixin thumb(\n\t$thumb-width,\n\t$thumb-height,\n\t$thumb-border-width,\n\t$thumb-border-color,\n\t$thumb-radius,\n\t$thumb-color\n) {\n\t//@include shadow($thumb-shadow-size, $thumb-shadow-blur, $thumb-shadow-color);\n\twidth: $thumb-width;\n\theight: $thumb-height;\n\tcursor: pointer;\n\tborder: $thumb-border-width solid $thumb-border-color;\n\tborder-radius: $thumb-radius;\n\tbackground: $thumb-color;\n}\n\n@mixin input-type-range(\n\t$thumb-color: red,\n\t$thumb-radius: 0,\n\t$thumb-height: 10px,\n\t$thumb-width: 15px,\n\t$thumb-shadow-size: 0,\n\t$thumb-shadow-blur: 0,\n\t$thumb-shadow-color: rgba(0, 0, 0, 0),\n\t$thumb-border-width: 0,\n\t$thumb-border-color: black,\n\t$track-color: blue,\n\t$track-radius: 0,\n\t$track-width: 100%,\n\t$track-height: 10px,\n\t$track-shadow-size: 0,\n\t$track-shadow-blur: 0,\n\t$track-shadow-color: rgba(0, 0, 0, 0),\n\t$track-border-width: 0,\n\t// might not be taken into account everywhere, see belo\n\t$track-border-color: black\n) {\n\t-webkit-appearance: none;\n\twidth: $track-width;\n\tbackground: transparent;\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&::-webkit-slider-runnable-track {\n\t\t@include track($track-width, $track-height);\n\t\t//@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);\n\t\tborder: $track-border-width solid $track-border-color;\n\t\tborder-radius: $track-radius;\n\t\tbackground: $track-color;\n\t}\n\n\t&::-webkit-slider-thumb {\n\t\t@include thumb(\n\t\t\t$thumb-width,\n\t\t\t$thumb-height,\n\t\t\t$thumb-border-width,\n\t\t\t$thumb-border-color,\n\t\t\t$thumb-radius,\n\t\t\t$thumb-color\n\t\t);\n\t\t-webkit-appearance: none;\n\t\t//margin-top: ((-#{$track-border-width} * 2) + $track-height) / (2 - $thumb-height / 2);\n\t\t// the build fails with $track-border-width = 0\n\t\tmargin-top: math.div(($track-height), (2 - math.div($thumb-height, 2)));\n\t}\n\n\t&:focus::-webkit-slider-runnable-track {\n\t\tbackground: $track-color;\n\t}\n\n\t&::-moz-range-track {\n\t\t@include track($track-width, $track-height);\n\t\t//@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);\n\t\tborder: $track-border-width solid $track-border-color;\n\t\tborder-radius: $track-radius;\n\t\tbackground: $track-color;\n\t}\n\n\t&::-moz-range-thumb {\n\t\t@include thumb(\n\t\t\t$thumb-width,\n\t\t\t$thumb-height,\n\t\t\t$thumb-border-width,\n\t\t\t$thumb-border-color,\n\t\t\t$thumb-radius,\n\t\t\t$thumb-color\n\t\t);\n\t}\n\n\t&::-ms-track {\n\t\t@include track($track-width, $track-height);\n\t\tcolor: transparent;\n\t\tborder-width: $thumb-width 0;\n\t\tborder-color: transparent;\n\t\tbackground: transparent;\n\t}\n\n\t&::-ms-fill-lower {\n\t\t//@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);\n\t\tborder: $track-border-width solid $track-border-color;\n\t\tborder-radius: $track-radius * 2;\n\t\tbackground: $track-color;\n\t}\n\n\t&::-ms-fill-upper {\n\t\t//@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);\n\t\tborder: $track-border-width solid $track-border-color;\n\t\tborder-radius: $track-radius * 2;\n\t\tbackground: $track-color;\n\t}\n\n\t&::-ms-thumb {\n\t\t@include thumb(\n\t\t\t$thumb-width,\n\t\t\t$thumb-height,\n\t\t\t$thumb-border-width,\n\t\t\t$thumb-border-color,\n\t\t\t$thumb-radius,\n\t\t\t$thumb-color\n\t\t);\n\t}\n\n\t&:focus::-ms-fill-lower {\n\t\tbackground: $track-color;\n\t}\n\n\t&:focus::-ms-fill-upper {\n\t\tbackground: $track-color;\n\t}\n\n\t&:disabled::-moz-range-track,\n\t&:disabled::-moz-range-thumb {\n\t\tcursor: default;\n\t}\n\n\t&:disabled::-webkit-slider-runnable-track,\n\t&:disabled::-webkit-slider-thumb {\n\t\tcursor: default;\n\t}\n\n\t&:disabled::-ms-track,\n\t&:disabled::-ms-thumb {\n\t\tcursor: default;\n\t}\n}\n","@import '../../../../../scss/abstract';\n@import '../_themes.scss';\n\n.sb-optionToggle {\n\tdisplay: flex;\n\n\t@include font-size(small);\n\n\tpadding: $spacer-tiny $spacer-small-plus $spacer-tiny $spacer-small;\n\n\t@include themify($themes) {\n\t\tborder-bottom: 1px dotted themed('option-border');\n\t}\n\n\t.sb-optionsGroup & {\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('optionsGroup-option-bg');\n\t\t}\n\t}\n\n\t&.sb-optionToggle-isNotInteractable {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('option-isDisabled');\n\t\t}\n\t}\n\n\t&:hover {\n\t\tcursor: not-allowed;\n\t}\n\n\t&:hover:not(.sb-optionToggle-isNotInteractable) {\n\t\tcursor: pointer;\n\t\t@include themify($themes) {\n\t\t\tbackground-color: themed('option-bgHover');\n\t\t}\n\t}\n}\n\n.sb-optionToggle-desc {\n\tflex: 1 1 auto;\n}\n\n.sb-optionToggle-icon {\n\tflex: 0 0 auto;\n}\n\n.sb-optionToggle-isOff {\n\t.icon {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('toggle-icon-isOff');\n\t\t}\n\t}\n}\n\n.sb-optionToggle-icon {\n\t.icon {\n\t\t@include font-size(big);\n\t}\n\n\t.sb-optionToggle-isOff & {\n\t\t.icon {\n\t\t\t@include themify($themes) {\n\t\t\t\tcolor: themed('toggle-icon-isOff');\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/packages/chord-charts-studio/build/index.html b/packages/chord-charts-studio/build/index.html index 2218851c..751e52df 100644 --- a/packages/chord-charts-studio/build/index.html +++ b/packages/chord-charts-studio/build/index.html @@ -2,4 +2,4 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); - gtag('config', 'G-EGKBT2J600');
\ No newline at end of file + gtag('config', 'G-EGKBT2J600');
\ No newline at end of file diff --git a/packages/chord-charts-studio/build/main.493c19c5bf42afc6ee19.js b/packages/chord-charts-studio/build/main.1c1ff44e8eff34a1438d.js similarity index 99% rename from packages/chord-charts-studio/build/main.493c19c5bf42afc6ee19.js rename to packages/chord-charts-studio/build/main.1c1ff44e8eff34a1438d.js index 96226da7..8a756345 100644 --- a/packages/chord-charts-studio/build/main.493c19c5bf42afc6ee19.js +++ b/packages/chord-charts-studio/build/main.1c1ff44e8eff34a1438d.js @@ -1,2 +1,2 @@ (()=>{"use strict";var e,t={"SF5+":(e,t,n)=>{var r=n("P4Tr"),o=n.n(r),i=n("m14p"),a=n("5HXA"),l=n("sINF"),c=n("R0vF"),s=(n("yq1k"),n("tkto"),n("pNMO"),n("TeQF"),n("07d7"),n("5DmW"),n("FZtP"),n("27RR"),n("JZM8")),u=n.n(s);function p(){return Date.now()}var d="db/files/Create",m="db/files/Delete",f="db/files/Import",g="db/files/Update",h="db/options/setOptionValue",y="ui/layout/app/setEditorMode",b="ui/layout/app/toggleLeftBar",v="ui/layout/app/toggleRightBar",C=function(e){return e.ui.layout.app.isLeftBarCollapsed},O=function(e){return e.ui.layout.app.isRightBarCollapsed},E=function(e){return e.ui.layout.app.editorMode},w=function(e){return e.fileManager.selected},P=function(e){return e.fileManager.renamed},R=function(e){return e.fileManager.defaultTitle},j=(n("ToJy"),n("zKZe"),n("3WF5")),F=n.n(j),S=n("BkRI"),N=n.n(S),q=n("Y+p1"),k=n.n(q),T=n("xweI"),x=n.n(T),I=n("G4qV"),A=n("EsgF");function M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:U,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};switch(t.type){case d:case f:return Z(e,t);case g:return K(e,t);case m:return Y(e,t);case h:return J(e,t,n);case y:return X(e,t,n)}return e},options:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ae,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};switch(t.type){case h:return le(e,t);case y:return ce(e,t,n);case Q:return ue(e,t,n)}return e}});function de(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function me(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:qe,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case b:return Se(Se({},e),{},{isLeftBarCollapsed:!e.isLeftBarCollapsed});case v:return Se(Se({},e),{},{isRightBarCollapsed:!e.isRightBarCollapsed});case y:var n=t.payload.mode;return Se(Se({},e),{},{editorMode:n});case m:case d:case f:return Se(Se({},e),{},{editorMode:"edit"})}return e}}),Te=(0,c.Z)({layout:ke}),xe=(0,c.Z)({db:pe,fileManager:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ge,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case d:var n=t.payload.id;return me(me({},e),{},{selected:n,renamed:n});case f:var r=t.payload.id;return me(me({},e),{},{selected:r,renamed:""});case g:return me(me({},e),{},{renamed:""});case m:return me(me({},e),{},{selected:"",renamed:""});case Q:var o=t.payload.id;return me(me({},e),{},{selected:o,renamed:o===e.renamed?o:""});case ee:var i=t.payload.id;return me(me({},e),{},{renamed:i})}return e},songImporter:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:je,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case be:var n=t.payload,r=n.content,o=n.title,i=void 0===o?"":o;return Pe(Pe({},e),{},{content:Ee(r),title:i?Ee(i):e.title});case ve:var a=t.payload.inputFormat;return Pe(Pe({},e),{},{inputFormat:a});case f:case he:return Pe(Pe({},e),{},{content:"",title:"",isImporting:!1});case ye:var l=t.payload,c=l.content,s=l.inputFormat,u=l.title,p=l.isFromWeb;return Pe(Pe({},e),{},{isImporting:!0,content:c?Ee(c):"",title:u?Ee(u):"",inputFormat:s||e.inputFormat,isFromWeb:p})}return e},ui:Te}),Ie={db:{options:{songPreferences:{values:{transposeValue:0,harmonizeAccidentals:!0,preferredAccidentals:"auto"},defaults:{transposeValue:0,harmonizeAccidentals:!0,preferredAccidentals:"auto"}},songFormatting:{values:{chartFormat:"chordmark",chartType:"all",alignChordsWithLyrics:!0,alignBars:!0,autoRepeatChords:!0,expandSectionCopy:!0,columnsCount:1,columnBreakOnParagraph:!0,documentMargins:3,fontSize:0,chordsColor:"yellow",highlightChords:!1},defaults:{chartFormat:"chordmark",chartType:"all",alignChordsWithLyrics:!0,alignBars:!0,autoRepeatChords:!0,expandSectionCopy:!0,columnsCount:1,columnBreakOnParagraph:!0,documentMargins:3,fontSize:0,chordsColor:"yellow",highlightChords:!1}}}}};var Ae;function Me(){var e=(0,a.Uo)((0,i.md)(l.Z)),t=function(){try{var e=localStorage.getItem("state");if(!e)return;return JSON.parse(e)}catch(e){return}}();t&&t.db&&t.db.options&&delete t.db.options.rendering;var n=o()(t,Ie);(Ae=(0,i.MT)(xe,n,e)).subscribe((function(){!function(e){try{var t=JSON.stringify(e);localStorage.setItem("state",t)}catch(e){}}(Ae.getState())}))}function _e(){return Ae}function Be(e,t){if(!e)throw new TypeError("Cannot create an action without an action type");return{type:e,payload:t}}var De={"@CCS/IMPORT_TAB":function(e){var t=_e(),n=Le(e.title,e.artist);t.dispatch(function(e,t,n){return Be(ye,{content:t,inputFormat:e,title:n,isFromWeb:!0})}(e.source,e.chordChart,n))}},Le=function(e,t){var n=e;return t&&(n+=" - "+t),n};function ze(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function We(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ge=function(e){var t=function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"";if(!e)throw new TypeError("Cannot import a file without title");var n={id:(0,Ot.Z)(),title:e,content:t};return Be(f,n)},wt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.title,r=t.content;if(!e)throw new TypeError("Cannot update a file without an id");var o={id:e,title:n,content:r};return Be(g,o)},Pt=function(e){return e.songImporter.content},Rt=function(e){return e.songImporter.inputFormat},jt=function(e){return e.songImporter.title},Ft=function(e){return e.songImporter.isImporting},St=function(e){return e.songImporter.isFromWeb};function Nt(e){var t=e.children,n=e.closeModal;return(0,Ve.useEffect)((function(){var e=function(e){"Escape"===e.key&&n()};return window.addEventListener("keyup",e),function(){window.removeEventListener("keyup",e)}})),Ve.createElement("section",{className:"mod-ModalContainer"},Ve.createElement("div",{className:"mod-Overlay",onClick:n,"data-testid":"modal-overlay"}),Ve.createElement("div",{className:"mod-ContentContainer"},t))}Nt.propTypes={children:Ke().element.isRequired,closeModal:Ke().func.isRequired};const qt=Nt;var kt=function(e){var t=e.cancelImport,n=e.chordMarkContent,r=e.importFile,o=e.title,i=e.content,a=e.error,l=o?'Import "'+o+'"':"Import song";return Ve.createElement("div",{className:"sim-Header_Container"},Ve.createElement("div",{className:"sim-Header_Title"},l),Ve.createElement("div",{className:"sim-Header_Actions"},Ve.createElement(ht,{onClick:t,buttonName:"cancel",type:"secondary"},"CANCEL"),Ve.createElement(ht,{onClick:function(){r(o||"[untitled]",n)},buttonName:"import",type:"primary",isDisabled:""===i||""!==a},"IMPORT")))};kt.propTypes={cancelImport:Ke().func.isRequired,chordMarkContent:Ke().string,content:Ke().string,error:Ke().string,importFile:Ke().func.isRequired,title:Ke().string};const Tt=kt;n("5s+n"),n("sMBO");var xt=n("zuWl"),It=n.n(xt),At=function(e){return e.name.substr(0,e.name.lastIndexOf("."))},Mt=function(e){return e.size>51200},_t=function(e){return 0===e.type.indexOf("text")||0===e.type.length},Bt=function(e){return"The selected file is too big: "+It()(e,{round:0})+" (maximum allowed file size is "+It()(51200,{round:0})+")."},Dt=function(e){return"Cannot import file of type "+e.type+"."},Lt=function(){return"No file selected."};const zt=function(e){return new Promise((function(t,n){if(e.length){var r=e[0];Mt(r)?n(Bt(r.size)):_t(r)?r.text().then((function(e){t({content:e,title:At(r)})})).catch((function(e){n(e)})):n(Dt(r))}else n(Lt())}))};var Wt=function(e){var t=e.setContent;return Ve.createElement("div",null,Ve.createElement("label",{htmlFor:"importSong-Input",className:"Button Button-primary"},"Select File"),Ve.createElement("input",{id:"importSong-Input",name:"importSong-Input",type:"file",className:"sim-InputFile_Input",onChange:function(e){zt(e.target.files).then((function(e){t(e.content,e.title)})).catch((function(e){t(e)}))},accept:"text/*,.cho,.crd,.chopro,.chord,.pro,.txt,.md"}))};Wt.propTypes={setContent:Ke().func.isRequired};const Gt=Wt;function Ht(e){var t=e.content,n=e.setContent,r=e.isDisabled,o=["sim-Input_Textarea"];return r&&o.push("sim-Input_Textarea-Disabled"),Ve.createElement(Ve.Fragment,null,Ve.createElement("div",{className:"sim-Input_Header"},Ve.createElement(st,{iconName:"arrow_drop_down"}),"Copy/paste below",Ve.createElement(st,{iconName:"arrow_drop_down"})),Ve.createElement("textarea",{className:o.join(" "),onChange:function(e){n(e.target.value)},value:t,disabled:r,"data-testid":"sim-input"}))}Ht.propTypes={content:Ke().string.isRequired,isDisabled:Ke().bool.isRequired,setContent:Ke().func.isRequired},Ht.defaultProps={};const Vt=Ht;function $t(e){var t=e.inputFormat,n=e.error;return Ve.createElement("div",{className:"sim-Preview_Error"},Ve.createElement("p",null,"There was an error when trying to parse the song in the specified input format (",t,").",Ve.createElement("br",null),"Please correct the input or try another format.",Ve.createElement("br",null),"The error was:"),Ve.createElement("p",null,'"',n,'"'),Ve.createElement("p",null,'Hint: most of the time, this is related to an unclosed "[" or "{" or an unsupported ChordPro directive'))}$t.propTypes={error:Ke().string,inputFormat:Ke().string.isRequired},$t.defaultProps={};const Ut=$t;function Zt(e){var t=e.setInputFormat,n=e.inputFormat,r=e.id,o=e.label,i=e.isDisabled,a=["sim-InputFormat_Entry"],l=["sim-InputFormat_Label"];return i&&(a.push("sim-InputFormat_Entry-Disabled"),l.push("sim-InputFormat_Label-Disabled")),Ve.createElement(Ve.Fragment,null,Ve.createElement("input",{className:a.join(" "),type:"radio",name:"inputFormat",id:r,value:r,onChange:function(e){i||t(e.target.value)},checked:n===r}),Ve.createElement("label",{className:l.join(" "),htmlFor:r},o))}Zt.propTypes={setInputFormat:Ke().func.isRequired,inputFormat:Ke().string.isRequired,id:Ke().string.isRequired,label:Ke().string.isRequired,isDisabled:Ke().bool.isRequired},Zt.defaultProps={};const Kt=Zt;var Yt=[{id:"basic",label:"Basic"},{id:"chordpro",label:"ChordPro"},{id:"ultimateGuitar",label:"Ultimate Guitar"}];function Jt(e){var t=e.setInputFormat,n=e.inputFormat,r=e.disableAll,o=Yt.map((function(e){return Ve.createElement(Kt,{setInputFormat:t,id:e.id,key:e.id,label:e.label,inputFormat:n,isDisabled:r})}));return Ve.createElement("div",{className:"sim-InputFormat"},"Input format:",o)}Jt.propTypes={disableAll:Ke().bool.isRequired,setInputFormat:Ke().func.isRequired,inputFormat:Ke().string.isRequired},Jt.defaultProps={};const Xt=Jt;n("rB9j"),n("UxlC");var Qt=n("akyv");n("HiXI"),n("SYor"),n("7ueG"),n("pjDv"),n("+2oP");function en(e){return function(e){if(Array.isArray(e))return tn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return tn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return tn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function tn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=1},bn=function(e){return e.lyrics.trim().length&&e.lyrics.length-e.lyrics.trimRight().length>=1};function vn(e){var t=e.replace(/\r\n/g,"\n").replace(/\t/g," ").replace(/\[\/?ch]/g,"").replace(/\[\/?tab]/g,"");return rn((new Qt.ZP.UltimateGuitarParser).parse(t))}var Cn=function(e){if("ultimateGuitar"===e)return vn;var t="chordpro"===e?new Qt.ZP.ChordProParser:new Qt.ZP.ChordSheetParser;return function(e){return rn(t.parse(e))}};const On=function(e,t){return Cn(t)(e)};function En(e){var t=e.cancelImport,n=e.content,r=e.importFile,o=e.isFromWeb,i=e.isImporting,a=e.setContent,l=e.setInputFormat,c=e.inputFormat,s=e.title;if(!i)return null;var u="",p="";try{u=On(n,c)}catch(e){p=e.message}return Ve.createElement(qt,{closeModal:t},Ve.createElement("div",{className:"sim-SongImporterModal_Container","data-testid":"song-importer"},Ve.createElement(Tt,{cancelImport:t,chordMarkContent:u,content:n,error:p,importFile:r,title:s}),Ve.createElement("div",{className:"sim-TwoColumns_Container"},Ve.createElement("div",{className:"sim-Column_Container"},Ve.createElement(Gt,{setContent:a})),Ve.createElement("div",{className:"sim-Column_Container"},Ve.createElement(Xt,{inputFormat:c,setInputFormat:l,disableAll:!0===o}))),Ve.createElement("div",{className:"sim-TwoColumns_Container sim-TwoColumns_Container-autoHeight"},Ve.createElement("div",{className:"sim-Column_Container"},Ve.createElement(Vt,{content:n,setContent:a,isDisabled:o})),Ve.createElement("div",{className:"sim-Column_Container"},Ve.createElement("div",{className:"sim-Input_Header"},Ve.createElement(st,{iconName:"arrow_drop_down"}),"ChordMark preview",Ve.createElement(st,{iconName:"arrow_drop_down"})),Ve.createElement("div",{className:"sim-Preview_Container","data-testid":"sim-preview"},p?Ve.createElement(Ut,{inputFormat:c,error:p}):u)))))}En.propTypes={cancelImport:Ke().func.isRequired,content:Ke().string.isRequired,importFile:Ke().func.isRequired,isFromWeb:Ke().bool.isRequired,isImporting:Ke().bool.isRequired,setContent:Ke().func.isRequired,setInputFormat:Ke().func.isRequired,inputFormat:Ke().string.isRequired,title:Ke().string},En.defaultProps={};const wn=En,Pn=(0,Ue.$j)((function(e){return{content:Pt(e),isFromWeb:St(e),isImporting:Ft(e),inputFormat:Rt(e),title:jt(e)}}),{setContent:function(e,t){return Be(be,{content:e,title:t})},setInputFormat:function(e){return Be(ve,{inputFormat:e})},cancelImport:function(){return Be(he)},importFile:Et})(wn),Rn=[{id:"edit",label:"Edit",icon:"create",editorMode:"edit"},{id:"play",label:"Screen view",icon:"music_note",editorMode:"play"},{id:"print",label:"Print/PDF Preview",icon:"print",editorMode:"print"},{id:"export",label:"Export Preview",icon:"save_alt",editorMode:"export"}];function jn(e){var t=e.editorMode,n=e.isLeftBarCollapsed,r=e.isRightBarCollapsed,o=e.toggleLeftBar,i=e.toggleRightBar,a=e.setEditorMode,l=e.selectedId,c=e.leftBar,s=e.rightBar,u=["leftBar"];n&&u.push("leftBar-isCollapsed");var p=["rightBar"];return r&&p.push("rightBar-isCollapsed"),Ve.createElement("div",{className:"appLayout-wrapper"},Ve.createElement(Pn,null),Ve.createElement("section",{className:u.join(" ")},Ve.createElement("div",{className:"leftBar-content",onClick:n?o:null},Ve.createElement(lt,null),c),Ve.createElement("div",{className:"leftBar-collapser",onClick:o,"data-testid":"leftBar-collapser"},Ve.createElement("span",{className:"leftBar-collapserIcon"},Ve.createElement(st,{iconName:"keyboard_arrow_left"})))),Ve.createElement("section",{className:"appLayout-main"},Ve.createElement("section",{className:"appLayout-header"},Ve.createElement(ft,{allEntries:Rn,currentMode:t,setEditorMode:a,selectedId:l})),Ve.createElement("section",{className:"appLayout-content"},e.children)),Ve.createElement("section",{className:p.join(" ")},Ve.createElement("div",{className:"rightBar-collapser",onClick:i,"data-testid":"rightBar-collapser"},Ve.createElement("span",{className:"rightBar-collapserIcon"},Ve.createElement(st,{iconName:"keyboard_arrow_right"}))),Ve.createElement("div",{className:"rightBar-content",onClick:r?i:null},Ve.createElement(bt,null),s,Ve.createElement(Ct,null))))}jn.propTypes={children:Ke().element,isLeftBarCollapsed:Ke().bool,isRightBarCollapsed:Ke().bool,selectedId:Ke().string,toggleLeftBar:Ke().func.isRequired,toggleRightBar:Ke().func.isRequired,editorMode:Ke().string.isRequired,setEditorMode:Ke().func.isRequired,leftBar:Ke().element.isRequired,rightBar:Ke().element.isRequired},jn.defaultProps={isLeftBarCollapsed:!1,isRightBarCollapsed:!1};const Fn=jn,Sn=(0,Ue.$j)((function(e){return{editorMode:E(e),isLeftBarCollapsed:C(e),isRightBarCollapsed:O(e),selectedId:w(e)}}),{toggleLeftBar:function(){return Be(b)},toggleRightBar:function(){return Be(v)},setEditorMode:ot})(Fn);n("ma9I");var Nn=n("Iab2"),qn=(n("EnZy"),n("XHOe")),kn=n("1C0g"),Tn=n.n(kn);function xn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function In(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function An(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return Mn(e,t,n,"html")}function Mn(e,t,n,r){if(n&&"chordmarkSrc"===t.chartFormat)return"html"===r?Bn(e):e;if(n&&"chordpro"===t.chartFormat){t.customRenderer=Tn();var o=_n(e,t);return"html"===r?Bn(o):o}var i=_n(e,t);return"html"===r?i:i.split("\n").map((function(e){return Ee(e)})).map((function(e){return" "===e?"":e})).join("\n")}function _n(e,t){try{var n=(0,qn.parseSong)(e);return(0,qn.renderSong)(n,function(e){for(var t=1;t".concat(e,"

")})).join("\n")}function Dn(){var e=_e().getState(),t=w(e),n=L(e,t),r={transposeValue:te(e,"songPreferences","transposeValue"),harmonizeAccidentals:te(e,"songPreferences","harmonizeAccidentals"),accidentalsType:te(e,"songPreferences","accidentalsType"),chartType:te(e,"songFormatting","chartType"),chartFormat:te(e,"songFormatting","chartFormat"),alignChordsWithLyrics:te(e,"songFormatting","alignChordsWithLyrics"),alignBars:te(e,"songFormatting","alignBars"),autoRepeatChords:te(e,"songFormatting","autoRepeatChords"),expandSectionCopy:te(e,"songFormatting","expandSectionCopy")},o=function(e){return Mn(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]&&arguments[2],"text")}(n.content,r,!0),i="chordpro"===r.chartFormat?"cho":"txt",a="".concat(n.title,".").concat(i),l=new Blob([o],{type:"text/plain;charset=utf-8",endings:"native"});(0,Nn.saveAs)(l,a)}function Ln(e){var t=e.confirmAction,n=e.confirmTitle,r=void 0===n?"OK":n,o=e.cancelAction,i=e.cancelTitle,a=void 0===i?"CANCEL":i,l=e.children;return Ve.createElement(qt,{closeModal:o},Ve.createElement("section",{className:"mod-ModalConfirmContainer"},Ve.createElement("div",{className:"mod-ModalConfirmMessage"},l),Ve.createElement("div",{className:"mod-ModalConfirmButtons"},Ve.createElement(ht,{onClick:o,type:"secondary",buttonName:"cancel"},a),Ve.createElement(ht,{onClick:t,type:"primary",buttonName:"confirm"},r))))}Ln.propTypes={confirmAction:Ke().func.isRequired,confirmTitle:Ke().string,cancelAction:Ke().func.isRequired,cancelTitle:Ke().string,children:Ke().node.isRequired};const zn=Ln;function Wn(e){var t=e.selected,n=e.deleteFile,r=e.isDeleting,o=e.setIsDeleting;if(!r)return null;return Ve.createElement(zn,{confirmAction:function(){o(!1),n(t)},confirmTitle:"DELETE",cancelAction:function(){return o(!1)}},"Are you sure you want to delete this file?",Ve.createElement("br",null),"This action cannot be undone.")}Wn.propTypes={deleteFile:Ke().func.isRequired,isDeleting:Ke().bool.isRequired,selected:Ke().string.isRequired,setIsDeleting:Ke().func.isRequired};const Gn=Wn;function Hn(e){var t=e.icon,n=e.text,r=e.action,o=e.isDisabled,i=["fileManagerAction"];o&&i.push("fileManagerAction-isDisabled");return Ve.createElement("span",{className:i.join(" "),onClick:function(){o||r()}},Ve.createElement("span",{className:"fileManagerAction-icon"},Ve.createElement(st,{iconName:t})," ",n))}Hn.propTypes={icon:Ke().string.isRequired,text:Ke().string.isRequired,action:Ke().func.isRequired,isDisabled:Ke().bool.isRequired};const Vn=Ve.memo(Hn);function $n(){return $n=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"";if(!e)throw new TypeError("Cannot create a file without title");var n={id:(0,Ot.Z)(),title:e,content:t};return Be(d,n)},deleteFile:function(e){return Be(m,{id:e})},updateFile:wt,enableRename:function(e){return Be(ee,{id:e})},setEditorMode:ot,startImport:function(){return Be(ye,{isFromWeb:!1})}})(nr);var or=n("awlu");function ir(e){return Oe().sanitize(e)}function ar(e){var t=e.content,n=e.useChartFormat,r=An(t,u()(e,["transposeValue","harmonizeAccidentals","accidentalsType","chartType","chartFormat","alignChordsWithLyrics","alignBars","autoRepeatChords","expandSectionCopy"]),n);return Ve.createElement("div",{className:"songRenderer"},Ve.createElement("div",{dangerouslySetInnerHTML:{__html:ir(r)}}))}ar.propTypes={useChartFormat:Ke().bool.isRequired,chartFormat:Ke().string.isRequired,content:Ke().string},ar.defaultProps={content:"",useChartFormat:!1};const lr=ar,cr=(0,Ue.$j)((function(e){return{transposeValue:te(e,"songPreferences","transposeValue"),harmonizeAccidentals:te(e,"songPreferences","harmonizeAccidentals"),accidentalsType:te(e,"songPreferences","preferredAccidentals"),chartFormat:te(e,"songFormatting","chartFormat"),chartType:te(e,"songFormatting","chartType"),alignChordsWithLyrics:te(e,"songFormatting","alignChordsWithLyrics"),alignBars:te(e,"songFormatting","alignBars"),autoRepeatChords:te(e,"songFormatting","autoRepeatChords"),expandSectionCopy:te(e,"songFormatting","expandSectionCopy")}}))(lr);function sr(e){var t=e.selectedFile;return Ve.createElement("div",{className:["editorPreview"].join(" ")},Ve.createElement(cr,{content:t.content}))}sr.propTypes={selectedFile:Ke().object.isRequired};const ur=sr,pr=(0,Ue.$j)((function(){return{}}))(ur);var dr=n("UxO+"),mr=n("V2qZ"),fr=n("BUsU"),gr=n("SxI5"),hr=n("ABBN"),yr=n("lGMC");const br=new fr.V_({nodes:{doc:{content:"block+"},paragraph:{content:"inline*",group:"block",parseDOM:[{tag:"p"}],toDOM:function(){return["p",0]}},hard_break:{inline:!0,group:"inline",selectable:!1,parseDOM:[{tag:"br"}],toDOM:function(){return["br"]}},text:{group:"inline"}}});n("vxnP");function vr(e){return e.toJSON().doc.content.map((function(e){return e.content?e.content.reduce((function(e,t){return e+=t.text||"\n"}),""):""})).join("\n")}function Cr(e){return Oe().sanitize(e,{ALLOWED_TAGS:["p","#text"],KEEP_CONTENT:!1})}function Or(e){var t,n,r=e.selectedFileId,o=e.editorContent,i=e.updateFile,a=(0,Ve.useRef)(),l=(0,Ve.useRef)(),c=(t=r,n=(0,Ve.useRef)(),(0,Ve.useEffect)((function(){n.current=t})),n.current);function s(){return a.current&&a.current.dom.parentNode}function u(){a.current.dom.parentNode.removeChild(a.current.dom)}return(0,Ve.useEffect)((function(){if(!r||a.current&&c===r)s()&&!r&&u();else{s()&&u();var e=function(e){return dr.yy.create({doc:fr.aw.fromSchema(br).parse((t=e,n=Cr(t).split("\n").map((function(e){return"

".concat(e,"

")})).join(""),r=document.createElement("div"),r.innerHTML=Cr(n),r),{preserveWhitespace:"full"}),plugins:[(0,yr.m8)(),(0,gr.h)({"Mod-z":yr.Yw,"Mod-y":yr.KX}),(0,gr.h)(hr.YR)]});var t,n,r}(o);a.current=function(e,t,n){return new mr.tk(null,{state:e,dispatchTransaction:function(e){var r=this.state.applyTransaction(e),o=r.state,i=r.transactions;this.updateState(o),i.some((function(e){return e.docChanged}))&&t(n,{content:vr(o)})}})}(e,i,r),l.current.appendChild(a.current.dom),Or.editorView=a.current}})),Ve.createElement("div",{className:"prosemirrorWrapper",ref:l})}Or.defaultProps={selectedFileId:"",editorContent:""},Or.propTypes={selectedFileId:Ke().string,editorContent:Ke().string,updateFile:Ke().func.isRequired};const Er=Or;function wr(e){var t=e.selectedFile,n=e.updateFile;return Ve.createElement(or.E,null,Ve.createElement("div",{className:"songEditor"},Ve.createElement(or.z,{group:"a"},Ve.createElement("div",{className:"songEditor-source"},Ve.createElement(Er,{editorContent:t.content,updateFile:n,selectedFileId:t.id}))),Ve.createElement(or.z,{group:"a"},Ve.createElement("div",{className:"songEditor-preview"},Ve.createElement(pr,{selectedFile:t})))))}wr.propTypes={selectedFile:Ke().object,updateFile:Ke().func.isRequired};const Pr=wr;function Rr(e){var t=e.selectedFile;return Ve.createElement("div",{className:"exportPreview exp-SongRenderer"},Ve.createElement(cr,{content:t.content,useChartFormat:!0}))}Rr.propTypes={selectedFile:Ke().object.isRequired};const jr=Rr;function Fr(e){var t=e.selectedFile,n=e.fontSize,r=e.chordsColor,o=e.highlightChords,i=e.columnsCount,a=["playRenderer"];return a.push("playRenderer--columns-"+i),a.push("cmLine--fontSize"+n),a.push("cmChordSymbol--chordsColor-"+r),o&&a.push("cmChordLine--highlightChords"),Ve.createElement("div",{className:"playRendererWrapper1"},Ve.createElement("div",{className:"playRendererWrapper2"},Ve.createElement("div",{className:a.join(" "),"data-testid":"playRenderer"},Ve.createElement(cr,{content:t.content}))))}Fr.propTypes={selectedFile:Ke().object.isRequired,columnsCount:Ke().number.isRequired,fontSize:Ke().number.isRequired,chordsColor:Ke().string.isRequired,highlightChords:Ke().bool.isRequired};const Sr=Fr,Nr=(0,Ue.$j)((function(e){return{chordsColor:te(e,"songFormatting","chordsColor"),highlightChords:te(e,"songFormatting","highlightChords"),fontSize:te(e,"songFormatting","fontSize"),columnsCount:te(e,"songFormatting","columnsCount")}}))(Sr);n("ls82");function qr(e){var t=e.pageHeader,n=e.allColumnsLines,r=e.documentSize,o=e.documentMargins,i=e.fontSize,a=n.map((function(e,t){var n=e.join("\n");return Ve.createElement("div",{key:t,className:"printPreview-pageColumn","data-testid":"printPreview-pageColumn",dangerouslySetInnerHTML:{__html:ir(n)}})})),l=["printPreview-page"];l.push("printPreview-page--"+r),l.push("printPreview-page--font"+i);var c=["printPreview-pageContentWrapper"];return c.push("printPreview-pageContentWrapper--padding"+o),Ve.createElement("div",{className:l.join(" "),"data-testid":"printPreview-page"},Ve.createElement("div",{className:c.join(" "),"data-testid":"printPreview-pageContentWrapper"},Ve.createElement("div",{className:"printPreview-pageContent"},t,Ve.createElement("div",{className:"printPreview-pageColumnWrapper"},a))))}qr.defaultProps={allColumnsLines:[]},qr.propTypes={pageHeader:Ke().element,allColumnsLines:Ke().arrayOf(Ke().arrayOf(Ke().string)),documentSize:Ke().string.isRequired,documentMargins:Ke().number.isRequired,fontSize:Ke().number.isRequired};const kr=Ve.memo(qr);function Tr(e){var t=e.title;return Ve.createElement("div",{className:"printPreview-pageHeader"},t)}Tr.defaultProps={allColumnsLines:[]},Tr.propTypes={title:Ke().string.isRequired};const xr=Ve.memo(Tr);var Ir="cmEmptyLine",Ar="cmChordLine",Mr="cmTextLine";function _r(e,t){var n=t.columnsCount,r=t.firstPageHeight,o=t.normalPageHeight,i=t.columnBreakOnParagraph,a=t.noEmptyLinesOnColumnStart,l=void 0===a||a,c=t.noOrphanTextLine,s=void 0===c||c,u=function(e){var t=e.firstPageHeight,n=e.normalPageHeight,r=e.columnsCount,o=[],i=0,a=0,l=u(),c=0;function s(e){e.forEach((function(e){p(c+e.height)&&d(),o[i][a].push(e.content),c+=e.height}))}function u(){return 0===i&&t?t:n}function p(e){return e>l}function d(){m()?(i++,o[i]=[],a=0):a++,o[i][a]=[],c=0,l=u()}function m(){return a===r-1}return o[i]=[],o[i][a]=[],{insert:function(e){s(e)},insertOnNextColumn:function(e){d(),s(e)},fitsOnCurrentColumn:function(e){return c+e<=l},fitsOnNextColumn:function(e){return e<=(0===i&&a0&&e.forEach((function(t,n){(function(e,t,n,r){return!(Br(t)&&!e.fitsOnCurrentColumn(t.height)&&0===n.length&&!0===r)})(u,t,p,l)&&(p.push(t),d+=t.height),p.length>0&&function(e,t,n){var r=n.noOrphanTextLine,o=n.columnBreakOnParagraph;if(Br(e)||!t)return!0;var i=function(e){return Dr(e.content,Ar)}(e)&&function(e){return Dr(e.content,Mr)}(t);if(!0===r&&i)return!1;var a=Br(t);if(!0===o&&!a)return!1;return!0}(t,e[n+1],{noOrphanTextLine:s,columnBreakOnParagraph:i})&&(u.fitsOnCurrentColumn(d)?u.insert(p):u.fitsOnNextColumn(d)?u.insertOnNextColumn(p):u.insert(p),p=[],d=0)})),u.get()}function Br(e){return Dr(e.content,Ir)}function Dr(e,t){return e.indexOf(t)>-1}function Lr(e,t){var n=document.createElement("div");return n.classList.add("measuring-node"),document.body.appendChild(n),new Promise((function(r){$e.render(Ve.createElement("div",null,e),n,(function(){var e=t(n);$e.unmountComponentAtNode(n),n.parentNode.removeChild(n),r(e)}))}))}function zr(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length||0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0}return c()||l.push("sb-optionsGroup-isNotInteractable"),!n||e.children&&0!==e.children.length||r(!1),Ve.createElement("div",{className:l.join(" ")},Ve.createElement("div",{className:"sb-optionsGroup-title",onClick:c()?function(){r(!n)}:null},Ve.createElement("div",{className:"sb-optionsGroup-label"},Ve.createElement("span",{className:"sb-optionsGroup-iconTitle"},Ve.createElement(st,{iconName:i}))," ",a),Ve.createElement("div",{className:"sb-optionsGroup-toggle"},Ve.createElement("span",{className:"sb-optionsGroup-iconToggle"},Ve.createElement(st,{iconName:n?"unfold_less":"unfold_more"})))),Ve.createElement("div",{className:"sb-optionsGroup-content"},n&&e.children))}bo.propTypes={isOpened:Ke().bool,isInteractable:Ke().bool.isRequired,icon:Ke().string.isRequired,label:Ke().string.isRequired,children:Ke().arrayOf(Ke().element)},bo.defaultProps={isOpened:!0};const vo=bo;n("fbCW");function Co(e){var t,n=e.isSelected,r=e.isInteractable,o=e.label,i=e.onClick,a=["sb-optionSelectChoice"];return n&&(a.push("sb-optionSelectChoice-isSelected"),t=Ve.createElement("span",{className:"sb-optionSelectChoice-checkIcon"},Ve.createElement(st,{iconName:"check"}))),r||a.push("sb-optionSelectChoice-isNotInteractable"),Ve.createElement("div",{className:a.join(" "),onClick:function(){r&&i()}},Ve.createElement("div",{className:"sb-optionSelectChoice-check"},n&&t),Ve.createElement("div",{className:"sb-optionSelectChoice-label"},o))}Co.propTypes={isSelected:Ke().bool.isRequired,isInteractable:Ke().bool.isRequired,label:Ke().string.isRequired,onClick:Ke().func.isRequired};const Oo=Ve.memo(Co);function Eo(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,i=[],a=!0,l=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){l=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(l)throw o}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return wo(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return wo(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function wo(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&i?"+"+c:c;return Ve.createElement("div",{className:u.join(" ")},Ve.createElement("div",{className:"sb-optionSlider-desc"},n),Ve.createElement("div",{className:"sb-optionSlider-value"},p),Ve.createElement("div",{className:"sb-optionSlider-range"},Ve.createElement("input",{min:r,max:o,value:c,type:"range",onChange:t?function(e){s(a,l,Number.parseInt(e.target.value))}:null,disabled:!t})))}jo.propTypes={isInteractable:Ke().bool.isRequired,label:Ke().string.isRequired,min:Ke().number.isRequired,max:Ke().number.isRequired,showPlusSymbol:Ke().bool,optionContext:Ke().string.isRequired,optionKey:Ke().string.isRequired,optionValue:Ke().number.isRequired,setOption:Ke().func.isRequired},jo.defaultProps={showPlusSymbol:!0};const Fo=Ve.memo(jo);function So(e){var t=e.isInteractable,n=e.label,r=e.optionContext,o=e.optionKey,i=e.optionValue,a=e.setOption,l=["sb-optionToggle"];return l.push(!0===i?"sb-optionToggle-isOn":"sb-optionToggle-isOff"),t||l.push("sb-optionToggle-isNotInteractable"),Ve.createElement("div",{className:l.join(" "),onClick:t?function(){a(r,o,!i)}:null},Ve.createElement("div",{className:"sb-optionToggle-desc"},n),Ve.createElement("div",{className:"sb-optionToggle-icon"},Ve.createElement("span",{className:"sb-optionToggle-icon"},Ve.createElement(st,{iconName:!0===i?"toggle_on":"toggle_off"}))))}So.propTypes={isInteractable:Ke().bool.isRequired,label:Ke().string.isRequired,optionContext:Ke().string.isRequired,optionKey:Ke().string.isRequired,optionValue:Ke().bool.isRequired,setOption:Ke().func.isRequired};const No=Ve.memo(So);function qo(){return qo=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n{e.exports=n.p+"33725b71b01853fb41bf.png"},jwii:e=>{e.exports="Welcome to Chord Charts Studio!\n\nChord Charts Studio is the official editor of the ChordMark format. \nYou can use it to quickly write accurate transcription of songs made up of chords and lyrics. \n\nA % D7.. E7..\n_Just write _some chords, some _lyrics\n%\n_And see how it _looks: _terrific!\n\nWhere to start? You can either:\n- check the sample song on the left\n- read the user guide, by clicking the big yellow button in the top right corner\n\nHave fun!\n"},"9jg7":e=>{e.exports="#i\nC.. Am.. %\n%\n\n#v\nC.. Am..\nI _heard there was a _secret chord\n%\nThat _David played and it _pleased the lord\nF... G. C.. G..\nBut _you don't really care for _music, _do you?\nC.. F. G.\nWell it _goes like this the _fourth, the _fifth\nAm.. F..\nThe _minor fall and the _major lift\nG.. E7.. Am\nThe _baffled king com_posing halle_lujah\n\n#c\nF\nHalle_lujah\nAm\nHalle_lujah\nF\nHalle_lujah\nC.. G.. C.. Am..\nHalle_lu_u_jah\n\n#v\nWell, your _faith was strong but you _needed proof\nYou _saw her bathing _on the roof\nHer _beauty and the moonlight _over_threw you\nShe _tied you to her _kitchen _chair\nShe _broke your throne and she _cut your hair\nAnd _from your lips she _drew the halle_lujah\n\n#c\n"}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=t,e=[],r.O=(t,n,o,i)=>{if(!n){var a=1/0;for(u=0;u=i)&&Object.keys(r.O).every((e=>r.O[e](n[c])))?n.splice(c--,1):(l=!1,i0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");n.length&&(e=n[n.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{var e={179:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var o,i,[a,l,c]=n,s=0;if(a.some((t=>0!==e[t]))){for(o in l)r.o(l,o)&&(r.m[o]=l[o]);if(c)var u=c(r)}for(t&&t(n);sr("SF5+")));o=r.O(o)})(); -//# sourceMappingURL=main.493c19c5bf42afc6ee19.js.map \ No newline at end of file +//# sourceMappingURL=main.1c1ff44e8eff34a1438d.js.map \ No newline at end of file diff --git a/packages/chord-charts-studio/build/main.493c19c5bf42afc6ee19.js.map b/packages/chord-charts-studio/build/main.1c1ff44e8eff34a1438d.js.map similarity index 99% rename from packages/chord-charts-studio/build/main.493c19c5bf42afc6ee19.js.map rename to packages/chord-charts-studio/build/main.1c1ff44e8eff34a1438d.js.map index 644aad3b..233a0c05 100644 --- a/packages/chord-charts-studio/build/main.493c19c5bf42afc6ee19.js.map +++ b/packages/chord-charts-studio/build/main.1c1ff44e8eff34a1438d.js.map @@ -1 +1 @@ -{"version":3,"file":"main.493c19c5bf42afc6ee19.js","mappings":"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","sources":["webpack://@touffi/chords-charts-studio/webpack/runtime/chunk loaded","webpack://@touffi/chords-charts-studio/./src/core/clock.js","webpack://@touffi/chords-charts-studio/./src/db/files/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/db/options/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_state/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_state/selectors.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_state/selectors.js","webpack://@touffi/chords-charts-studio/./src/db/files/selectors.js","webpack://@touffi/chords-charts-studio/./src/db/options/editorModeOptions.js","webpack://@touffi/chords-charts-studio/./src/db/files/reducers.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_state/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/db/options/selectors.js","webpack://@touffi/chords-charts-studio/./src/db/options/reducers.js","webpack://@touffi/chords-charts-studio/./src/db/reducers.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_state/reducers.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_state/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/core/stripTags.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_state/reducers.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_state/reducers.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/reducers.js","webpack://@touffi/chords-charts-studio/./src/ui/reducers.js","webpack://@touffi/chords-charts-studio/./src/state/reducers.js","webpack://@touffi/chords-charts-studio/./src/state/seed.js","webpack://@touffi/chords-charts-studio/./src/db/seed.js","webpack://@touffi/chords-charts-studio/./src/db/options/seed.js","webpack://@touffi/chords-charts-studio/./src/state/store.js","webpack://@touffi/chords-charts-studio/./src/state/localStorage.js","webpack://@touffi/chords-charts-studio/./src/core/createAction.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_state/actions.js","webpack://@touffi/chords-charts-studio/./src/songImporter/getMessageHandlers.js","webpack://@touffi/chords-charts-studio/./src/registerHandlers.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/ErrorBoundary.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_state/actions.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/Logo.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/Icon.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/NavEntry.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/Nav.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/Button.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/UserGuide.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/Versions.js","webpack://@touffi/chords-charts-studio/./src/core/getVersions.js","webpack://@touffi/chords-charts-studio/./src/db/files/actions.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_state/selectors.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/Modal.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/Header.js","webpack://@touffi/chords-charts-studio/./src/songImporter/getUploadedFile.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/FilePicker.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/Input.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/PreviewError.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/InputFormatEntry.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/InputFormatSelector.js","webpack://@touffi/chords-charts-studio/./src/core/converters/chordSheetJs2ChordMark.js","webpack://@touffi/chords-charts-studio/./src/core/converters/ultimateGuitar2ChordMark.js","webpack://@touffi/chords-charts-studio/./src/songImporter/input2ChordMark.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/SongImporter.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_containers/SongImporter.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/allNavEntries.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/App.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_containers/App.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_state/actions.js","webpack://@touffi/chords-charts-studio/./src/core/renderSong.js","webpack://@touffi/chords-charts-studio/./src/fileManager/exportSelectedFileAsText.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/ModalConfirm.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/DeleteConfirmModal.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileActionEntry.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileActions.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileEntry.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileManager.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_containers/FileManager.js","webpack://@touffi/chords-charts-studio/./src/core/escapeHTML.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/_components/SongRenderer.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/_containers/SongRenderer.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/editorPreview/_components/EditorPreview.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/editorPreview/_containers/EditorPreview.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/schema.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/converters/stateToText.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/converters/toSafeHtml.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/ProsemirrorEditorView.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/converters/textToDom.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/getPlugins.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/_components/EditorLayout.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/exportPreview/_components/ExportPreview.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/playRenderer/_components/PlayRenderer.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/playRenderer/_containers/PlayRenderer.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/Page.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/PageHeader.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/mapLinesToColumns.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/getDimensionsFromDom.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/padColumns.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/element.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/getAllLinesHeight.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/getPagesHeight.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/AllPages.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/PrintPreview.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_containers/PrintPreview.js","webpack://@touffi/chords-charts-studio/./src/editor/_components/Editor.js","webpack://@touffi/chords-charts-studio/./src/editor/_containers/Editor.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/_components/OptionsPanel.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/OptionsGroup.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/SelectChoice.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Select.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Slider.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Toggle.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/SidebarOptionsPanel.js","webpack://@touffi/chords-charts-studio/./src/db/options/actions.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/_containers/Rendering.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/_containers/OptionsPanelFactory.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/allWidgets.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/_state/selectors.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/_components/Rendering.js","webpack://@touffi/chords-charts-studio/./src/controllers/Editor.js","webpack://@touffi/chords-charts-studio/./src/router.js","webpack://@touffi/chords-charts-studio/./src/renderController.js","webpack://@touffi/chords-charts-studio/./src/app.js","webpack://@touffi/chords-charts-studio/./src/addSampleContent.js","webpack://@touffi/chords-charts-studio/webpack/bootstrap","webpack://@touffi/chords-charts-studio/webpack/runtime/compat get default export","webpack://@touffi/chords-charts-studio/webpack/runtime/define property getters","webpack://@touffi/chords-charts-studio/webpack/runtime/global","webpack://@touffi/chords-charts-studio/webpack/runtime/hasOwnProperty shorthand","webpack://@touffi/chords-charts-studio/webpack/runtime/node module decorator","webpack://@touffi/chords-charts-studio/webpack/runtime/publicPath","webpack://@touffi/chords-charts-studio/webpack/runtime/jsonp chunk loading","webpack://@touffi/chords-charts-studio/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","export default function clock() {\n\treturn Date.now();\n}\n","export const DB_FILES_CREATE = 'db/files/Create';\nexport const DB_FILES_DELETE = 'db/files/Delete';\nexport const DB_FILES_IMPORT = 'db/files/Import';\nexport const DB_FILES_UPDATE = 'db/files/Update';\n","export const DB_OPTION_SET_OPTION_VALUE = 'db/options/setOptionValue';\n","export const UI_LAYOUT_APP_SET_EDITOR_MODE = 'ui/layout/app/setEditorMode';\nexport const UI_LAYOUT_APP_TOGGLE_LEFT_BAR = 'ui/layout/app/toggleLeftBar';\nexport const UI_LAYOUT_APP_TOGGLE_RIGHT_BAR = 'ui/layout/app/toggleRightBar';\n","export const isLeftBarCollapsed = (state) =>\n\tstate.ui.layout.app.isLeftBarCollapsed;\n\nexport const isRightBarCollapsed = (state) =>\n\tstate.ui.layout.app.isRightBarCollapsed;\n\nexport const getEditorMode = (state) => state.ui.layout.app.editorMode;\n","export const getSelectedId = (state) => state.fileManager.selected;\n\nexport const getRenamedId = (state) => state.fileManager.renamed;\n\nexport const getDefaultTitle = (state) => state.fileManager.defaultTitle;\n","import _map from 'lodash/map';\nimport _cloneDeep from 'lodash/cloneDeep';\nimport _isEqual from 'lodash/isEqual';\nimport _sortBy from 'lodash/sortBy';\n\nimport { createSelectorCreator, defaultMemoize } from 'reselect';\n\n// create a \"selector creator\" that uses lodash.isEqual instead of ===\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _isEqual);\n\n// return value should not change when file content changes\nexport const getAllTitles = createDeepEqualSelector(\n\t(state) =>\n\t\t_map(state.db.files.allFiles, ({ title, id }) => ({ title, id })),\n\t(allFiles) => _sortBy(allFiles, (o) => o.title.toLowerCase())\n);\n\nexport const getOne = (state, id) => {\n\treturn state.db.files.allFiles[id];\n};\n\nexport const getCategoryOptions = (state, id, category) => {\n\tconst file = state.db.files.allFiles[id];\n\n\tif (!file) return;\n\n\tif ((file.options || {})[category]) {\n\t\t// handle edge cases where we might have an empty object...\n\t\t// of course this _should_ never happen!\n\t\tif (Object.keys(file.options[category]).length === 0) return;\n\n\t\treturn _cloneDeep(file.options[category]);\n\t}\n};\n\nexport const getLatestModeOptions = (state, id) => {\n\tconst file = state.db.files.allFiles[id];\n\n\tif (!file) return;\n\n\tconst fileOptions = file.options || {};\n\n\tconst allOptionsPerMode = [];\n\tif (fileOptions.edit) allOptionsPerMode.push({ ...fileOptions.edit });\n\tif (fileOptions.play) allOptionsPerMode.push({ ...fileOptions.play });\n\tif (fileOptions.print) allOptionsPerMode.push({ ...fileOptions.print });\n\tif (fileOptions.export) allOptionsPerMode.push({ ...fileOptions.export });\n\n\tif (!allOptionsPerMode.length) return;\n\n\tallOptionsPerMode.sort((a, b) => a.updatedAt - b.updatedAt);\n\n\treturn allOptionsPerMode.reduce(\n\t\t(acc, modeOptions) => Object.assign(acc, modeOptions),\n\t\t{}\n\t);\n};\n","const editorModeOptions = {\n\tedit: [],\n\tplay: [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'preferredAccidentals',\n\n\t\t'chartType',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\n\t\t'columnsCount',\n\n\t\t'fontSize',\n\t\t'chordsColor',\n\t\t'highlightChords',\n\t],\n\tprint: [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'preferredAccidentals',\n\n\t\t'chartType',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\n\t\t'columnsCount',\n\t\t'columnBreakOnParagraph',\n\t\t'documentMargins',\n\n\t\t'fontSize',\n\t\t'highlightChords',\n\t],\n\texport: [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'preferredAccidentals',\n\n\t\t'chartFormat',\n\t\t'chartType',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\t],\n};\n\nexport default editorModeOptions;\n","import _pick from 'lodash/pick';\nimport clock from '../../core/clock';\n\nimport * as actionTypes from './actionsTypes';\n\nimport { DB_OPTION_SET_OPTION_VALUE } from '../options/actionsTypes';\nimport { UI_LAYOUT_APP_SET_EDITOR_MODE } from '../../ui/layout/app/_state/actionsTypes';\nimport { getEditorMode } from '../../ui/layout/app/_state/selectors';\nimport { getSelectedId } from '../../fileManager/_state/selectors';\nimport { getLatestModeOptions, getCategoryOptions } from './selectors';\nimport editorModeOptions from '../options/editorModeOptions';\n\nconst initialState = {\n\tallFiles: {},\n};\n\nfunction createFile(state, action) {\n\tconst { id, title, content } = action.payload;\n\n\tconst allFiles = { ...state.allFiles };\n\tallFiles[id] = {\n\t\tid,\n\t\ttitle,\n\t\tcontent,\n\t};\n\n\treturn {\n\t\t...state,\n\t\tallFiles,\n\t};\n}\n\nfunction updateFile(state, action) {\n\tconst { id, title, content } = action.payload;\n\n\tif ((!title && typeof content === 'undefined') || !state.allFiles[id]) {\n\t\treturn state;\n\t}\n\n\tconst allFiles = { ...state.allFiles };\n\n\tallFiles[id] = { ...allFiles[id] };\n\n\tif (title) {\n\t\tallFiles[id].title = title;\n\t}\n\tif (typeof content !== 'undefined') {\n\t\tallFiles[id].content = content;\n\t}\n\treturn {\n\t\t...state,\n\t\tallFiles,\n\t};\n}\n\nfunction deleteFile(state, action) {\n\tconst { id } = action.payload;\n\n\tif (!id || !state.allFiles[id]) {\n\t\treturn state;\n\t}\n\n\tconst allFiles = { ...state.allFiles };\n\tdelete allFiles[id];\n\n\treturn {\n\t\t...state,\n\t\tallFiles,\n\t};\n}\n\n/**\n * Whenever the user set an option, we save it in the song entity, either:\n * - for the current editing mode if it is a formatting option\n * - in the preferences otherwise\n */\nfunction updateFileOption(state, action, fullState) {\n\tconst { context, key, value } = action.payload;\n\tconst id = getSelectedId(fullState);\n\tconst allFiles = { ...state.allFiles };\n\n\tif (\n\t\t['songFormatting', 'songPreferences'].includes(context) &&\n\t\tallFiles[id]\n\t) {\n\t\tconst editorMode = getEditorMode(fullState);\n\t\tconst optionCategory =\n\t\t\tcontext === 'songPreferences' ? 'preferences' : editorMode;\n\n\t\tallFiles[id] = addOption(allFiles[id], optionCategory, key, value);\n\t\treturn {\n\t\t\t...state,\n\t\t\tallFiles,\n\t\t};\n\t}\n\treturn state;\n}\n\nfunction addOption(fileState, category, key, value) {\n\treturn {\n\t\t...fileState,\n\t\toptions: {\n\t\t\t...fileState.options,\n\t\t\t[category]: {\n\t\t\t\t...(fileState.options || {})[category],\n\t\t\t\tupdatedAt: clock(),\n\t\t\t\t[key]: value,\n\t\t\t},\n\t\t},\n\t};\n}\n\n/**\n * When a user switch mode and the target mode does not have any saved settings yet,\n * we apply the latest saved settings (all modes merged) for a better user flow\n */\nfunction setEditorMode(state, action, fullState) {\n\tconst fileId = getSelectedId(fullState);\n\tconst nextMode = action.payload.mode;\n\n\tconst hasOptionsForNextMode = !!getCategoryOptions(\n\t\tfullState,\n\t\tfileId,\n\t\tnextMode\n\t);\n\n\tif (!hasOptionsForNextMode) {\n\t\tconst previousModeOptions = _pick(\n\t\t\tgetLatestModeOptions(fullState, fileId) || {},\n\t\t\teditorModeOptions[nextMode]\n\t\t);\n\n\t\tif (Object.keys(previousModeOptions).length) {\n\t\t\tpreviousModeOptions.updatedAt = clock();\n\t\t\tconst allFiles = { ...state.allFiles };\n\n\t\t\tallFiles[fileId] = {\n\t\t\t\t...allFiles[fileId],\n\t\t\t\toptions: {\n\t\t\t\t\t...allFiles[fileId].options,\n\t\t\t\t\t[nextMode]: previousModeOptions,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tallFiles,\n\t\t\t};\n\t\t}\n\t}\n\treturn state;\n}\n\nexport default (state = initialState, action = {}, fullState = {}) => {\n\tswitch (action.type) {\n\t\tcase actionTypes.DB_FILES_CREATE:\n\t\tcase actionTypes.DB_FILES_IMPORT:\n\t\t\treturn createFile(state, action);\n\t\tcase actionTypes.DB_FILES_UPDATE:\n\t\t\treturn updateFile(state, action);\n\t\tcase actionTypes.DB_FILES_DELETE:\n\t\t\treturn deleteFile(state, action);\n\t\tcase DB_OPTION_SET_OPTION_VALUE:\n\t\t\treturn updateFileOption(state, action, fullState);\n\t\tcase UI_LAYOUT_APP_SET_EDITOR_MODE:\n\t\t\treturn setEditorMode(state, action, fullState);\n\t}\n\treturn state;\n};\n","export const FILE_MANAGER_SELECT_FILE = 'fileManager/select';\nexport const FILE_MANAGER_ENABLE_RENAME = 'fileManager/enableRename';\n","import _cloneDeep from 'lodash/cloneDeep';\n\nexport const getOptionValue = (state, context, key) => {\n\tif (\n\t\t!state.db.options[context] ||\n\t\t!state.db.options[context].values ||\n\t\ttypeof state.db.options[context].values[key] === 'undefined'\n\t) {\n\t\treturn;\n\t}\n\treturn state.db.options[context].values[key];\n};\n\nexport const getAllOptionValues = (state, context) => {\n\tif (!state.db.options[context] || !state.db.options[context].values) {\n\t\treturn;\n\t}\n\treturn _cloneDeep(state.db.options[context].values);\n};\n\nexport const getOptionsDefaults = (state, context) => {\n\tif (!state.db.options[context] || !state.db.options[context].defaults) {\n\t\treturn;\n\t}\n\treturn _cloneDeep(state.db.options[context].defaults);\n};\n","import _pick from 'lodash/pick';\n\nimport * as actionTypes from './actionsTypes';\nimport { getCategoryOptions, getLatestModeOptions } from '../files/selectors';\n\nimport { UI_LAYOUT_APP_SET_EDITOR_MODE } from '../../ui/layout/app/_state/actionsTypes';\nimport { FILE_MANAGER_SELECT_FILE } from '../../fileManager/_state/actionsTypes';\nimport { getSelectedId } from '../../fileManager/_state/selectors';\nimport { getEditorMode } from '../../ui/layout/app/_state/selectors';\nimport { getOptionsDefaults } from './selectors';\nimport allEditorModeOptions from './editorModeOptions';\n\nconst initialState = {};\n\nfunction setOptionValue(state, action) {\n\tconst { context, key, value } = action.payload;\n\n\tif (\n\t\t!state[context] ||\n\t\t!state[context].values ||\n\t\ttypeof state[context].values[key] === 'undefined'\n\t) {\n\t\treturn state;\n\t}\n\n\tconst newState = {\n\t\t...state,\n\t\t[context]: {\n\t\t\t...state[context],\n\t\t\tvalues: { ...state[context].values },\n\t\t},\n\t};\n\tnewState[context].values[key] = value;\n\n\treturn newState;\n}\n\nfunction setEditorMode(state, action, fullState) {\n\tconst fileId = getSelectedId(fullState);\n\tconst nextMode = action.payload.mode;\n\n\tconst newOptions = getModeOptions(fullState, fileId, nextMode);\n\n\treturn {\n\t\t...state,\n\t\tsongFormatting: {\n\t\t\t...state.songFormatting,\n\t\t\tvalues: {\n\t\t\t\t...newOptions,\n\t\t\t},\n\t\t},\n\t};\n}\n\n// Get defined options for a mode, either because they exist for the given mode,\n// or building them from options stored in the other modes\nfunction getModeOptions(fullState, fileId, mode) {\n\tconst defaultOptions = getOptionsDefaults(fullState, 'songFormatting');\n\tlet editorModeOptions = getCategoryOptions(fullState, fileId, mode);\n\n\tif (!editorModeOptions) {\n\t\teditorModeOptions = getLatestModeOptions(fullState, fileId) || {};\n\t}\n\tdelete editorModeOptions.updatedAt;\n\n\t// take only relevant options for the mode\n\teditorModeOptions = _pick(editorModeOptions, allEditorModeOptions[mode]);\n\n\treturn Object.assign(defaultOptions, editorModeOptions);\n}\n\nfunction selectFile(state, action, fullState) {\n\tconst { id } = action.payload;\n\tconst editorMode = getEditorMode(fullState);\n\n\tconst newOptions = getModeOptions(fullState, id, editorMode);\n\n\tconst songPreferences =\n\t\tgetCategoryOptions(fullState, id, 'preferences') || {};\n\tdelete songPreferences.updatedAt;\n\n\tconst defaultPreferences = getOptionsDefaults(fullState, 'songPreferences');\n\n\tconst newPreferences = Object.assign(defaultPreferences, songPreferences);\n\n\treturn {\n\t\t...state,\n\t\tsongPreferences: {\n\t\t\t...state.songPreferences,\n\t\t\tvalues: {\n\t\t\t\t...newPreferences,\n\t\t\t},\n\t\t},\n\t\tsongFormatting: {\n\t\t\t...state.songFormatting,\n\t\t\tvalues: {\n\t\t\t\t...newOptions,\n\t\t\t},\n\t\t},\n\t};\n}\n\nexport default (state = initialState, action = {}, fullState = {}) => {\n\tswitch (action.type) {\n\t\tcase actionTypes.DB_OPTION_SET_OPTION_VALUE: {\n\t\t\treturn setOptionValue(state, action);\n\t\t}\n\t\tcase UI_LAYOUT_APP_SET_EDITOR_MODE: {\n\t\t\treturn setEditorMode(state, action, fullState);\n\t\t}\n\t\tcase FILE_MANAGER_SELECT_FILE: {\n\t\t\treturn selectFile(state, action, fullState);\n\t\t}\n\t}\n\treturn state;\n};\n","import combineSectionReducers from 'combine-section-reducers';\nimport files from './files/reducers';\nimport options from './options/reducers';\n\nexport default combineSectionReducers({\n\tfiles,\n\toptions,\n});\n","import {\n\tFILE_MANAGER_SELECT_FILE,\n\tFILE_MANAGER_ENABLE_RENAME,\n} from './actionsTypes';\n\nimport {\n\tDB_FILES_CREATE,\n\tDB_FILES_DELETE,\n\tDB_FILES_IMPORT,\n\tDB_FILES_UPDATE,\n} from '../../db/files/actionsTypes';\n\nconst initialState = {\n\tselected: '',\n\trenamed: '',\n\tdefaultTitle: '[untitled]',\n};\n\nexport default function reducers(state = initialState, action = {}) {\n\tswitch (action.type) {\n\t\tcase DB_FILES_CREATE: {\n\t\t\tconst { id } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselected: id,\n\t\t\t\trenamed: id,\n\t\t\t};\n\t\t}\n\n\t\tcase DB_FILES_IMPORT: {\n\t\t\tconst { id } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselected: id,\n\t\t\t\trenamed: '',\n\t\t\t};\n\t\t}\n\n\t\tcase DB_FILES_UPDATE: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trenamed: '',\n\t\t\t};\n\t\t}\n\n\t\tcase DB_FILES_DELETE: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselected: '',\n\t\t\t\trenamed: '',\n\t\t\t};\n\t\t}\n\n\t\tcase FILE_MANAGER_SELECT_FILE: {\n\t\t\tconst { id } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselected: id,\n\t\t\t\trenamed: id === state.renamed ? id : '',\n\t\t\t};\n\t\t}\n\n\t\tcase FILE_MANAGER_ENABLE_RENAME: {\n\t\t\tconst { id } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trenamed: id,\n\t\t\t};\n\t\t}\n\t}\n\treturn state;\n}\n","export const SONG_IMPORTER_IMPORT_CANCEL = 'songImporter/import/cancel';\nexport const SONG_IMPORTER_IMPORT_START = 'songImporter/import/start';\nexport const SONG_IMPORTER_SET_CONTENT = 'songImporter/setContent';\nexport const SONG_IMPORTER_SET_INPUT_FORMAT = 'songImporter/setInputFormat';\n","import domPurify from 'dompurify';\n\nexport default function stripTags(html) {\n\treturn domPurify.sanitize(html, {\n\t\tALLOWED_TAGS: ['#text'],\n\t\tKEEP_CONTENT: true,\n\t});\n}\n","import * as actions from './actionsTypes';\nimport { DB_FILES_IMPORT } from '../../db/files/actionsTypes';\n\nimport stripTags from '../../core/stripTags';\n\nconst initialState = {\n\tcontent: '',\n\tisFromWeb: false,\n\tisImporting: false,\n\tinputFormat: 'basic',\n\ttitle: '',\n};\n\nexport default function reducers(state = initialState, action = {}) {\n\tswitch (action.type) {\n\t\tcase actions.SONG_IMPORTER_SET_CONTENT: {\n\t\t\tconst { content, title = '' } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcontent: stripTags(content),\n\t\t\t\ttitle: title ? stripTags(title) : state.title,\n\t\t\t};\n\t\t}\n\n\t\tcase actions.SONG_IMPORTER_SET_INPUT_FORMAT: {\n\t\t\tconst { inputFormat } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tinputFormat,\n\t\t\t};\n\t\t}\n\n\t\tcase DB_FILES_IMPORT:\n\t\tcase actions.SONG_IMPORTER_IMPORT_CANCEL: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcontent: '',\n\t\t\t\ttitle: '',\n\t\t\t\tisImporting: false,\n\t\t\t};\n\t\t}\n\n\t\tcase actions.SONG_IMPORTER_IMPORT_START: {\n\t\t\tconst { content, inputFormat, title, isFromWeb } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisImporting: true,\n\t\t\t\tcontent: content ? stripTags(content) : '',\n\t\t\t\ttitle: title ? stripTags(title) : '',\n\t\t\t\tinputFormat: inputFormat || state.inputFormat,\n\t\t\t\tisFromWeb,\n\t\t\t};\n\t\t}\n\t}\n\treturn state;\n}\n","import {\n\tUI_LAYOUT_APP_TOGGLE_RIGHT_BAR,\n\tUI_LAYOUT_APP_TOGGLE_LEFT_BAR,\n\tUI_LAYOUT_APP_SET_EDITOR_MODE,\n} from './actionsTypes';\n\nimport {\n\tDB_FILES_CREATE,\n\tDB_FILES_IMPORT,\n\tDB_FILES_DELETE,\n} from '../../../../db/files/actionsTypes';\n\nconst initialState = {\n\tisLeftBarCollapsed: false,\n\tisRightBarCollapsed: false,\n\teditorMode: 'edit',\n\tactiveModal: 'none',\n};\n\nexport default function reducers(state = initialState, action = {}) {\n\tswitch (action.type) {\n\t\tcase UI_LAYOUT_APP_TOGGLE_LEFT_BAR: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisLeftBarCollapsed: !state.isLeftBarCollapsed,\n\t\t\t};\n\t\t}\n\t\tcase UI_LAYOUT_APP_TOGGLE_RIGHT_BAR: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisRightBarCollapsed: !state.isRightBarCollapsed,\n\t\t\t};\n\t\t}\n\t\tcase UI_LAYOUT_APP_SET_EDITOR_MODE: {\n\t\t\tconst { mode } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditorMode: mode,\n\t\t\t};\n\t\t}\n\t\tcase DB_FILES_DELETE:\n\t\tcase DB_FILES_CREATE:\n\t\tcase DB_FILES_IMPORT: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditorMode: 'edit',\n\t\t\t};\n\t\t}\n\t}\n\treturn state;\n}\n","import combineSectionReducers from 'combine-section-reducers';\nimport app from './app/_state/reducers';\n\nexport default combineSectionReducers({\n\tapp,\n});\n","import combineSectionReducers from 'combine-section-reducers';\nimport layout from './layout/reducers';\n\nexport default combineSectionReducers({\n\tlayout,\n});\n","import combineSectionReducers from 'combine-section-reducers';\n\nimport db from '../db/reducers';\nimport fileManager from '../fileManager/_state/reducers';\nimport songImporter from '../songImporter/_state/reducers';\nimport ui from '../ui/reducers';\n\nexport default combineSectionReducers({\n\tdb,\n\tfileManager,\n\tsongImporter,\n\tui,\n});\n","import db from '../db/seed';\n\nexport default {\n\tdb,\n};\n","import options from './options/seed';\n\nexport default {\n\toptions,\n};\n","export default {\n\t// songPreferences are identical for all song rendering modes\n\t// therefore, they are only saved once for each song\n\tsongPreferences: {\n\t\tvalues: {\n\t\t\ttransposeValue: 0,\n\t\t\tharmonizeAccidentals: true,\n\t\t\tpreferredAccidentals: 'auto',\n\t\t},\n\t\tdefaults: {\n\t\t\ttransposeValue: 0,\n\t\t\tharmonizeAccidentals: true,\n\t\t\tpreferredAccidentals: 'auto',\n\t\t},\n\t\t//userDefaults: {},\n\t},\n\t// songFormatting options are specific to a given mode (print, export...)\n\t// they are saved separately for each song\n\tsongFormatting: {\n\t\tvalues: {\n\t\t\tchartFormat: 'chordmark',\n\t\t\tchartType: 'all',\n\t\t\talignChordsWithLyrics: true,\n\t\t\talignBars: true,\n\t\t\tautoRepeatChords: true,\n\t\t\texpandSectionCopy: true,\n\n\t\t\tcolumnsCount: 1,\n\t\t\tcolumnBreakOnParagraph: true,\n\t\t\tdocumentMargins: 3,\n\n\t\t\tfontSize: 0,\n\t\t\tchordsColor: 'yellow',\n\t\t\thighlightChords: false,\n\t\t},\n\t\tdefaults: {\n\t\t\tchartFormat: 'chordmark',\n\t\t\tchartType: 'all',\n\t\t\talignChordsWithLyrics: true,\n\t\t\talignBars: true,\n\t\t\tautoRepeatChords: true,\n\t\t\texpandSectionCopy: true,\n\n\t\t\tcolumnsCount: 1,\n\t\t\tcolumnBreakOnParagraph: true,\n\t\t\tdocumentMargins: 3,\n\n\t\t\tfontSize: 0,\n\t\t\tchordsColor: 'yellow',\n\t\t\thighlightChords: false,\n\t\t},\n\t\t//userDefaults: {},\n\t},\n};\n","import _defaultsDeep from 'lodash/defaultsDeep';\n\nimport { createStore as createReduxStore, applyMiddleware } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport thunkMiddleware from 'redux-thunk';\n\nimport { loadState, saveState } from './localStorage';\nimport allReducers from './reducers';\nimport seed from './seed';\n\nlet store;\n\nexport function createStore() {\n\tconst storeEnhancers = composeWithDevTools(\n\t\tapplyMiddleware(thunkMiddleware)\n\t);\n\n\tconst persistedState = loadState();\n\n\t// store migrations\n\tif (persistedState && persistedState.db && persistedState.db.options) {\n\t\tdelete persistedState.db.options.rendering; // remove old options before the options refactor in v0.9.0\n\t}\n\n\t/* Reset all options * /\n\tObject.keys(persistedState.db.files.allFiles).forEach((fileId) => {\n\t\tdelete persistedState.db.files.allFiles[fileId].options;\n\t});\n\tdelete persistedState.db.options;\n\t/**/\n\t/* misc * /\n\tdelete persistedState.songImporter;\n\tdelete persistedState.fileManager.selected;\n\t/**/\n\n\tconst initialState = _defaultsDeep(persistedState, seed);\n\n\tstore = createReduxStore(allReducers, initialState, storeEnhancers);\n\n\tstore.subscribe(() => {\n\t\tsaveState(store.getState());\n\t});\n}\n\nexport function getStore() {\n\treturn store;\n}\n","// @see https://egghead.io/lessons/javascript-redux-persisting-the-state-to-the-local-storage\n\nexport const loadState = () => {\n\ttry {\n\t\tconst serializedState = localStorage.getItem('state');\n\t\tif (!serializedState) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn JSON.parse(serializedState);\n\t} catch (err) {\n\t\treturn undefined;\n\t}\n};\n\nexport const saveState = (state) => {\n\ttry {\n\t\tconst serializedState = JSON.stringify(state);\n\t\tlocalStorage.setItem('state', serializedState);\n\t} catch (err) {\n\t\t// ignore write errors\n\t}\n};\n","export default function createAction(type, payload) {\n\tif (!type) {\n\t\tthrow new TypeError('Cannot create an action without an action type');\n\t}\n\treturn {\n\t\ttype,\n\t\tpayload,\n\t};\n}\n","import * as actionsTypes from './actionsTypes';\n\nimport createAction from '../../core/createAction';\n\nexport const setContent = (content, title) =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_SET_CONTENT, { content, title });\n\nexport const setInputFormat = (inputFormat) =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_SET_INPUT_FORMAT, { inputFormat });\n\nexport const startImport = () =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_IMPORT_START, {\n\t\tisFromWeb: false,\n\t});\n\nexport const startImportFromWeb = (inputFormat, content, title) =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_IMPORT_START, {\n\t\tcontent,\n\t\tinputFormat,\n\t\ttitle,\n\t\tisFromWeb: true,\n\t});\n\nexport const cancelImport = () =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_IMPORT_CANCEL);\n","import { getStore } from '../state/store';\nimport { startImportFromWeb } from './_state/actions';\n\n/**\n * @typedef {Object} WebsiteImportMessage\n * @type {Object}\n * @property {('ultimateGuitar')} source - website from which the tab comes from\n * @property {String} chordChart - content of the chord chart\n * @property {String} title - song title\n * @property {String} artist - song artist\n */\n\nconst songImporterHandlers = {\n\t/**\n\t *\n\t * @param {WebsiteImportMessage} message\n\t */\n\t'@CCS/IMPORT_TAB': (message) => {\n\t\tconst store = getStore();\n\n\t\tconst title = buildTitle(message.title, message.artist);\n\t\tstore.dispatch(\n\t\t\tstartImportFromWeb(message.source, message.chordChart, title)\n\t\t);\n\t},\n};\n\nconst buildTitle = (songTitle, artist) => {\n\tlet title = songTitle;\n\tif (artist) {\n\t\ttitle += ' - ' + artist;\n\t}\n\treturn title;\n};\n\nexport default function getSongImporterHandlers() {\n\treturn songImporterHandlers;\n}\n","import getSongImporterHandlers from './songImporter/getMessageHandlers';\n\nexport default function registerHandlers() {\n\twindow.addEventListener('message', _handleMessage);\n}\n\n// unit test backdoor, not for public usage!\nexport const _handleMessage = (e) => {\n\tconst allHandlers = {\n\t\t...getSongImporterHandlers(),\n\t};\n\n\tif (e.source !== window || e.origin !== window.location.origin) {\n\t\treturn false;\n\t}\n\tconst message = e.data;\n\n\tif (typeof allHandlers[message.type] === 'function') {\n\t\tallHandlers[message.type](message.payload);\n\t}\n\treturn true;\n};\n","import './ErrorBoundary.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n// source: https://codepen.io/gaearon/pen/wqvxGa?editors=0010\nclass ErrorBoundary extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { error: null, errorInfo: null };\n\t}\n\n\tcomponentDidCatch(error, errorInfo) {\n\t\tthis.setState({\n\t\t\terror: error,\n\t\t\terrorInfo: errorInfo,\n\t\t});\n\t}\n\n\trender() {\n\t\tif (this.state.errorInfo) {\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t

Something went wrong

\n\t\t\t\t\t
\n\t\t\t\t\t\t{this.state.error && this.state.error.toString()}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{this.state.errorInfo.componentStack}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t);\n\t\t}\n\t\treturn this.props.children;\n\t}\n}\n\nErrorBoundary.propTypes = {\n\tchildren: PropTypes.any,\n};\n\nexport default ErrorBoundary;\n","import {\n\tUI_LAYOUT_APP_SET_EDITOR_MODE,\n\tUI_LAYOUT_APP_TOGGLE_LEFT_BAR,\n\tUI_LAYOUT_APP_TOGGLE_RIGHT_BAR,\n} from './actionsTypes';\n\nimport createAction from '../../../../core/createAction';\n\nexport const setEditorMode = (mode) =>\n\tcreateAction(UI_LAYOUT_APP_SET_EDITOR_MODE, { mode });\n\nexport const toggleLeftBar = () => createAction(UI_LAYOUT_APP_TOGGLE_LEFT_BAR);\n\nexport const toggleRightBar = () =>\n\tcreateAction(UI_LAYOUT_APP_TOGGLE_RIGHT_BAR);\n","import './Logo.scss';\n\nimport React from 'react';\n\nimport logoImg from './logo.png';\n\nfunction Logo() {\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{'Chord\n\t\t\t\t
\n\t\t\t\t
Chord Charts Studio
\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default React.memo(Logo);\n","import './Icon.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon(props) {\n\tconst { iconName } = props;\n\n\tconst classList = ['icon', 'material-icons'];\n\n\treturn {iconName};\n}\n\nIcon.propTypes = {\n\ticonName: PropTypes.string.isRequired,\n};\n\nexport default React.memo(Icon);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon.js';\n\nfunction NavEntry(props) {\n\tconst { label, icon, editorMode, setEditorMode, isActive, isDisabled } =\n\t\tprops;\n\n\tconst classNames = ['mainNavEntry'];\n\n\tif (isActive) {\n\t\tclassNames.push('mainNavEntry-isActive');\n\t}\n\tif (isDisabled) {\n\t\tclassNames.push('mainNavEntry-isDisabled');\n\t}\n\n\tfunction handleClick() {\n\t\tif (!isDisabled) setEditorMode(editorMode);\n\t}\n\n\treturn (\n\t\t
  • \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t{label}\n\t\t
  • \n\t);\n}\n\nNavEntry.propTypes = {\n\tlabel: PropTypes.string.isRequired,\n\ticon: PropTypes.string.isRequired,\n\teditorMode: PropTypes.string.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\n\tisActive: PropTypes.bool.isRequired,\n\tisDisabled: PropTypes.bool.isRequired,\n};\n\nexport default React.memo(NavEntry);\n","import './Nav.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport NavEntry from './NavEntry.js';\n\nfunction Nav(props) {\n\tconst { currentMode, allEntries, setEditorMode, selectedId } = props;\n\n\treturn (\n\t\t\n\t);\n}\n\nNav.propTypes = {\n\tcurrentMode: PropTypes.string.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\n\tselectedId: PropTypes.string,\n\tallEntries: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tid: PropTypes.string.isRequired,\n\t\t\tlabel: PropTypes.string.isRequired,\n\t\t\ticon: PropTypes.string.isRequired,\n\t\t\teditorMode: PropTypes.string.isRequired,\n\t\t})\n\t),\n};\n\nexport default React.memo(Nav);\n","import './Button.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Button = ({ children, isDisabled, buttonName, onClick, type }) => {\n\tconst allClassNames = ['Button'];\n\n\tif (type === 'primary') allClassNames.push('Button-primary');\n\tif (type === 'secondary') allClassNames.push('Button-secondary');\n\tif (isDisabled) allClassNames.push('Button-isDisabled');\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n};\n\nButton.propTypes = {\n\tchildren: PropTypes.string.isRequired,\n\tisDisabled: PropTypes.bool,\n\tbuttonName: PropTypes.string.isRequired,\n\ttype: PropTypes.string.isRequired,\n\tonClick: PropTypes.func.isRequired,\n};\n\nButton.defaultProps = {\n\tisDisabled: false,\n};\n\nexport default Button;\n","import './UserGuide.scss';\n\nimport React from 'react';\n\nimport Button from '../../_components/Button';\nimport Icon from '../../_components/Icon.js';\n\nconst userGuideUrl =\n\t'https://chordmark.netlify.app/docs/chord-charts-studio/overview';\n\nconst UserGuide = () => {\n\tconst openUserGuide = () => {\n\t\twindow.open(userGuideUrl, '_blank').focus();\n\t};\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tUser Guide\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n};\n\nUserGuide.propTypes = {};\n\nUserGuide.defaultProps = {};\n\nexport default React.memo(UserGuide);\n","import getVersions from '../../../core/getVersions';\nimport './Versions.scss';\n\nimport React from 'react';\n\nfunction Versions() {\n\tconst versions = getVersions();\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\tChords Charts Studio {versions['chord-charts-studio']}\n\t\t\t\t
    \n\t\t\t\tChordMark {versions['chord-mark']}
    \n\t\t\t\tChordSymbol {versions['chord-symbol']}\n\t\t\t
    \n\t\t
    \n\t);\n}\n\nexport default React.memo(Versions);\n","export default () => ({'chord-charts-studio':'v0.10.0','chord-symbol':'v2.1.0','chord-mark':'v0.8.0'});","import { v4 as uuidv4 } from 'uuid';\n\nimport createAction from '../../core/createAction';\nimport * as actionTypes from './actionsTypes';\n\nexport const createFile = (title, content = '') => {\n\tif (!title) {\n\t\tthrow new TypeError('Cannot create a file without title');\n\t}\n\tconst payload = {\n\t\tid: uuidv4(),\n\t\ttitle,\n\t\tcontent,\n\t};\n\treturn createAction(actionTypes.DB_FILES_CREATE, payload);\n};\n\nexport const importFile = (title, content = '') => {\n\tif (!title) {\n\t\tthrow new TypeError('Cannot import a file without title');\n\t}\n\tconst payload = {\n\t\tid: uuidv4(),\n\t\ttitle,\n\t\tcontent,\n\t};\n\treturn createAction(actionTypes.DB_FILES_IMPORT, payload);\n};\n\nexport const updateFile = (id, { title, content } = {}) => {\n\tif (!id) {\n\t\tthrow new TypeError('Cannot update a file without an id');\n\t}\n\tconst payload = {\n\t\tid,\n\t\ttitle,\n\t\tcontent,\n\t};\n\treturn createAction(actionTypes.DB_FILES_UPDATE, payload);\n};\n\nexport const deleteFile = (id) => {\n\treturn createAction(actionTypes.DB_FILES_DELETE, { id });\n};\n","export const getContent = (state) => state.songImporter.content;\n\nexport const getInputFormat = (state) => state.songImporter.inputFormat;\n\nexport const getTitle = (state) => state.songImporter.title;\n\nexport const isImporting = (state) => state.songImporter.isImporting;\n\nexport const isFromWeb = (state) => state.songImporter.isFromWeb;\n","import './Modal.scss';\n\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Modal(props) {\n\tconst { children, closeModal } = props;\n\n\tuseEffect(() => {\n\t\tconst handleKeyboard = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tcloseModal();\n\t\t\t}\n\t\t};\n\t\twindow.addEventListener('keyup', handleKeyboard);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('keyup', handleKeyboard);\n\t\t};\n\t});\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    {children}
    \n\t\t
    \n\t);\n}\n\nModal.propTypes = {\n\tchildren: PropTypes.element.isRequired,\n\tcloseModal: PropTypes.func.isRequired,\n};\n\nexport default Modal;\n","import React from 'react';\nimport Button from '../../ui/_components/Button';\nimport PropTypes from 'prop-types';\n\nconst Header = ({\n\tcancelImport,\n\tchordMarkContent,\n\timportFile,\n\ttitle,\n\tcontent,\n\terror,\n}) => {\n\tconst headerTitle = title ? 'Import \"' + title + '\"' : 'Import song';\n\n\tconst doImport = () => {\n\t\timportFile(title || '[untitled]', chordMarkContent);\n\t};\n\n\treturn (\n\t\t
    \n\t\t\t
    {headerTitle}
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tCANCEL\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tIMPORT\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n};\n\nHeader.propTypes = {\n\tcancelImport: PropTypes.func.isRequired,\n\tchordMarkContent: PropTypes.string,\n\tcontent: PropTypes.string,\n\terror: PropTypes.string,\n\timportFile: PropTypes.func.isRequired,\n\ttitle: PropTypes.string,\n};\n\nexport default Header;\n","import filesize from 'filesize';\n\nconst maxFileSizeBytes = 50 * 1024;\n\nconst getUploadedFile = (fileList) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (fileList.length) {\n\t\t\tconst file = fileList[0];\n\n\t\t\tif (isOversized(file)) {\n\t\t\t\treject(getFileTooBigMsg(file.size));\n\t\t\t} else if (!isTextFile(file)) {\n\t\t\t\treject(getWrongFileTypeMsg(file));\n\t\t\t} else {\n\t\t\t\tfile.text()\n\t\t\t\t\t.then((fileContent) => {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tcontent: fileContent,\n\t\t\t\t\t\t\ttitle: getSongTitle(file),\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\treject(getNoFileSelectedMsg());\n\t\t}\n\t});\n};\n\nconst getSongTitle = (file) => file.name.substr(0, file.name.lastIndexOf('.'));\n\nconst isOversized = (file) => file.size > maxFileSizeBytes;\n\n// files with extension such as .cho or .chopro are detected with an empty mimetype\n// so we consider them as text\nconst isTextFile = (file) =>\n\tfile.type.indexOf('text') === 0 || file.type.length === 0;\n\nconst getFileTooBigMsg = (actualSize) =>\n\t'The selected file is too big: ' +\n\tfilesize(actualSize, { round: 0 }) +\n\t' (maximum allowed file size is ' +\n\tfilesize(maxFileSizeBytes, { round: 0 }) +\n\t').';\n\nconst getWrongFileTypeMsg = (file) =>\n\t'Cannot import file of type ' + file.type + '.';\n\nconst getNoFileSelectedMsg = () => 'No file selected.';\n\nexport default getUploadedFile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport getUploadedFile from '../getUploadedFile';\n\nconst allowedFiles = 'text/*,.cho,.crd,.chopro,.chord,.pro,.txt,.md';\n\nconst FilePicker = ({ setContent }) => {\n\tconst handleChange = (ev) => {\n\t\tgetUploadedFile(ev.target.files)\n\t\t\t.then((file) => {\n\t\t\t\tsetContent(file.content, file.title);\n\t\t\t})\n\t\t\t.catch((e) => {\n\t\t\t\tsetContent(e);\n\t\t\t});\n\t};\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\tSelect File\n\t\t\t\n\t\t\t\n\t\t
    \n\t);\n};\n\nFilePicker.propTypes = {\n\tsetContent: PropTypes.func.isRequired,\n};\n\nexport default FilePicker;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../ui/_components/Icon';\n\nfunction Input(props) {\n\tconst { content, setContent, isDisabled } = props;\n\n\tconst onChange = (e) => {\n\t\tsetContent(e.target.value);\n\t};\n\n\tconst allClasses = ['sim-Input_Textarea'];\n\n\tif (isDisabled) {\n\t\tallClasses.push('sim-Input_Textarea-Disabled');\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t
    \n\t\t\t\t\n\t\t\t\tCopy/paste below\n\t\t\t\t\n\t\t\t
    \n\t\t\t\n\t\t\n\t);\n}\n\nInput.propTypes = {\n\tcontent: PropTypes.string.isRequired,\n\tisDisabled: PropTypes.bool.isRequired,\n\tsetContent: PropTypes.func.isRequired,\n};\n\nInput.defaultProps = {};\n\nexport default Input;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction PreviewError(props) {\n\tconst { inputFormat, error } = props;\n\n\treturn (\n\t\t
    \n\t\t\t

    \n\t\t\t\tThere was an error when trying to parse the song in the\n\t\t\t\tspecified input format ({inputFormat}).\n\t\t\t\t
    \n\t\t\t\tPlease correct the input or try another format.\n\t\t\t\t
    \n\t\t\t\tThe error was:\n\t\t\t

    \n\t\t\t

    "{error}"

    \n\t\t\t

    \n\t\t\t\tHint: most of the time, this is related to an unclosed\n\t\t\t\t"[" or "{" or an unsupported ChordPro\n\t\t\t\tdirective\n\t\t\t

    \n\t\t
    \n\t);\n}\n\nPreviewError.propTypes = {\n\terror: PropTypes.string,\n\tinputFormat: PropTypes.string.isRequired,\n};\n\nPreviewError.defaultProps = {};\n\nexport default PreviewError;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction InputFormatEntry(props) {\n\tconst { setInputFormat, inputFormat, id, label, isDisabled } = props;\n\n\tconst onChange = (e) => {\n\t\tif (!isDisabled) {\n\t\t\tsetInputFormat(e.target.value);\n\t\t}\n\t};\n\n\tconst allInputClasses = ['sim-InputFormat_Entry'];\n\tconst allLabelClasses = ['sim-InputFormat_Label'];\n\n\tif (isDisabled) {\n\t\tallInputClasses.push('sim-InputFormat_Entry-Disabled');\n\t\tallLabelClasses.push('sim-InputFormat_Label-Disabled');\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nInputFormatEntry.propTypes = {\n\tsetInputFormat: PropTypes.func.isRequired,\n\tinputFormat: PropTypes.string.isRequired,\n\tid: PropTypes.string.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tisDisabled: PropTypes.bool.isRequired,\n};\n\nInputFormatEntry.defaultProps = {};\n\nexport default InputFormatEntry;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport InputFormatEntry from './InputFormatEntry';\n\nconst allEntries = [\n\t{\n\t\tid: 'basic',\n\t\tlabel: 'Basic',\n\t},\n\t{\n\t\tid: 'chordpro',\n\t\tlabel: 'ChordPro',\n\t},\n\t{\n\t\tid: 'ultimateGuitar',\n\t\tlabel: 'Ultimate Guitar',\n\t},\n];\n\nfunction InputFormatSelector(props) {\n\tconst { setInputFormat, inputFormat, disableAll } = props;\n\n\tconst rendered = allEntries.map((entry) => (\n\t\t\n\t));\n\n\treturn (\n\t\t
    \n\t\t\tInput format:\n\t\t\t{rendered}\n\t\t
    \n\t);\n}\n\nInputFormatSelector.propTypes = {\n\tdisableAll: PropTypes.bool.isRequired,\n\tsetInputFormat: PropTypes.func.isRequired,\n\tinputFormat: PropTypes.string.isRequired,\n};\n\nInputFormatSelector.defaultProps = {};\n\nexport default InputFormatSelector;\n","import { ChordLyricsPair, Tag } from 'chordsheetjs';\n\nconst allLines = [];\n\nexport default function chordSheetJs2ChordMark(song) {\n\tallLines.length = 0;\n\tformatAllParagraphs(song);\n\treturn allLines.join('\\n');\n}\n\nconst formatAllParagraphs = (song) => {\n\tconst { bodyParagraphs } = song;\n\tbodyParagraphs.map((paragraph) => {\n\t\tformatParagraph(paragraph);\n\t\tallLines.push('');\n\t});\n};\n\nconst formatParagraph = (paragraph) => {\n\tswitch (paragraph.type) {\n\t\tcase 'verse':\n\t\t\tallLines.push('#v');\n\t\t\tbreak;\n\t\tcase 'chorus':\n\t\t\tallLines.push('#c');\n\t\t\tbreak;\n\t}\n\tparagraph.lines.map((line) => formatLine(line));\n};\n\nconst formatLine = (line) => {\n\tconst parts = [\n\t\tformatChordLine(line),\n\t\tformatLyricLine(line),\n\t\tformatTagLine(line),\n\t]\n\t\t.filter((i) => i !== null)\n\t\t.map((part) => part.trimRight());\n\n\tallLines.push(...parts);\n};\n\nconst formatChordLine = (line) => {\n\tif (!lineHasChords(line)) {\n\t\treturn null;\n\t}\n\n\treturn line.items.reduce((chordLine, item) => {\n\t\tif (itemHasChord(item)) {\n\t\t\tchordLine += item.chords.trim() + ' ';\n\t\t}\n\t\treturn chordLine;\n\t}, '');\n};\n\nconst formatLyricLine = (line) => {\n\tif (!lineHasLyrics(line)) {\n\t\treturn null;\n\t}\n\treturn line.items.reduce((lyricsLine, item) => {\n\t\tif (!itemHasLyric(item)) lyricsLine += ' ';\n\t\tif (itemHasChord(item)) lyricsLine += '_';\n\t\tif (itemHasLeftPadding(item)) lyricsLine += ' ';\n\n\t\tlyricsLine += item.lyrics.trim();\n\n\t\tif (itemHasRightPadding(item)) lyricsLine += ' ';\n\n\t\treturn lyricsLine;\n\t}, '');\n};\n\nconst formatTagLine = (line) => {\n\tif (!lineHasTag(line)) {\n\t\treturn null;\n\t}\n\tconst tagValue = line.items[0].value.toLowerCase().replace(/[- 0-9]/g, '');\n\n\treturn sectionLabelsMapping[tagValue]\n\t\t? sectionLabelsMapping[tagValue]\n\t\t: '#' + tagValue;\n};\n\nconst sectionLabelsMapping = {\n\tadlib: '#a',\n\tbridge: '#b',\n\tchorus: '#c',\n\tinterlude: '#u',\n\tintro: '#i',\n\tintroduction: '#i',\n\toutro: '#o',\n\tprechorus: '#p',\n\tsolo: '#s',\n};\n\nconst lineHasChords = (line) =>\n\tline.items.some((item) => item instanceof ChordLyricsPair && item.chords);\n\nconst lineHasLyrics = (line) =>\n\tline.items.some((item) => item instanceof ChordLyricsPair && item.lyrics);\n\nconst lineHasTag = (line) =>\n\tline.items.some((item) => item instanceof Tag && item.isRenderable());\n\nconst itemHasChord = (item) => {\n\treturn item instanceof ChordLyricsPair && item.chords.trim().length;\n};\n\nconst itemHasLyric = (item) => {\n\treturn item.lyrics.length;\n};\n\nconst itemHasLeftPadding = (item) => {\n\treturn item.lyrics.length - item.lyrics.trimLeft().length >= 1;\n};\n\nconst itemHasRightPadding = (item) => {\n\treturn (\n\t\titem.lyrics.trim().length &&\n\t\titem.lyrics.length - item.lyrics.trimRight().length >= 1\n\t);\n};\n","import ChordSheetJS from 'chordsheetjs';\nimport chordSheetJs2ChordMark from './chordSheetJs2ChordMark';\n\nexport default function ultimateGuitar2ChordMark(ugChordChartRaw) {\n\tconst ugChordChart = ugChordChartRaw\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.replace(/\\t/g, ' ')\n\t\t.replace(/\\[\\/?ch]/g, '')\n\t\t.replace(/\\[\\/?tab]/g, '');\n\n\tconst parser = new ChordSheetJS.UltimateGuitarParser();\n\tconst parsed = parser.parse(ugChordChart);\n\n\treturn chordSheetJs2ChordMark(parsed);\n}\n","import ultimateGuitar2ChordMark from '../core/converters/ultimateGuitar2ChordMark';\nimport ChordSheetJS from 'chordsheetjs';\nimport chordSheetJs2ChordMark from '../core/converters/chordSheetJs2ChordMark';\n\nconst input2ChordMark = (input, inputFormat) => {\n\tconst converter = getConverter(inputFormat);\n\treturn converter(input);\n};\n\nconst getConverter = (inputFormat) => {\n\tif (inputFormat === 'ultimateGuitar') {\n\t\treturn ultimateGuitar2ChordMark;\n\t}\n\n\tconst parser =\n\t\tinputFormat === 'chordpro'\n\t\t\t? new ChordSheetJS.ChordProParser()\n\t\t\t: new ChordSheetJS.ChordSheetParser();\n\n\treturn (input) => {\n\t\tconst parsed = parser.parse(input);\n\t\treturn chordSheetJs2ChordMark(parsed);\n\t};\n};\n\nexport default input2ChordMark;\n","import './SongImporter.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../ui/_components/Modal';\nimport Header from './Header';\nimport FilePicker from './FilePicker';\nimport Input from './Input';\nimport PreviewError from './PreviewError';\nimport InputFormatSelector from './InputFormatSelector';\nimport input2ChordMark from '../input2ChordMark';\nimport Icon from '../../ui/_components/Icon';\n\nfunction SongImporter(props) {\n\tconst {\n\t\tcancelImport,\n\t\tcontent,\n\t\timportFile,\n\t\tisFromWeb,\n\t\tisImporting,\n\t\tsetContent,\n\t\tsetInputFormat,\n\t\tinputFormat,\n\t\ttitle,\n\t} = props;\n\n\tif (!isImporting) return null;\n\n\tlet chordMarkContent = '';\n\tlet error = '';\n\n\ttry {\n\t\tchordMarkContent = input2ChordMark(content, inputFormat);\n\t} catch (e) {\n\t\terror = e.message;\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tChordMark preview\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!error ? (\n\t\t\t\t\t\t\t\tchordMarkContent\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t);\n}\n\nSongImporter.propTypes = {\n\tcancelImport: PropTypes.func.isRequired,\n\tcontent: PropTypes.string.isRequired,\n\timportFile: PropTypes.func.isRequired,\n\tisFromWeb: PropTypes.bool.isRequired,\n\tisImporting: PropTypes.bool.isRequired,\n\tsetContent: PropTypes.func.isRequired,\n\tsetInputFormat: PropTypes.func.isRequired,\n\tinputFormat: PropTypes.string.isRequired,\n\ttitle: PropTypes.string,\n};\n\nSongImporter.defaultProps = {};\n\nexport default SongImporter;\n","import { connect } from 'react-redux';\n\nimport { importFile } from '../../db/files/actions';\nimport { setContent, setInputFormat, cancelImport } from '../_state/actions';\nimport {\n\tgetInputFormat,\n\tgetContent,\n\tgetTitle,\n\tisImporting,\n\tisFromWeb,\n} from '../_state/selectors';\n\nimport SongImporter from '../_components/SongImporter';\n\nexport default connect(\n\t(state) => ({\n\t\tcontent: getContent(state),\n\t\tisFromWeb: isFromWeb(state),\n\t\tisImporting: isImporting(state),\n\t\tinputFormat: getInputFormat(state),\n\t\ttitle: getTitle(state),\n\t}),\n\n\t{\n\t\tsetContent,\n\t\tsetInputFormat,\n\t\tcancelImport,\n\t\timportFile,\n\t}\n)(SongImporter);\n","export default [\n\t{\n\t\tid: 'edit',\n\t\tlabel: 'Edit',\n\t\ticon: 'create',\n\t\teditorMode: 'edit',\n\t},\n\t{\n\t\tid: 'play',\n\t\tlabel: 'Screen view',\n\t\ticon: 'music_note',\n\t\teditorMode: 'play',\n\t},\n\t{\n\t\tid: 'print',\n\t\tlabel: 'Print/PDF Preview',\n\t\ticon: 'print',\n\t\teditorMode: 'print',\n\t},\n\t{\n\t\tid: 'export',\n\t\tlabel: 'Export Preview',\n\t\ticon: 'save_alt',\n\t\teditorMode: 'export',\n\t},\n];\n","import './App.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Logo from '../../../sideBar/_components/Logo';\nimport Nav from './Nav';\nimport UserGuide from '../../../sideBar/_components/UserGuide';\nimport Versions from '../../../sideBar/_components/Versions';\nimport Icon from '../../../_components/Icon';\nimport SongImporter from '../../../../songImporter/_containers/SongImporter';\n\nimport allNavEntries from '../allNavEntries';\n\nfunction App(props) {\n\tconst {\n\t\teditorMode,\n\t\tisLeftBarCollapsed,\n\t\tisRightBarCollapsed,\n\t\ttoggleLeftBar,\n\t\ttoggleRightBar,\n\t\tsetEditorMode,\n\t\tselectedId,\n\n\t\tleftBar,\n\t\trightBar,\n\t} = props;\n\n\tconst leftBarClassNames = ['leftBar'];\n\tif (isLeftBarCollapsed) {\n\t\tleftBarClassNames.push('leftBar-isCollapsed');\n\t}\n\n\tconst rightBarClassNames = ['rightBar'];\n\tif (isRightBarCollapsed) {\n\t\trightBarClassNames.push('rightBar-isCollapsed');\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{leftBar}\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{props.children}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{rightBar}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t);\n}\n\nApp.propTypes = {\n\tchildren: PropTypes.element,\n\n\tisLeftBarCollapsed: PropTypes.bool,\n\tisRightBarCollapsed: PropTypes.bool,\n\tselectedId: PropTypes.string,\n\ttoggleLeftBar: PropTypes.func.isRequired,\n\ttoggleRightBar: PropTypes.func.isRequired,\n\n\teditorMode: PropTypes.string.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\n\n\tleftBar: PropTypes.element.isRequired,\n\trightBar: PropTypes.element.isRequired,\n};\n\nApp.defaultProps = {\n\tisLeftBarCollapsed: false,\n\tisRightBarCollapsed: false,\n};\n\nexport default App;\n","import { connect } from 'react-redux';\n\nimport {\n\ttoggleLeftBar,\n\ttoggleRightBar,\n\tsetEditorMode,\n} from '../_state/actions';\nimport {\n\tisLeftBarCollapsed,\n\tisRightBarCollapsed,\n\tgetEditorMode,\n} from '../_state/selectors';\nimport { getSelectedId } from '../../../../fileManager/_state/selectors';\n\nimport App from '../_components/App';\n\nexport default connect(\n\t(state) => ({\n\t\teditorMode: getEditorMode(state),\n\t\tisLeftBarCollapsed: isLeftBarCollapsed(state),\n\t\tisRightBarCollapsed: isRightBarCollapsed(state),\n\t\tselectedId: getSelectedId(state),\n\t}),\n\n\t{\n\t\ttoggleLeftBar,\n\t\ttoggleRightBar,\n\t\tsetEditorMode,\n\t}\n)(App);\n","import createAction from '../../core/createAction';\n\nimport * as actionsTypes from './actionsTypes';\n\nexport const selectFile = (id) =>\n\tcreateAction(actionsTypes.FILE_MANAGER_SELECT_FILE, { id });\n\nexport const enableRename = (id) =>\n\tcreateAction(actionsTypes.FILE_MANAGER_ENABLE_RENAME, { id });\n","import { renderSong as renderSongCm, parseSong } from 'chord-mark';\nimport chordMark2ChordPro from 'chord-mark-2-chordpro';\n\nimport stripTags from './stripTags';\n\nexport function renderAsText(\n\tsongTxt,\n\trenderOptions = {},\n\tuseChartFormat = false\n) {\n\treturn render(songTxt, renderOptions, useChartFormat, 'text');\n}\n\nexport function renderAsHtml(\n\tsongTxt,\n\trenderOptions = {},\n\tuseChartFormat = false\n) {\n\treturn render(songTxt, renderOptions, useChartFormat, 'html');\n}\n\nfunction render(songTxt, renderOptions, useChartFormat, outputFormat) {\n\tif (useChartFormat && renderOptions.chartFormat === 'chordmarkSrc') {\n\t\treturn outputFormat === 'html' ? toHtml(songTxt) : songTxt;\n\t} else if (useChartFormat && renderOptions.chartFormat === 'chordpro') {\n\t\trenderOptions.customRenderer = chordMark2ChordPro;\n\t\tconst chordProTxt = renderSong(songTxt, renderOptions);\n\t\treturn outputFormat === 'html' ? toHtml(chordProTxt) : chordProTxt;\n\t} else {\n\t\tconst chordMarkHtml = renderSong(songTxt, renderOptions);\n\t\treturn outputFormat === 'html' ? chordMarkHtml : toText(chordMarkHtml);\n\t}\n}\n\nfunction renderSong(songTxt, renderOptions) {\n\ttry {\n\t\tconst parsed = parseSong(songTxt);\n\t\treturn renderSongCm(parsed, {\n\t\t\t...renderOptions,\n\t\t});\n\t} catch (e) {\n\t\treturn e.message;\n\t}\n}\n\nfunction toHtml(text) {\n\treturn text\n\t\t.split('\\n')\n\t\t.map((line) => (line === '' ? ' ' : line))\n\t\t.map((line) => `

    ${line}

    `)\n\t\t.join('\\n');\n}\n\nfunction toText(html) {\n\treturn html\n\t\t.split('\\n')\n\t\t.map((line) => stripTags(line))\n\t\t.map((line) => (line === ' ' ? '' : line))\n\t\t.join('\\n');\n}\n","import { saveAs } from 'file-saver';\nimport { getStore } from '../state/store';\n\nimport { getSelectedId } from './_state/selectors';\nimport { getOne } from '../db/files/selectors';\nimport { getOptionValue } from '../db/options/selectors';\n\nimport { renderAsText } from '../core/renderSong';\n\nexport default function exportSelectedFileAsText() {\n\tconst store = getStore();\n\tconst state = store.getState();\n\n\tconst selectedId = getSelectedId(state);\n\tconst selectedFile = getOne(state, selectedId);\n\n\tconst renderOptions = {\n\t\ttransposeValue: getOptionValue(\n\t\t\tstate,\n\t\t\t'songPreferences',\n\t\t\t'transposeValue'\n\t\t),\n\t\tharmonizeAccidentals: getOptionValue(\n\t\t\tstate,\n\t\t\t'songPreferences',\n\t\t\t'harmonizeAccidentals'\n\t\t),\n\t\taccidentalsType: getOptionValue(\n\t\t\tstate,\n\t\t\t'songPreferences',\n\t\t\t'accidentalsType'\n\t\t),\n\n\t\tchartType: getOptionValue(state, 'songFormatting', 'chartType'),\n\t\tchartFormat: getOptionValue(state, 'songFormatting', 'chartFormat'),\n\t\talignChordsWithLyrics: getOptionValue(\n\t\t\tstate,\n\t\t\t'songFormatting',\n\t\t\t'alignChordsWithLyrics'\n\t\t),\n\t\talignBars: getOptionValue(state, 'songFormatting', 'alignBars'),\n\t\tautoRepeatChords: getOptionValue(\n\t\t\tstate,\n\t\t\t'songFormatting',\n\t\t\t'autoRepeatChords'\n\t\t),\n\t\texpandSectionCopy: getOptionValue(\n\t\t\tstate,\n\t\t\t'songFormatting',\n\t\t\t'expandSectionCopy'\n\t\t),\n\t};\n\n\tconst fileContent = renderAsText(selectedFile.content, renderOptions, true);\n\tconst fileExt = renderOptions.chartFormat === 'chordpro' ? 'cho' : 'txt';\n\tconst fileName = `${selectedFile.title}.${fileExt}`;\n\n\tconst blob = new Blob([fileContent], {\n\t\ttype: 'text/plain;charset=utf-8',\n\t\tendings: 'native',\n\t});\n\tsaveAs(blob, fileName);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from './Button';\nimport Modal from './Modal';\n\nfunction ModalConfirm(props) {\n\tconst {\n\t\tconfirmAction,\n\t\tconfirmTitle = 'OK',\n\t\tcancelAction,\n\t\tcancelTitle = 'CANCEL',\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t
    {children}
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{cancelTitle}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{confirmTitle}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n\nModalConfirm.propTypes = {\n\tconfirmAction: PropTypes.func.isRequired,\n\tconfirmTitle: PropTypes.string,\n\tcancelAction: PropTypes.func.isRequired,\n\tcancelTitle: PropTypes.string,\n\tchildren: PropTypes.node.isRequired,\n};\n\nexport default ModalConfirm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ModalConfirm from '../../ui/_components/ModalConfirm';\n\nfunction DeleteConfirmModal(props) {\n\tconst { selected, deleteFile, isDeleting, setIsDeleting } = props;\n\n\tif (!isDeleting) {\n\t\treturn null;\n\t}\n\n\tconst cancelDelete = () => setIsDeleting(false);\n\tconst confirmDelete = () => {\n\t\tsetIsDeleting(false);\n\t\tdeleteFile(selected);\n\t};\n\n\treturn (\n\t\t\n\t\t\tAre you sure you want to delete this file?\n\t\t\t
    \n\t\t\tThis action cannot be undone.\n\t\t\n\t);\n}\n\nDeleteConfirmModal.propTypes = {\n\tdeleteFile: PropTypes.func.isRequired,\n\tisDeleting: PropTypes.bool.isRequired,\n\tselected: PropTypes.string.isRequired,\n\tsetIsDeleting: PropTypes.func.isRequired,\n};\n\nexport default DeleteConfirmModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../ui/_components/Icon';\n\nfunction FileActionEntry(props) {\n\tconst { icon, text, action, isDisabled } = props;\n\n\tconst classNames = ['fileManagerAction'];\n\n\tif (isDisabled) {\n\t\tclassNames.push('fileManagerAction-isDisabled');\n\t}\n\tconst handleClick = () => {\n\t\tif (!isDisabled) {\n\t\t\taction();\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t {text}\n\t\t\t\n\t\t\n\t);\n}\n\nFileActionEntry.propTypes = {\n\ticon: PropTypes.string.isRequired,\n\ttext: PropTypes.string.isRequired,\n\taction: PropTypes.func.isRequired,\n\tisDisabled: PropTypes.bool.isRequired,\n};\n\nexport default React.memo(FileActionEntry);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileActionEntry from './FileActionEntry';\n\nfunction FileActions(props) {\n\tconst {\n\t\tselected,\n\t\tcreateFile,\n\t\tdeleteFile,\n\t\tenableRename,\n\t\tstartImport,\n\t\texportAsText,\n\t\tprintFile,\n\t} = props;\n\n\tconst allActions = [\n\t\t{\n\t\t\ticon: 'upload',\n\t\t\ttext: 'Import',\n\t\t\taction: startImport,\n\t\t\tisDisabled: false,\n\t\t},\n\t\t{\n\t\t\ticon: 'add_circle',\n\t\t\ttext: 'New',\n\t\t\taction: createFile,\n\t\t\tisDisabled: false,\n\t\t},\n\t\t{\n\t\t\ticon: 'create',\n\t\t\ttext: 'Rename',\n\t\t\taction: enableRename,\n\t\t\tisDisabled: !selected,\n\t\t},\n\t\t{\n\t\t\ticon: 'delete',\n\t\t\ttext: 'Delete',\n\t\t\taction: deleteFile,\n\t\t\tisDisabled: !selected,\n\t\t},\n\t\t{\n\t\t\ticon: 'print',\n\t\t\ttext: 'Print',\n\t\t\taction: printFile,\n\t\t\tisDisabled: !selected,\n\t\t},\n\t\t{\n\t\t\ticon: 'download',\n\t\t\ttext: 'Export',\n\t\t\taction: exportAsText,\n\t\t\tisDisabled: !selected,\n\t\t},\n\t];\n\n\treturn (\n\t\t
    \n\t\t\t{allActions.map((action, key) => (\n\t\t\t\t\n\t\t\t))}\n\t\t
    \n\t);\n}\n\nFileActions.propTypes = {\n\tselected: PropTypes.string,\n\tcreateFile: PropTypes.func.isRequired,\n\tdeleteFile: PropTypes.func.isRequired,\n\tenableRename: PropTypes.func.isRequired,\n\texportAsText: PropTypes.func.isRequired,\n\tprintFile: PropTypes.func.isRequired,\n\tstartImport: PropTypes.func.isRequired,\n};\n\nexport default React.memo(FileActions);\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction FileEntry(props) {\n\tconst [title, setTitle] = useState(props.title);\n\n\tconst {\n\t\tfileId,\n\t\tisSelected,\n\t\tisRenamed,\n\t\tdefaultTitle,\n\t\tselectFile,\n\t\tenableRename,\n\t\tupdateFile,\n\t} = props;\n\n\tconst classList = ['fileManagerEntry'];\n\tif (isSelected) {\n\t\tclassList.push('fileManagerEntry-isSelected');\n\t}\n\tif (isRenamed) {\n\t\tclassList.push('fileManagerEntry-isRenamed');\n\t}\n\n\tconst inputRef = React.createRef();\n\n\tuseEffect(() => {\n\t\tif (isRenamed) {\n\t\t\tinputRef.current.focus();\n\t\t}\n\t}, [isRenamed, inputRef]);\n\n\tfunction handleClick() {\n\t\tif (!isSelected) {\n\t\t\tselectFile(fileId);\n\t\t}\n\t}\n\n\tfunction handleDoubleClick(e) {\n\t\tif (!isRenamed) {\n\t\t\tenableRename(fileId);\n\t\t\te.target.select();\n\t\t}\n\t}\n\n\tfunction handleKeyPress(e) {\n\t\tif (isRenamed && e.which === 13) {\n\t\t\te.preventDefault();\n\t\t\twindow.getSelection().removeAllRanges();\n\n\t\t\tconst newTitle = e.target.value;\n\t\t\tsaveTitle(newTitle);\n\t\t}\n\t}\n\n\tfunction handleChange(e) {\n\t\tsetTitle(e.target.value);\n\t}\n\n\tfunction handleFocus(e) {\n\t\tif (isRenamed) {\n\t\t\te.target.select();\n\t\t}\n\t}\n\n\tfunction handleBlur(e) {\n\t\tif (isRenamed) {\n\t\t\tconst newTitle = e.target.value;\n\t\t\tsaveTitle(newTitle);\n\t\t}\n\t}\n\n\tfunction saveTitle(newTitle) {\n\t\tnewTitle = newTitle || defaultTitle;\n\n\t\tupdateFile(fileId, {\n\t\t\ttitle: newTitle,\n\t\t});\n\t\tsetTitle(newTitle);\n\n\t\tinputRef.current.scrollLeft = 0;\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nFileEntry.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\tfileId: PropTypes.string.isRequired,\n\tisSelected: PropTypes.bool.isRequired,\n\tisRenamed: PropTypes.bool.isRequired,\n\tdefaultTitle: PropTypes.string.isRequired,\n\tselectFile: PropTypes.func.isRequired,\n\tenableRename: PropTypes.func.isRequired,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default FileEntry;\n","import './FileManager.scss';\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport exportSelectedFileAsText from '../exportSelectedFileAsText';\n\nimport DeleteConfirmModal from './DeleteConfirmModal';\nimport Icon from '../../ui/_components/Icon';\nimport FileActions from './FileActions';\nimport FileEntry from './FileEntry';\n\nfunction FileManager(props) {\n\tconst [isDeleting, setIsDeleting] = useState(false);\n\n\tconst {\n\t\tallTitles,\n\t\tselected,\n\t\trenamed,\n\t\tdefaultTitle,\n\n\t\tcreateFile,\n\t\tdeleteFile,\n\t\tenableRename,\n\t\tstartImport,\n\t\tselectFile,\n\t\tupdateFile,\n\t\tsetEditorMode,\n\t} = props;\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t createFile(defaultTitle)}\n\t\t\t\t\tdeleteFile={() => setIsDeleting(true)}\n\t\t\t\t\tenableRename={() => enableRename(selected)}\n\t\t\t\t\tstartImport={() => startImport()}\n\t\t\t\t\texportAsText={() => {\n\t\t\t\t\t\tsetEditorMode('export');\n\t\t\t\t\t\tsetTimeout(() => exportSelectedFileAsText(), 0);\n\t\t\t\t\t}}\n\t\t\t\t\tprintFile={() => {\n\t\t\t\t\t\tsetEditorMode('print');\n\t\t\t\t\t\tsetTimeout(() => window.print(), 0);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t
      \n\t\t\t\t\t{allTitles.map((file) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n\nFileManager.propTypes = {\n\tallTitles: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\ttitle: PropTypes.string.isRequired,\n\t\t\tid: PropTypes.string.isRequired,\n\t\t})\n\t).isRequired,\n\tselected: PropTypes.string.isRequired,\n\trenamed: PropTypes.string.isRequired,\n\tdefaultTitle: PropTypes.string.isRequired,\n\n\tselectFile: PropTypes.func.isRequired,\n\tcreateFile: PropTypes.func.isRequired,\n\tdeleteFile: PropTypes.func.isRequired,\n\tenableRename: PropTypes.func.isRequired,\n\tstartImport: PropTypes.func.isRequired,\n\tupdateFile: PropTypes.func.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\n};\n\nexport default FileManager;\n","import { connect } from 'react-redux';\n\nimport { selectFile, enableRename } from '../_state/actions';\nimport {\n\tgetDefaultTitle,\n\tgetSelectedId,\n\tgetRenamedId,\n} from '../_state/selectors';\n\nimport { createFile, updateFile, deleteFile } from '../../db/files/actions';\nimport { startImport } from '../../songImporter/_state/actions';\nimport { setEditorMode } from '../../ui/layout/app/_state/actions';\n\nimport { getAllTitles } from '../../db/files/selectors';\n\nimport FileManager from '../_components/FileManager';\n\nexport default connect(\n\t(state) => ({\n\t\tselected: getSelectedId(state),\n\t\trenamed: getRenamedId(state),\n\t\tdefaultTitle: getDefaultTitle(state),\n\t\tallTitles: getAllTitles(state),\n\t}),\n\n\t{\n\t\tselectFile,\n\t\tcreateFile,\n\t\tdeleteFile,\n\t\tupdateFile,\n\t\tenableRename,\n\t\tsetEditorMode,\n\t\tstartImport,\n\t}\n)(FileManager);\n","import domPurify from 'dompurify';\n\nexport default function escapeHTML(unescaped) {\n\treturn domPurify.sanitize(unescaped);\n}\n","import './SongRenderer.scss';\n\nimport _pick from 'lodash/pick';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport escapeHTML from '../../core/escapeHTML';\n\nimport { renderAsHtml } from '../../core/renderSong';\n\nfunction SongRenderer(props) {\n\tconst { content, useChartFormat } = props;\n\n\tconst renderOptions = _pick(props, [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'accidentalsType',\n\n\t\t'chartType',\n\t\t'chartFormat',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\t]);\n\n\tconst rendered = renderAsHtml(content, renderOptions, useChartFormat);\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n\nSongRenderer.propTypes = {\n\tuseChartFormat: PropTypes.bool.isRequired,\n\tchartFormat: PropTypes.string.isRequired,\n\tcontent: PropTypes.string,\n};\n\nSongRenderer.defaultProps = {\n\tcontent: '',\n\tuseChartFormat: false,\n};\n\nexport default SongRenderer;\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../db/options/selectors';\n\nimport SongRenderer from '../_components/SongRenderer';\n\nexport default connect((state) => ({\n\t// songPreferences\n\ttransposeValue: getOptionValue(state, 'songPreferences', 'transposeValue'),\n\tharmonizeAccidentals: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'harmonizeAccidentals'\n\t),\n\taccidentalsType: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'preferredAccidentals'\n\t),\n\n\t// songFormatting\n\tchartFormat: getOptionValue(state, 'songFormatting', 'chartFormat'),\n\tchartType: getOptionValue(state, 'songFormatting', 'chartType'),\n\talignChordsWithLyrics: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'alignChordsWithLyrics'\n\t),\n\talignBars: getOptionValue(state, 'songFormatting', 'alignBars'),\n\tautoRepeatChords: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'autoRepeatChords'\n\t),\n\texpandSectionCopy: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'expandSectionCopy'\n\t),\n}))(SongRenderer);\n","import './EditorPreview.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction EditorPreview(props) {\n\tconst { selectedFile } = props;\n\n\tconst classNames = ['editorPreview'];\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n\nEditorPreview.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n};\n\nexport default EditorPreview;\n","import { connect } from 'react-redux';\n\n//import { getOptionValue } from '../../../db/options/selectors';\n\nimport EditorPreview from '../_components/EditorPreview';\n\nexport default connect(() => ({}))(EditorPreview);\n","import { Schema } from 'prosemirror-model';\n\nconst editorSchema = new Schema({\n\tnodes: {\n\t\tdoc: {\n\t\t\tcontent: 'block+',\n\t\t},\n\n\t\tparagraph: {\n\t\t\tcontent: 'inline*',\n\t\t\tgroup: 'block',\n\t\t\tparseDOM: [{ tag: 'p' }],\n\t\t\ttoDOM() {\n\t\t\t\treturn ['p', 0];\n\t\t\t},\n\t\t},\n\n\t\thard_break: {\n\t\t\tinline: true,\n\t\t\tgroup: 'inline',\n\t\t\tselectable: false,\n\t\t\tparseDOM: [{ tag: 'br' }],\n\t\t\t// no idea how to test this!\n\t\t\t/* istanbul ignore next */\n\t\t\ttoDOM() {\n\t\t\t\treturn ['br'];\n\t\t\t},\n\t\t},\n\n\t\ttext: {\n\t\t\tgroup: 'inline',\n\t\t},\n\t},\n});\n\nexport default editorSchema;\n","/**\n * Convert a proseMirror state to plain text\n */\nexport default function stateToText(state) {\n\tconst json = state.toJSON();\n\n\treturn json.doc.content\n\t\t.map((paragraph) => {\n\t\t\tif (!paragraph.content) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn paragraph.content.reduce((acc, current) => {\n\t\t\t\tacc += current.text || '\\n';\n\t\t\t\treturn acc;\n\t\t\t}, '');\n\t\t})\n\t\t.join('\\n');\n}\n","import domPurify from 'dompurify';\n\n/**\n * Minimal wrapper around DOMPurify library.\n * Pretty drastic also: anything that is HTML is just simply ignored, including text content of tags.\n *\n * @param {String} dirty\n * @returns {String} clean HTML\n */\nexport default function toSafeHtml(dirty) {\n\tconst config = {\n\t\tALLOWED_TAGS: ['p', '#text'],\n\t\tKEEP_CONTENT: false,\n\t};\n\n\treturn domPurify.sanitize(dirty, config);\n}\n","import './ProsemirrorEditorView.scss';\n\nimport React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { EditorState } from 'prosemirror-state';\nimport { EditorView } from 'prosemirror-view';\nimport { DOMParser as pmDOMParser } from 'prosemirror-model';\n\nimport getPlugins from './getPlugins';\nimport editorSchema from './schema';\n\nimport stateToText from './converters/stateToText';\nimport textToDom from './converters/textToDom';\n\nimport 'prosemirror-view/style/prosemirror.css';\n\nfunction createEditorState(editorContent) {\n\treturn EditorState.create({\n\t\tdoc: pmDOMParser\n\t\t\t.fromSchema(editorSchema)\n\t\t\t.parse(textToDom(editorContent), { preserveWhitespace: 'full' }),\n\t\tplugins: getPlugins(),\n\t});\n}\n\nfunction createEditorView(editorState, updateFile, fileId) {\n\treturn new EditorView(null, {\n\t\tstate: editorState,\n\t\tdispatchTransaction: function dispatchTransaction(transaction) {\n\t\t\tconst { state, transactions } =\n\t\t\t\tthis.state.applyTransaction(transaction);\n\n\t\t\tthis.updateState(state);\n\n\t\t\tif (transactions.some((tr) => tr.docChanged)) {\n\t\t\t\tupdateFile(fileId, { content: stateToText(state) });\n\t\t\t}\n\t\t},\n\t});\n}\n\nfunction ProseMirrorEditorView(props) {\n\tconst { selectedFileId, editorContent, updateFile } = props;\n\n\tconst editorView = useRef();\n\tconst editorDom = useRef();\n\tconst previousFileId = usePrevious(selectedFileId);\n\n\t/**\n\t * Editor is recreated on component mount and on file change.\n\t * The later is needed as we need to to re-bind the change handler with the new file id.\n\t */\n\tfunction shouldCreateEditor() {\n\t\treturn (\n\t\t\tselectedFileId &&\n\t\t\t(!editorView.current || previousFileId !== selectedFileId)\n\t\t);\n\t}\n\n\t// Editor has been previously created, but now no file is selected anymore\n\tfunction isEditorOrphan() {\n\t\treturn editorExists() && !selectedFileId;\n\t}\n\n\tfunction editorExists() {\n\t\treturn editorView.current && editorView.current.dom.parentNode;\n\t}\n\n\tfunction destroyEditor() {\n\t\teditorView.current.dom.parentNode.removeChild(editorView.current.dom);\n\t}\n\n\tuseEffect(() => {\n\t\tif (shouldCreateEditor()) {\n\t\t\tif (editorExists()) {\n\t\t\t\tdestroyEditor();\n\t\t\t}\n\n\t\t\tconst editorState = createEditorState(editorContent);\n\t\t\teditorView.current = createEditorView(\n\t\t\t\teditorState,\n\t\t\t\tupdateFile,\n\t\t\t\tselectedFileId\n\t\t\t);\n\t\t\teditorDom.current.appendChild(editorView.current.dom);\n\n\t\t\t// expose editor instance as a component property for unit tests\n\t\t\tProseMirrorEditorView.editorView = editorView.current;\n\t\t} else if (isEditorOrphan()) {\n\t\t\tdestroyEditor();\n\t\t}\n\t});\n\n\treturn
    ;\n}\n\nProseMirrorEditorView.defaultProps = {\n\tselectedFileId: '',\n\teditorContent: '',\n};\n\nProseMirrorEditorView.propTypes = {\n\tselectedFileId: PropTypes.string,\n\teditorContent: PropTypes.string,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default ProseMirrorEditorView;\n\n// @see https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\nfunction usePrevious(value) {\n\tconst ref = useRef();\n\tuseEffect(() => {\n\t\tref.current = value;\n\t});\n\treturn ref.current;\n}\n","import escapeHTML from './toSafeHtml';\n\n/**\n * @param {String} text\n * @returns {HTMLElement}\n */\nexport default function textToDom(text) {\n\tconst html = escapeHTML(text)\n\t\t.split('\\n')\n\t\t.map((line) => `

    ${line}

    `)\n\t\t.join('');\n\n\tconst div = document.createElement('div');\n\tdiv.innerHTML = escapeHTML(html);\n\n\treturn div;\n}\n","import { keymap } from 'prosemirror-keymap';\nimport { baseKeymap } from 'prosemirror-commands';\nimport { undo, redo, history as pmHistory } from 'prosemirror-history';\n\nexport default function getPlugins() {\n\treturn [\n\t\tpmHistory(),\n\t\tkeymap({ 'Mod-z': undo, 'Mod-y': redo }),\n\t\tkeymap(baseKeymap),\n\t];\n}\n","import './EditorLayout.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ScrollSync, ScrollSyncNode } from 'scroll-sync-react';\n\nimport EditorPreview from '../../../songRenderers/editorPreview/_containers/EditorPreview';\nimport ProseMirrorEditorView from '../prosemirror/ProsemirrorEditorView';\n\nfunction EditorLayout(props) {\n\tconst { selectedFile, updateFile } = props;\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n\nEditorLayout.propTypes = {\n\tselectedFile: PropTypes.object,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default EditorLayout;\n","import './ExportPreview.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction ExportPreview(props) {\n\tconst { selectedFile } = props;\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n\nExportPreview.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n};\n\nexport default ExportPreview;\n","import './PlayRenderer.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction PlayRenderer(props) {\n\tconst {\n\t\tselectedFile,\n\t\tfontSize,\n\t\tchordsColor,\n\t\thighlightChords,\n\t\tcolumnsCount,\n\t} = props;\n\n\tconst classNames = ['playRenderer'];\n\tclassNames.push('playRenderer--columns-' + columnsCount);\n\tclassNames.push('cmLine--fontSize' + fontSize);\n\tclassNames.push('cmChordSymbol--chordsColor-' + chordsColor);\n\tif (highlightChords) {\n\t\tclassNames.push('cmChordLine--highlightChords');\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n\nPlayRenderer.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tchordsColor: PropTypes.string.isRequired,\n\thighlightChords: PropTypes.bool.isRequired,\n};\n\nexport default PlayRenderer;\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../../db/options/selectors';\n\nimport PlayRenderer from '../_components/PlayRenderer';\n\nexport default connect((state) => ({\n\tchordsColor: getOptionValue(state, 'songFormatting', 'chordsColor'),\n\thighlightChords: getOptionValue(state, 'songFormatting', 'highlightChords'),\n\tfontSize: getOptionValue(state, 'songFormatting', 'fontSize'),\n\tcolumnsCount: getOptionValue(state, 'songFormatting', 'columnsCount'),\n}))(PlayRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport escapeHTML from '../../../core/escapeHTML';\n\nfunction Page(props) {\n\tconst {\n\t\tpageHeader,\n\t\tallColumnsLines,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tfontSize,\n\t} = props;\n\n\tconst allSectionsRendered = allColumnsLines.map((columnLines, index) => {\n\t\tconst columnLinesTxt = columnLines.join('\\n');\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t});\n\n\tconst pageClasses = ['printPreview-page'];\n\tpageClasses.push('printPreview-page--' + documentSize);\n\tpageClasses.push('printPreview-page--font' + fontSize);\n\n\tconst pageContentWrapperClasses = ['printPreview-pageContentWrapper'];\n\tpageContentWrapperClasses.push(\n\t\t'printPreview-pageContentWrapper--padding' + documentMargins\n\t);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t{pageHeader}\n\t\t\t\t\t
    \n\t\t\t\t\t\t{allSectionsRendered}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\n\t);\n}\nPage.defaultProps = {\n\tallColumnsLines: [],\n};\nPage.propTypes = {\n\tpageHeader: PropTypes.element,\n\tallColumnsLines: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n};\n\nexport default React.memo(Page);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction PageHeader(props) {\n\tconst { title } = props;\n\n\treturn
    {title}
    ;\n}\nPageHeader.defaultProps = {\n\tallColumnsLines: [],\n};\nPageHeader.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n};\n\nexport default React.memo(PageHeader);\n","const cssClasses = {\n\temptyLine: 'cmEmptyLine',\n\tchordLine: 'cmChordLine',\n\ttextLine: 'cmTextLine',\n};\n\n/**\n * @param {Object[]} allLinesWithHeight\n * @param {String} allLinesWithHeight.content\n * @param {Number} allLinesWithHeight.height\n * @param {Number} columnsCount\n * @param {Number} firstPageHeight\n * @param {Number} normalPageHeight\n * @param {Boolean} columnBreakOnParagraph\n * @param {Boolean} noEmptyLinesOnColumnStart\n * @param {Boolean} noOrphanTextLine\n * @returns {Array} array of pages, as array of columns\n */\nexport default function mapLinesToColumns(\n\tallLinesWithHeight,\n\t{\n\t\tcolumnsCount,\n\t\tfirstPageHeight,\n\t\tnormalPageHeight,\n\t\tcolumnBreakOnParagraph,\n\t\tnoEmptyLinesOnColumnStart = true,\n\t\tnoOrphanTextLine = true,\n\t}\n) {\n\tconst layout = layoutFactory({\n\t\tcolumnsCount,\n\t\tfirstPageHeight,\n\t\tnormalPageHeight,\n\t\tnoEmptyLinesOnColumnStart,\n\t});\n\n\tlet buffer = [];\n\tlet bufferHeight = 0;\n\n\tconst pageHeight = firstPageHeight || normalPageHeight;\n\n\tif (pageHeight > 0) {\n\t\tallLinesWithHeight.forEach((line, lineIndex) => {\n\t\t\tif (\n\t\t\t\tshouldRenderLine(\n\t\t\t\t\tlayout,\n\t\t\t\t\tline,\n\t\t\t\t\tbuffer,\n\t\t\t\t\tnoEmptyLinesOnColumnStart\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tbuffer.push(line);\n\t\t\t\tbufferHeight += line.height;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tbuffer.length > 0 &&\n\t\t\t\tisBreakable(line, allLinesWithHeight[lineIndex + 1], {\n\t\t\t\t\tnoOrphanTextLine,\n\t\t\t\t\tcolumnBreakOnParagraph,\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\tif (layout.fitsOnCurrentColumn(bufferHeight)) {\n\t\t\t\t\tlayout.insert(buffer);\n\t\t\t\t} else if (layout.fitsOnNextColumn(bufferHeight)) {\n\t\t\t\t\tlayout.insertOnNextColumn(buffer);\n\t\t\t\t} else {\n\t\t\t\t\tlayout.insert(buffer);\n\t\t\t\t}\n\t\t\t\tbuffer = [];\n\t\t\t\tbufferHeight = 0;\n\t\t\t}\n\t\t});\n\t}\n\treturn layout.get();\n}\n\n/**\n * Try to spot the case where the line is empty and would be rendered as the first line\n * of the next column, which we may want to avoid\n */\nfunction shouldRenderLine(layout, line, buffer, noEmptyLinesOnColumnStart) {\n\treturn !(\n\t\tisEmptyLine(line) &&\n\t\t!layout.fitsOnCurrentColumn(line.height) &&\n\t\tbuffer.length === 0 &&\n\t\tnoEmptyLinesOnColumnStart === true\n\t);\n}\n\nfunction isBreakable(\n\tcurrentLine,\n\tnextLine,\n\t{ noOrphanTextLine, columnBreakOnParagraph }\n) {\n\tif (isEmptyLine(currentLine) || !nextLine) {\n\t\treturn true;\n\t}\n\n\tconst wouldProduceOrphanTextLine =\n\t\tisChordLine(currentLine) && isTextLine(nextLine);\n\tif (noOrphanTextLine === true && wouldProduceOrphanTextLine) {\n\t\treturn false;\n\t}\n\n\tconst isEndOfParagraph = isEmptyLine(nextLine);\n\tif (columnBreakOnParagraph === true && !isEndOfParagraph) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction isEmptyLine(line) {\n\treturn hasClass(line.content, cssClasses.emptyLine);\n}\n\nfunction isChordLine(line) {\n\treturn hasClass(line.content, cssClasses.chordLine);\n}\n\nfunction isTextLine(line) {\n\treturn hasClass(line.content, cssClasses.textLine);\n}\n\nfunction hasClass(line, className) {\n\treturn line.indexOf(className) > -1;\n}\n\nfunction layoutFactory({ firstPageHeight, normalPageHeight, columnsCount }) {\n\tconst allPagesColumns = [];\n\n\tlet pageIndex = 0;\n\tlet columnIndex = 0;\n\tlet maxColumnHeight = getMaxColumnHeight();\n\tlet currentColumnHeight = 0;\n\n\tallPagesColumns[pageIndex] = [];\n\tallPagesColumns[pageIndex][columnIndex] = [];\n\n\tfunction flushBuffer(buffer) {\n\t\tbuffer.forEach((line) => {\n\t\t\tif (shouldChangeColumn(currentColumnHeight + line.height)) {\n\t\t\t\tchangeColumn();\n\t\t\t}\n\t\t\tallPagesColumns[pageIndex][columnIndex].push(line.content);\n\t\t\tcurrentColumnHeight += line.height;\n\t\t});\n\t}\n\n\tfunction getMaxColumnHeight() {\n\t\treturn pageIndex === 0 && firstPageHeight\n\t\t\t? firstPageHeight\n\t\t\t: normalPageHeight;\n\t}\n\n\tfunction shouldChangeColumn(nextHeight) {\n\t\treturn nextHeight > maxColumnHeight;\n\t}\n\n\tfunction changeColumn() {\n\t\tif (shouldChangePage()) {\n\t\t\tpageIndex++;\n\t\t\tallPagesColumns[pageIndex] = [];\n\t\t\tcolumnIndex = 0;\n\t\t} else {\n\t\t\tcolumnIndex++;\n\t\t}\n\t\tallPagesColumns[pageIndex][columnIndex] = [];\n\t\tcurrentColumnHeight = 0;\n\t\tmaxColumnHeight = getMaxColumnHeight();\n\t}\n\n\tfunction shouldChangePage() {\n\t\treturn columnIndex === columnsCount - 1;\n\t}\n\n\treturn {\n\t\tinsert(buffer) {\n\t\t\tflushBuffer(buffer);\n\t\t},\n\n\t\tinsertOnNextColumn(buffer) {\n\t\t\tchangeColumn();\n\t\t\tflushBuffer(buffer);\n\t\t},\n\n\t\tfitsOnCurrentColumn(bufferHeight) {\n\t\t\treturn currentColumnHeight + bufferHeight <= maxColumnHeight;\n\t\t},\n\n\t\tfitsOnNextColumn(bufferHeight) {\n\t\t\tconst nextColumnHeight =\n\t\t\t\tpageIndex === 0 && columnIndex < columnsCount && firstPageHeight\n\t\t\t\t\t? firstPageHeight\n\t\t\t\t\t: normalPageHeight;\n\t\t\treturn bufferHeight <= nextColumnHeight;\n\t\t},\n\n\t\tget() {\n\t\t\treturn allPagesColumns;\n\t\t},\n\t};\n}\n","import './getDimensionsFromDom.scss';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport default function getDimensionsFromDom(component, measuringFn) {\n\tconst container = document.createElement('div');\n\tcontainer.classList.add('measuring-node');\n\tdocument.body.appendChild(container);\n\n\treturn new Promise((resolve) => {\n\t\tReactDOM.render(
    {component}
    , container, () => {\n\t\t\tconst measure = measuringFn(container);\n\n\t\t\tReactDOM.unmountComponentAtNode(container);\n\t\t\tcontainer.parentNode.removeChild(container);\n\n\t\t\tresolve(measure);\n\t\t});\n\t});\n}\n","export default function padColumns(columnCount, allColumns = []) {\n\tfor (let i = allColumns.length || 0; i < columnCount; i++) {\n\t\tallColumns.push([]);\n\t}\n\treturn allColumns;\n}\n","export function getOffsetHeight(element) {\n\treturn element.offsetHeight;\n}\n\nexport function getClientHeight(element) {\n\treturn element.clientHeight;\n}\n","import React from 'react';\n\nimport getDimensionsFromDom from './getDimensionsFromDom';\nimport padColumns from './padColumns';\nimport { getOffsetHeight } from './element';\n\nimport Page from '../_components/Page';\n\nconst cssSelectors = {\n\tline: '.cmLine',\n};\n\nexport default async function getAllLinesHeight(\n\tallLines,\n\t{ columnsCount, documentSize, documentMargins, fontSize }\n) {\n\tconst component = (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n\n\tconst measuringFn = (container) => {\n\t\tconst allLinesHeight = [];\n\t\tcontainer.querySelectorAll(cssSelectors.line).forEach((line) => {\n\t\t\tallLinesHeight.push(getOffsetHeight(line));\n\t\t});\n\t\treturn allLinesHeight;\n\t};\n\n\treturn await getDimensionsFromDom(component, measuringFn);\n}\n","import React from 'react';\n\nimport getDimensionsFromDom from './getDimensionsFromDom';\nimport padColumns from './padColumns';\nimport { getClientHeight } from './element';\n\nimport Page from '../_components/Page';\nimport PageHeader from '../_components/PageHeader';\n\nexport default async function getAllLinesHeight(\n\ttitle,\n\t{ columnsCount, documentSize, documentMargins, fontSize }\n) {\n\tconst component = (\n\t\t}\n\t\t\tallColumnsLines={padColumns(columnsCount)}\n\t\t\tdocumentSize={documentSize}\n\t\t\tdocumentMargins={documentMargins}\n\t\t\tfontSize={fontSize}\n\t\t/>\n\t);\n\n\tconst measuringFn = (container) => {\n\t\tconst pageContent = container.querySelector(\n\t\t\t'.printPreview-pageContent'\n\t\t);\n\t\tconst pageColumnWrapper = container.querySelector(\n\t\t\t'.printPreview-pageColumnWrapper'\n\t\t);\n\t\treturn {\n\t\t\tfirstPageHeight: getClientHeight(pageColumnWrapper),\n\t\t\tnormalPageHeight: getClientHeight(pageContent),\n\t\t};\n\t};\n\n\treturn await getDimensionsFromDom(component, measuringFn);\n}\n","import React, { useState, useLayoutEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\nimport mapLinesToColumns from '../helpers/mapLinesToColumns';\nimport getAllLinesHeight from '../helpers/getAllLinesHeight';\nimport getPagesHeight from '../helpers/getPagesHeight';\nimport padColumns from '../helpers/padColumns';\n\nfunction AllPages(props) {\n\tconst [allPagesColumns, setAllPagesColumns] = useState([]);\n\n\tconst {\n\t\ttitle,\n\t\tallLines,\n\t\tcolumnsCount,\n\t\tcolumnBreakOnParagraph,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tfontSize,\n\t} = props;\n\n\tuseLayoutEffect(() => {\n\t\tconst getDimensions = async () => {\n\t\t\tconst pageOptions = {\n\t\t\t\tcolumnsCount,\n\t\t\t\tdocumentSize,\n\t\t\t\tdocumentMargins,\n\t\t\t\tfontSize,\n\t\t\t};\n\n\t\t\tconst allLinesHeight = await getAllLinesHeight(\n\t\t\t\tallLines,\n\t\t\t\tpageOptions\n\t\t\t);\n\n\t\t\tconst { normalPageHeight, firstPageHeight } = await getPagesHeight(\n\t\t\t\ttitle,\n\t\t\t\tpageOptions\n\t\t\t);\n\n\t\t\tconst allLinesWithHeight = allLines.map((line, index) => ({\n\t\t\t\tcontent: line,\n\t\t\t\theight: allLinesHeight[index],\n\t\t\t}));\n\n\t\t\tconst mapped = mapLinesToColumns(allLinesWithHeight, {\n\t\t\t\tcolumnsCount,\n\t\t\t\tcolumnBreakOnParagraph,\n\t\t\t\tnormalPageHeight,\n\t\t\t\tfirstPageHeight,\n\t\t\t});\n\n\t\t\tsetAllPagesColumns(mapped);\n\t\t};\n\t\tgetDimensions();\n\t}, [\n\t\tallLines,\n\t\ttitle,\n\t\tcolumnsCount,\n\t\tcolumnBreakOnParagraph,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tfontSize,\n\t]);\n\n\tconst allPagesRendered = allPagesColumns.map((pageColumns, index) => {\n\t\treturn (\n\t\t\t : null}\n\t\t\t\tallColumnsLines={padColumns(columnsCount, pageColumns)}\n\t\t\t\tdocumentSize={documentSize}\n\t\t\t\tdocumentMargins={documentMargins}\n\t\t\t\tfontSize={fontSize}\n\t\t\t/>\n\t\t);\n\t});\n\n\treturn {allPagesRendered};\n}\n\nAllPages.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\tallLines: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tcolumnBreakOnParagraph: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n};\n\nexport default AllPages;\n","import './PrintPreview.scss';\n\nimport _pick from 'lodash/pick';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { renderAsHtml } from '../../../core/renderSong';\nimport AllPages from './AllPages';\n\nfunction PrintPreview(props) {\n\tconst { selectedFile, highlightChords } = props;\n\n\tconst renderOptions = _pick(props, [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'accidentalsType',\n\n\t\t'chartType',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\t]);\n\n\tconst allLines = renderAsHtml(selectedFile.content || '', {\n\t\t...renderOptions,\n\t}).split('\\n');\n\n\tconst classNames = ['printPreview'];\n\tif (highlightChords) {\n\t\tclassNames.push('cmChordLine--highlightChords');\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\nPrintPreview.propTypes = {\n\tchartType: PropTypes.string.isRequired,\n\tselectedFile: PropTypes.object.isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tcolumnBreakOnParagraph: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\thighlightChords: PropTypes.bool.isRequired,\n};\n\nexport default PrintPreview;\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../../db/options/selectors';\n\nimport PrintPreview from '../_components/PrintPreview';\n\nexport default connect((state) => ({\n\t// songPreferences\n\tharmonizeAccidentals: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'harmonizeAccidentals'\n\t),\n\taccidentalsType: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'preferredAccidentals'\n\t),\n\ttransposeValue: getOptionValue(state, 'songPreferences', 'transposeValue'),\n\n\t// songFormatting\n\tchartType: getOptionValue(state, 'songFormatting', 'chartType'),\n\talignChordsWithLyrics: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'alignChordsWithLyrics'\n\t),\n\talignBars: getOptionValue(state, 'songFormatting', 'alignBars'),\n\tautoRepeatChords: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'autoRepeatChords'\n\t),\n\texpandSectionCopy: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'expandSectionCopy'\n\t),\n\n\tcolumnsCount: getOptionValue(state, 'songFormatting', 'columnsCount'),\n\tcolumnBreakOnParagraph: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'columnBreakOnParagraph'\n\t),\n\tdocumentMargins: getOptionValue(state, 'songFormatting', 'documentMargins'),\n\n\tfontSize: getOptionValue(state, 'songFormatting', 'fontSize'),\n\thighlightChords: getOptionValue(state, 'songFormatting', 'highlightChords'),\n}))(PrintPreview);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport EditorLayout from '../songEditor/_components/EditorLayout';\nimport ExportPreview from '../../songRenderers/exportPreview/_components/ExportPreview';\nimport PlayRenderer from '../../songRenderers/playRenderer/_containers/PlayRenderer';\nimport PrintPreview from '../../songRenderers/printPreview/_containers/PrintPreview';\n\nfunction Editor(props) {\n\tconst { editorMode } = props;\n\n\tswitch (editorMode) {\n\t\tcase 'edit':\n\t\t\treturn ;\n\t\tcase 'play':\n\t\t\treturn ;\n\t\tcase 'print':\n\t\t\treturn ;\n\t\tcase 'export':\n\t\t\treturn ;\n\t}\n}\n\nEditor.propTypes = {\n\teditorMode: PropTypes.string.isRequired,\n};\n\nexport default Editor;\n","import { connect } from 'react-redux';\n\nimport { getSelectedId } from '../../fileManager/_state/selectors';\nimport { getEditorMode } from '../../ui/layout/app/_state/selectors';\n\nimport { getOne } from '../../db/files/selectors';\nimport { updateFile } from '../../db/files/actions';\n\nimport Editor from '../_components/Editor';\n\nexport default connect(\n\t(state) => ({\n\t\tselectedFile: getOne(state, getSelectedId(state)) || {},\n\t\teditorMode: getEditorMode(state),\n\t}),\n\n\t{\n\t\tupdateFile,\n\t}\n)(Editor);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction OptionsPanel(props) {\n\tconst {\n\t\tid,\n\t\tallWidgets,\n\t\tnonInteractableWidgets,\n\t\thiddenWidgets,\n\t\tsetOption,\n\t\tgetEntryComponent,\n\t} = props;\n\n\tconst classNames = ['optionsPanel', 'optionsPanel-' + id];\n\n\tlet widget, groupWidget;\n\n\tlet WidgetComponent, GroupComponent;\n\tlet isGroupInteractable, isGroupWidgetInteractable;\n\n\tlet renderedGroupWidgets;\n\n\tconst renderedWidgets = allWidgets.widgetsOrder\n\t\t.filter((widgetId) => {\n\t\t\treturn !hiddenWidgets.includes(widgetId);\n\t\t})\n\t\t.map((widgetId) => {\n\t\t\twidget = allWidgets.allWidgets[widgetId];\n\n\t\t\tif (widget.type === 'optionsGroup') {\n\t\t\t\trenderedGroupWidgets = widget.groupWidgetsOrder\n\t\t\t\t\t.filter((groupWidgetId) => {\n\t\t\t\t\t\treturn !hiddenWidgets.includes(groupWidgetId);\n\t\t\t\t\t})\n\t\t\t\t\t.map((groupWidgetId) => {\n\t\t\t\t\t\tgroupWidget = widget.allGroupWidgets[groupWidgetId];\n\n\t\t\t\t\t\tisGroupWidgetInteractable =\n\t\t\t\t\t\t\t!nonInteractableWidgets.includes(widgetId) &&\n\t\t\t\t\t\t\t!nonInteractableWidgets.includes(groupWidgetId);\n\n\t\t\t\t\t\treturn renderWidget(\n\t\t\t\t\t\t\tgroupWidgetId,\n\t\t\t\t\t\t\tgroupWidget,\n\t\t\t\t\t\t\tisGroupWidgetInteractable\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\tGroupComponent = getEntryComponent(widget.type);\n\t\t\t\tisGroupInteractable =\n\t\t\t\t\t!nonInteractableWidgets.includes(widgetId);\n\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t{renderedGroupWidgets}\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn renderWidget(\n\t\t\t\t\twidgetId,\n\t\t\t\t\twidget,\n\t\t\t\t\t!nonInteractableWidgets.includes(widgetId)\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\tfunction renderWidget(widgetId, localWidget, isInteractable) {\n\t\tWidgetComponent = getEntryComponent(localWidget.type);\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\treturn
    {renderedWidgets}
    ;\n}\n\nOptionsPanel.propTypes = {\n\tid: PropTypes.string.isRequired,\n\tallWidgets: PropTypes.object.isRequired,\n\tnonInteractableWidgets: PropTypes.arrayOf(PropTypes.string).isRequired,\n\thiddenWidgets: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tsetOption: PropTypes.func.isRequired,\n\tgetEntryComponent: PropTypes.func.isRequired,\n};\n\nexport default OptionsPanel;\n","import './OptionsGroup.scss';\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction OptionsGroup(props) {\n\tconst [isOpened, setIsOpened] = useState(props.isOpened);\n\n\tconst { isInteractable, icon, label } = props;\n\n\tconst classNames = ['sb-optionsGroup'];\n\tif (!shouldBeInteractable()) {\n\t\tclassNames.push('sb-optionsGroup-isNotInteractable');\n\t}\n\n\tif (shouldBeClosed()) {\n\t\tsetIsOpened(false);\n\t}\n\n\tfunction shouldBeInteractable() {\n\t\treturn isInteractable && props.children && props.children.length > 0;\n\t}\n\n\tfunction shouldBeClosed() {\n\t\treturn isOpened && (!props.children || props.children.length === 0);\n\t}\n\n\tfunction handleClick() {\n\t\tsetIsOpened(!isOpened);\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{' '}\n\t\t\t\t\t{label}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{isOpened && props.children}\n\t\t\t
    \n\t\t\n\t);\n}\n\nOptionsGroup.propTypes = {\n\tisOpened: PropTypes.bool,\n\tisInteractable: PropTypes.bool.isRequired,\n\ticon: PropTypes.string.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tchildren: PropTypes.arrayOf(PropTypes.element),\n};\n\nOptionsGroup.defaultProps = {\n\tisOpened: true,\n};\n\nexport default OptionsGroup;\n","import './Select.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction SelectChoice(props) {\n\tconst { isSelected, isInteractable, label, onClick } = props;\n\n\tlet checkIcon;\n\tconst classNames = ['sb-optionSelectChoice'];\n\n\tif (isSelected) {\n\t\tclassNames.push('sb-optionSelectChoice-isSelected');\n\t\tcheckIcon = (\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\tif (!isInteractable) {\n\t\tclassNames.push('sb-optionSelectChoice-isNotInteractable');\n\t}\n\n\tfunction handleClick() {\n\t\tif (isInteractable) {\n\t\t\tonClick();\n\t\t}\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t{isSelected && checkIcon}\n\t\t\t
    \n\t\t\t
    {label}
    \n\t\t
    \n\t);\n}\n\nSelectChoice.propTypes = {\n\tisSelected: PropTypes.bool.isRequired,\n\tisInteractable: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tonClick: PropTypes.func.isRequired,\n};\n\nexport default React.memo(SelectChoice);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport SelectChoice from './SelectChoice';\n\nimport Icon from '../../../_components/Icon';\n\nfunction Select(props) {\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\tconst {\n\t\tisInteractable,\n\t\tlabel,\n\t\tallChoices,\n\t\toptionContext,\n\t\toptionKey,\n\t\toptionValue,\n\t\tsetOption,\n\t} = props;\n\n\tconst classNames = ['sb-optionSelect'];\n\tif (!isInteractable) {\n\t\tclassNames.push('sb-optionSelect-isNotInteractable');\n\t}\n\n\tconst iconName = isOpen ? 'keyboard_arrow_down' : 'keyboard_arrow_right';\n\n\tfunction toggleChoices() {\n\t\tsetIsOpen(!isOpen);\n\t}\n\n\tconst renderedChoices = !isOpen ? null : (\n\t\t
    \n\t\t\t{allChoices.map((choice) => (\n\t\t\t\t {\n\t\t\t\t\t\tsetOption(optionContext, optionKey, choice.value);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t))}\n\t\t
    \n\t);\n\n\tconst activeLabel = allChoices.find(\n\t\t(choice) => optionValue === choice.value\n\t).label;\n\n\tconst selectLabel = isOpen ? (\n\t\tlabel\n\t) : (\n\t\t\n\t\t\t{label + ': '}\n\t\t\t\n\t\t\t\t{activeLabel}\n\t\t\t\n\t\t\n\t);\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{selectLabel}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\n\t\t\t{renderedChoices}\n\t\t\n\t);\n}\n\nSelect.propTypes = {\n\tisInteractable: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tallChoices: PropTypes.array.isRequired,\n\toptionContext: PropTypes.string.isRequired,\n\toptionKey: PropTypes.string.isRequired,\n\toptionValue: PropTypes.string.isRequired,\n\tsetOption: PropTypes.func.isRequired,\n};\n\nexport default Select;\n","import './Slider.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Slider(props) {\n\tconst {\n\t\tisInteractable,\n\t\tlabel,\n\t\tmin,\n\t\tmax,\n\t\tshowPlusSymbol,\n\t\toptionContext,\n\t\toptionKey,\n\t\toptionValue,\n\t\tsetOption,\n\t} = props;\n\n\tconst classNames = ['sb-optionSlider'];\n\tif (!isInteractable) {\n\t\tclassNames.push('sb-optionSlider-isNotInteractable');\n\t}\n\n\tfunction handleChange(e) {\n\t\tsetOption(optionContext, optionKey, Number.parseInt(e.target.value));\n\t}\n\n\tconst valueDisplay =\n\t\toptionValue > 0 && showPlusSymbol ? '+' + optionValue : optionValue;\n\n\treturn (\n\t\t
    \n\t\t\t
    {label}
    \n\t\t\t
    {valueDisplay}
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n}\n\nSlider.propTypes = {\n\tisInteractable: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tmin: PropTypes.number.isRequired,\n\tmax: PropTypes.number.isRequired,\n\tshowPlusSymbol: PropTypes.bool,\n\toptionContext: PropTypes.string.isRequired,\n\toptionKey: PropTypes.string.isRequired,\n\toptionValue: PropTypes.number.isRequired,\n\tsetOption: PropTypes.func.isRequired,\n};\n\nSlider.defaultProps = {\n\tshowPlusSymbol: true,\n};\n\nexport default React.memo(Slider);\n","import './Toggle.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction Toggle(props) {\n\tconst {\n\t\tisInteractable,\n\t\tlabel,\n\t\toptionContext,\n\t\toptionKey,\n\t\toptionValue,\n\t\tsetOption,\n\t} = props;\n\n\tconst classNames = ['sb-optionToggle'];\n\tclassNames.push(\n\t\toptionValue === true ? 'sb-optionToggle-isOn' : 'sb-optionToggle-isOff'\n\t);\n\tif (!isInteractable) {\n\t\tclassNames.push('sb-optionToggle-isNotInteractable');\n\t}\n\n\tfunction handleClick() {\n\t\tsetOption(optionContext, optionKey, !optionValue);\n\t}\n\n\treturn (\n\t\t\n\t\t\t
    {label}
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t);\n}\n\nToggle.propTypes = {\n\tisInteractable: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\toptionContext: PropTypes.string.isRequired,\n\toptionKey: PropTypes.string.isRequired,\n\toptionValue: PropTypes.bool.isRequired,\n\tsetOption: PropTypes.func.isRequired,\n};\n\nexport default React.memo(Toggle);\n","import './SidebarOptionsPanel.scss';\n\nimport React from 'react';\n\nimport OptionPanel from '../../../../optionsPanels/_components/OptionsPanel';\n\nimport OptionsGroup from './OptionsGroup';\nimport Select from './Select';\nimport Slider from './Slider';\nimport Toggle from './Toggle';\n\nfunction getEntryComponent(type) {\n\tswitch (type) {\n\t\tcase 'optionsGroup':\n\t\t\treturn OptionsGroup;\n\t\tcase 'select':\n\t\t\treturn Select;\n\t\tcase 'slider':\n\t\t\treturn Slider;\n\t\tcase 'toggle':\n\t\t\treturn Toggle;\n\t}\n}\n\nexport default function SidebarOptionPanel(props) {\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import createAction from '../../core/createAction';\nimport * as actionTypes from './actionsTypes';\n\nexport const setOptionValue = (context, key, value) => {\n\tif (!context) {\n\t\tthrow new TypeError('Cannot set an option without a context');\n\t}\n\tif (!key) {\n\t\tthrow new TypeError('Cannot set an option without a key');\n\t}\n\tconst payload = {\n\t\tcontext,\n\t\tkey,\n\t\tvalue,\n\t};\n\treturn createAction(actionTypes.DB_OPTION_SET_OPTION_VALUE, payload);\n};\n","import Rendering from '../_components/Rendering';\nimport OptionsPanelFactory from '../../_containers/OptionsPanelFactory';\n\nimport allWidgets from '../allWidgets';\nimport {\n\tgetNonInteractableWidgets,\n\tgetHiddenWidgets,\n} from '../_state/selectors';\n\nexport default OptionsPanelFactory(\n\tallWidgets,\n\tgetNonInteractableWidgets,\n\tgetHiddenWidgets,\n\tRendering\n);\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../db/options/selectors';\nimport { setOptionValue } from '../../db/options/actions';\n\nexport default function OptionsPanelFactory(\n\tallWidgets,\n\tgetNonInteractableWidgets,\n\tgetHiddenWidgets,\n\tcomponent\n) {\n\treturn connect(\n\t\t(state) => {\n\t\t\tconst stateToProps = {\n\t\t\t\tallWidgets,\n\t\t\t\tnonInteractableWidgets: getNonInteractableWidgets(state),\n\t\t\t\thiddenWidgets: getHiddenWidgets(state),\n\t\t\t};\n\n\t\t\tlet widget;\n\t\t\tlet groupWidget;\n\n\t\t\tallWidgets.widgetsOrder.forEach((widgetId) => {\n\t\t\t\twidget = allWidgets.allWidgets[widgetId];\n\n\t\t\t\twidget.groupWidgetsOrder.forEach((groupWidgetId) => {\n\t\t\t\t\tgroupWidget = widget.allGroupWidgets[groupWidgetId];\n\n\t\t\t\t\tstateToProps[groupWidget.option.key] = getOptionValue(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tgroupWidget.option.context,\n\t\t\t\t\t\tgroupWidget.option.key\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn stateToProps;\n\t\t},\n\n\t\t{\n\t\t\tsetOption: setOptionValue,\n\t\t}\n\t)(component);\n}\n","/* eslint-disable max-lines */\nexport default {\n\twidgetsOrder: ['key', 'preferences', 'layout', 'style'],\n\n\tallWidgets: {\n\t\tkey: {\n\t\t\tlabel: 'Key',\n\t\t\ttype: 'optionsGroup',\n\t\t\ticon: 'music_note',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'transposeValue',\n\t\t\t\t'harmonizeAccidentals',\n\t\t\t\t'preferredAccidentals',\n\t\t\t],\n\t\t\tallGroupWidgets: {\n\t\t\t\ttransposeValue: {\n\t\t\t\t\tlabel: 'Transpose',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: -11,\n\t\t\t\t\t\tmax: 11,\n\t\t\t\t\t\tshowPlusSymbol: true,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songPreferences',\n\t\t\t\t\t\tkey: 'transposeValue',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tharmonizeAccidentals: {\n\t\t\t\t\tlabel: 'Harmonize accidentals',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songPreferences',\n\t\t\t\t\t\tkey: 'harmonizeAccidentals',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tpreferredAccidentals: {\n\t\t\t\t\tlabel: 'Preferred accidentals',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'preferredAccidentalsAuto',\n\t\t\t\t\t\t\t\tlabel: 'Auto',\n\t\t\t\t\t\t\t\tvalue: 'auto',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'preferredAccidentalsSharp',\n\t\t\t\t\t\t\t\tlabel: '♯',\n\t\t\t\t\t\t\t\tvalue: 'sharp',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'preferredAccidentalsFlat',\n\t\t\t\t\t\t\t\tlabel: '♭',\n\t\t\t\t\t\t\t\tvalue: 'flat',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songPreferences',\n\t\t\t\t\t\tkey: 'preferredAccidentals',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tpreferences: {\n\t\t\tlabel: 'Preferences',\n\t\t\ttype: 'optionsGroup',\n\t\t\ticon: 'tune',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'chartFormat',\n\t\t\t\t'chartType',\n\t\t\t\t'alignChordsWithLyrics',\n\t\t\t\t'alignBars',\n\t\t\t\t'autoRepeatChords',\n\t\t\t\t'expandSectionCopy',\n\t\t\t],\n\t\t\tallGroupWidgets: {\n\t\t\t\tchartFormat: {\n\t\t\t\t\tlabel: 'Export format',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'formatChordMark',\n\t\t\t\t\t\t\t\tlabel: 'ChordMark',\n\t\t\t\t\t\t\t\tvalue: 'chordmark',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'formatChordMarkSrc',\n\t\t\t\t\t\t\t\tlabel: 'ChordMark (Source)',\n\t\t\t\t\t\t\t\tvalue: 'chordmarkSrc',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'formatChordpro',\n\t\t\t\t\t\t\t\tlabel: 'ChordPro',\n\t\t\t\t\t\t\t\tvalue: 'chordpro',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'chartFormat',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tchartType: {\n\t\t\t\t\tlabel: 'Chart type',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'typedisplayAll',\n\t\t\t\t\t\t\t\tlabel: 'Complete',\n\t\t\t\t\t\t\t\tvalue: 'all',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'typedisplayLyrics',\n\t\t\t\t\t\t\t\tlabel: 'Lyrics only',\n\t\t\t\t\t\t\t\tvalue: 'lyrics',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'typedisplayChords',\n\t\t\t\t\t\t\t\tlabel: 'Chords only',\n\t\t\t\t\t\t\t\tvalue: 'chords',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'typedisplayChordsFirstLyricLine',\n\t\t\t\t\t\t\t\tlabel: 'Chords + First lyric line',\n\t\t\t\t\t\t\t\tvalue: 'chordsFirstLyricLine',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'chartType',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\talignChordsWithLyrics: {\n\t\t\t\t\tlabel: 'Align chords with lyrics',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'alignChordsWithLyrics',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\talignBars: {\n\t\t\t\t\tlabel: 'Align bars',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'alignBars',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tautoRepeatChords: {\n\t\t\t\t\tlabel: 'Auto repeat chords',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'autoRepeatChords',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\texpandSectionCopy: {\n\t\t\t\t\tlabel: 'Expand copied sections',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'expandSectionCopy',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tlayout: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Layout',\n\t\t\ticon: 'view_compact',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'columnsCount',\n\t\t\t\t'columnBreakOnParagraph',\n\t\t\t\t'documentMargins',\n\t\t\t],\n\t\t\tallGroupWidgets: {\n\t\t\t\tcolumnsCount: {\n\t\t\t\t\tlabel: 'Columns',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: 1,\n\t\t\t\t\t\tmax: 4,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'columnsCount',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tcolumnBreakOnParagraph: {\n\t\t\t\t\tlabel: 'Break on paragraph',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'columnBreakOnParagraph',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tdocumentMargins: {\n\t\t\t\t\tlabel: 'Margins',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: 1,\n\t\t\t\t\t\tmax: 5,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'documentMargins',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tstyle: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Style',\n\t\t\ticon: 'format_size',\n\n\t\t\tgroupWidgetsOrder: ['fontSize', 'chordsColor', 'highlightChords'],\n\n\t\t\tallGroupWidgets: {\n\t\t\t\tfontSize: {\n\t\t\t\t\tlabel: 'Font size',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: -5,\n\t\t\t\t\t\tmax: +5,\n\t\t\t\t\t\tshowPlusSymbol: true,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'fontSize',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tchordsColor: {\n\t\t\t\t\tlabel: 'Chords color',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColor',\n\t\t\t\t\t\t\t\tlabel: 'Base',\n\t\t\t\t\t\t\t\tvalue: 'base',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColorRed',\n\t\t\t\t\t\t\t\tlabel: 'Red',\n\t\t\t\t\t\t\t\tvalue: 'red',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColorYellow',\n\t\t\t\t\t\t\t\tlabel: 'Yellow',\n\t\t\t\t\t\t\t\tvalue: 'yellow',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColorGreen',\n\t\t\t\t\t\t\t\tlabel: 'Green',\n\t\t\t\t\t\t\t\tvalue: 'green',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'chordsColor',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\thighlightChords: {\n\t\t\t\t\tlabel: 'Highlight Chords',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'highlightChords',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n};\n","import _difference from 'lodash/difference';\n\nimport editorModeOptions from '../../../db/options/editorModeOptions'; // duh!\nimport { getEditorMode } from '../../../ui/layout/app/_state/selectors';\nimport { getSelectedId } from '../../../fileManager/_state/selectors';\nimport {\n\tgetOptionsDefaults,\n\tgetOptionValue,\n} from '../../../db/options/selectors';\n\nexport const getNonInteractableWidgets = (state) => {\n\tconst nonInteractableWidgets = [];\n\n\tconst allOptions = Object.keys({\n\t\t...getOptionsDefaults(state, 'songFormatting'),\n\t\t...getOptionsDefaults(state, 'songPreferences'),\n\t});\n\n\tconst selectedId = getSelectedId(state);\n\tif (!selectedId) {\n\t\treturn allOptions;\n\t}\n\n\tconst editorMode = getEditorMode(state);\n\n\tconst nonInteractableOptions = _difference(\n\t\tallOptions,\n\t\teditorModeOptions[editorMode]\n\t);\n\n\tnonInteractableWidgets.push(...nonInteractableOptions);\n\n\t// specific rules\n\tconst chartType = getOptionValue(state, 'songFormatting', 'chartType');\n\tif (chartType === 'lyrics') {\n\t\tnonInteractableWidgets.push('alignChordsWithLyrics');\n\t\tnonInteractableWidgets.push('alignBars');\n\t\tnonInteractableWidgets.push('autoRepeatChords');\n\t} else if (chartType === 'chords') {\n\t\tnonInteractableWidgets.push('alignChordsWithLyrics');\n\t}\n\n\tconst chartFormat = getOptionValue(state, 'songFormatting', 'chartFormat');\n\tif (['chordmarkSrc', 'chordpro'].includes(chartFormat)) {\n\t\tnonInteractableWidgets.push('chartType');\n\t\tnonInteractableWidgets.push('alignChordsWithLyrics');\n\t\tnonInteractableWidgets.push('alignBars');\n\t\tnonInteractableWidgets.push('autoRepeatChords');\n\t}\n\tif (chartFormat === 'chordmarkSrc') {\n\t\tnonInteractableWidgets.push('expandSectionCopy');\n\t}\n\n\treturn nonInteractableWidgets;\n};\n\nexport const getHiddenWidgets = (state) => {\n\tconst hiddenWidgets = [];\n\n\tconst harmonizeAccidentals = getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'harmonizeAccidentals'\n\t);\n\n\tif (!harmonizeAccidentals) {\n\t\thiddenWidgets.push('preferredAccidentals');\n\t}\n\n\treturn hiddenWidgets;\n};\n","import './Rendering.scss';\n\nimport React from 'react';\n\nimport Icon from '../../../ui/_components/Icon';\n\nimport SidebarOptionPanel from '../../../ui/sideBar/options/_components/SidebarOptionsPanel';\n\nexport default function Rendering(props) {\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React from 'react';\n\nimport AppLayout from '../ui/layout/app/_containers/App';\nimport FileManager from '../fileManager/_containers/FileManager';\nimport Editor from '../editor/_containers/Editor';\nimport RightBarPanel from '../optionsPanels/rendering/_containers/Rendering';\n\nexport default function Edit() {\n\tconst fm = ;\n\tconst rightBarPanel = ;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import UniversalRouter from 'universal-router';\nimport renderController from './renderController';\n\nimport Editor from './controllers/Editor';\n\nconst routes = [\n\t{\n\t\tpath: '/editor',\n\t\taction: () => Editor,\n\t},\n];\n\nconst universalRouter = new UniversalRouter(routes);\n\nexport default {\n\tnavigateTo(path) {\n\t\treturn universalRouter.resolve(path).then((controller) => {\n\t\t\treturn renderController(controller);\n\t\t});\n\t},\n};\n","import React from 'react';\nimport ReactDom from 'react-dom';\nimport { Provider } from 'react-redux';\n\nimport { getStore } from './state/store';\n\nimport ErrorBoundary from './ui/_components/ErrorBoundary';\n\nexport default function renderController(Controller) {\n\tReactDom.render(\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t,\n\t\tdocument.getElementById('app')\n\t);\n}\n","import '../scss/styles.scss';\n\nimport { createStore } from './state/store';\nimport registerHandlers from './registerHandlers';\nimport router from './router';\nimport addSampleContent from './addSampleContent';\n\nregisterHandlers();\n\nexport default function run() {\n\tcreateStore();\n\n\taddSampleContent();\n\n\treturn router.navigateTo('/editor');\n}\n","import { getStore } from './state/store';\n\nimport { getAllTitles } from './db/files/selectors';\nimport { importFile } from './db/files/actions';\n\nimport gettingStarted from './gettingStarted.txt';\nimport sampleSong from './sampleSong.txt';\n\nexport default function addSampleContent() {\n\tconst store = getStore();\n\tconst state = store.getState();\n\n\tconst allTitles = getAllTitles(state);\n\n\tif (allTitles.length === 0) {\n\t\tstore.dispatch(importFile('Hallelujah - Leonard Cohen', sampleSong));\n\t\tstore.dispatch(importFile('Getting started', gettingStarted));\n\t}\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_touffi_chords_charts_studio\"] = self[\"webpackChunk_touffi_chords_charts_studio\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(\"SF5+\")))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","clock","Date","now","DB_FILES_CREATE","DB_FILES_DELETE","DB_FILES_IMPORT","DB_FILES_UPDATE","DB_OPTION_SET_OPTION_VALUE","UI_LAYOUT_APP_SET_EDITOR_MODE","UI_LAYOUT_APP_TOGGLE_LEFT_BAR","UI_LAYOUT_APP_TOGGLE_RIGHT_BAR","isLeftBarCollapsed","state","ui","layout","app","isRightBarCollapsed","getEditorMode","editorMode","getSelectedId","fileManager","selected","getRenamedId","renamed","getDefaultTitle","defaultTitle","getAllTitles","createSelectorCreator","defaultMemoize","_isEqual","createDeepEqualSelector","_map","db","files","allFiles","title","id","_sortBy","o","toLowerCase","getOne","getCategoryOptions","category","file","options","Object","keys","length","_cloneDeep","getLatestModeOptions","fileOptions","allOptionsPerMode","edit","push","play","print","export","sort","a","b","updatedAt","reduce","acc","modeOptions","assign","initialState","createFile","action","payload","content","updateFile","deleteFile","updateFileOption","fullState","context","key","value","includes","optionCategory","fileState","addOption","setEditorMode","fileId","nextMode","mode","previousModeOptions","_pick","editorModeOptions","FILE_MANAGER_SELECT_FILE","FILE_MANAGER_ENABLE_RENAME","getOptionValue","values","getOptionsDefaults","defaults","setOptionValue","newState","newOptions","getModeOptions","songFormatting","defaultOptions","allEditorModeOptions","selectFile","songPreferences","defaultPreferences","newPreferences","combineSectionReducers","type","actionTypes","SONG_IMPORTER_IMPORT_CANCEL","SONG_IMPORTER_IMPORT_START","SONG_IMPORTER_SET_CONTENT","SONG_IMPORTER_SET_INPUT_FORMAT","stripTags","html","domPurify","ALLOWED_TAGS","KEEP_CONTENT","isFromWeb","isImporting","inputFormat","activeModal","songImporter","actions","transposeValue","harmonizeAccidentals","preferredAccidentals","chartFormat","chartType","alignChordsWithLyrics","alignBars","autoRepeatChords","expandSectionCopy","columnsCount","columnBreakOnParagraph","documentMargins","fontSize","chordsColor","highlightChords","store","createStore","storeEnhancers","composeWithDevTools","applyMiddleware","thunkMiddleware","persistedState","serializedState","localStorage","getItem","JSON","parse","err","loadState","rendering","_defaultsDeep","seed","createReduxStore","allReducers","subscribe","stringify","setItem","saveState","getState","getStore","createAction","TypeError","songImporterHandlers","message","buildTitle","artist","dispatch","actionsTypes","startImportFromWeb","source","chordChart","songTitle","_handleMessage","e","allHandlers","window","origin","location","data","ErrorBoundary","props","error","errorInfo","this","setState","className","style","whiteSpace","open","toString","componentStack","children","React","propTypes","PropTypes","Logo","src","logoImg","alt","Icon","iconName","join","NavEntry","label","icon","isActive","isDisabled","classNames","onClick","Nav","currentMode","allEntries","selectedId","map","entry","Button","buttonName","allClassNames","disabled","name","defaultProps","UserGuide","focus","Versions","versions","importFile","uuidv4","getContent","getInputFormat","getTitle","Modal","closeModal","useEffect","handleKeyboard","addEventListener","removeEventListener","Header","cancelImport","chordMarkContent","headerTitle","getSongTitle","substr","lastIndexOf","isOversized","size","isTextFile","indexOf","getFileTooBigMsg","actualSize","filesize","round","getWrongFileTypeMsg","getNoFileSelectedMsg","fileList","Promise","resolve","reject","text","then","fileContent","catch","FilePicker","setContent","htmlFor","onChange","ev","getUploadedFile","target","accept","Input","allClasses","PreviewError","InputFormatEntry","setInputFormat","allInputClasses","allLabelClasses","checked","InputFormatSelector","disableAll","rendered","allLines","chordSheetJs2ChordMark","song","formatAllParagraphs","bodyParagraphs","paragraph","formatParagraph","lines","line","formatLine","parts","formatChordLine","formatLyricLine","formatTagLine","filter","i","part","trimRight","lineHasChords","items","chordLine","item","itemHasChord","chords","trim","lineHasLyrics","lyricsLine","itemHasLyric","itemHasLeftPadding","lyrics","itemHasRightPadding","lineHasTag","tagValue","replace","sectionLabelsMapping","adlib","bridge","chorus","interlude","intro","introduction","outro","prechorus","solo","some","ChordLyricsPair","Tag","isRenderable","trimLeft","ultimateGuitar2ChordMark","ugChordChartRaw","ugChordChart","ChordSheetJS","getConverter","parser","input","converter","SongImporter","input2ChordMark","connect","App","toggleLeftBar","toggleRightBar","leftBar","rightBar","leftBarClassNames","rightBarClassNames","allNavEntries","renderAsHtml","songTxt","renderOptions","useChartFormat","render","outputFormat","toHtml","customRenderer","chordMark2ChordPro","chordProTxt","renderSong","chordMarkHtml","split","parsed","parseSong","renderSongCm","exportSelectedFileAsText","selectedFile","accidentalsType","renderAsText","fileExt","fileName","blob","Blob","endings","saveAs","ModalConfirm","confirmAction","confirmTitle","cancelAction","cancelTitle","DeleteConfirmModal","isDeleting","setIsDeleting","FileActionEntry","FileActions","enableRename","startImport","exportAsText","allActions","printFile","FileEntry","useState","setTitle","isSelected","isRenamed","classList","inputRef","saveTitle","newTitle","current","scrollLeft","onDoubleClick","select","ref","readOnly","autoFocus","onBlur","onFocus","onKeyPress","which","preventDefault","getSelection","removeAllRanges","FileManager","allTitles","setTimeout","isRequired","escapeHTML","unescaped","SongRenderer","dangerouslySetInnerHTML","__html","EditorPreview","Schema","nodes","doc","group","parseDOM","tag","toDOM","hard_break","inline","selectable","stateToText","toJSON","toSafeHtml","dirty","ProseMirrorEditorView","selectedFileId","editorContent","editorView","useRef","editorDom","previousFileId","editorExists","dom","parentNode","destroyEditor","removeChild","editorState","EditorState","pmDOMParser","editorSchema","div","document","createElement","innerHTML","preserveWhitespace","plugins","pmHistory","keymap","undo","redo","baseKeymap","createEditorState","EditorView","dispatchTransaction","transaction","applyTransaction","transactions","updateState","tr","docChanged","createEditorView","appendChild","EditorLayout","ExportPreview","PlayRenderer","Page","pageHeader","allColumnsLines","documentSize","allSectionsRendered","columnLines","index","columnLinesTxt","pageClasses","pageContentWrapperClasses","PageHeader","cssClasses","mapLinesToColumns","allLinesWithHeight","firstPageHeight","normalPageHeight","noEmptyLinesOnColumnStart","noOrphanTextLine","allPagesColumns","pageIndex","columnIndex","maxColumnHeight","getMaxColumnHeight","currentColumnHeight","flushBuffer","buffer","forEach","shouldChangeColumn","height","changeColumn","nextHeight","shouldChangePage","insert","insertOnNextColumn","fitsOnCurrentColumn","bufferHeight","fitsOnNextColumn","get","layoutFactory","lineIndex","isEmptyLine","shouldRenderLine","currentLine","nextLine","wouldProduceOrphanTextLine","hasClass","isChordLine","isTextLine","isEndOfParagraph","isBreakable","getDimensionsFromDom","component","measuringFn","container","add","body","ReactDOM","measure","padColumns","columnCount","allColumns","getOffsetHeight","element","offsetHeight","getClientHeight","clientHeight","cssSelectors","getAllLinesHeight","allLinesHeight","querySelectorAll","pageContent","querySelector","AllPages","setAllPagesColumns","useLayoutEffect","getDimensions","pageOptions","getPagesHeight","mapped","allPagesRendered","pageColumns","PrintPreview","Editor","OptionsPanel","widget","groupWidget","WidgetComponent","GroupComponent","isGroupInteractable","isGroupWidgetInteractable","renderedGroupWidgets","allWidgets","nonInteractableWidgets","hiddenWidgets","setOption","getEntryComponent","renderedWidgets","widgetsOrder","widgetId","groupWidgetsOrder","groupWidgetId","allGroupWidgets","renderWidget","isInteractable","localWidget","optionContext","option","optionKey","optionValue","typeOptions","OptionsGroup","isOpened","setIsOpened","shouldBeInteractable","SelectChoice","checkIcon","Select","isOpen","setIsOpen","allChoices","renderedChoices","choice","activeLabel","find","selectLabel","Slider","min","max","showPlusSymbol","valueDisplay","Number","parseInt","Toggle","SidebarOptionPanel","getNonInteractableWidgets","getHiddenWidgets","stateToProps","preferences","allOptions","nonInteractableOptions","_difference","Edit","fm","rightBarPanel","routes","path","universalRouter","UniversalRouter","controller","Controller","ReactDom","getElementById","sampleSong","gettingStarted","addSampleContent","router","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","splice","r","n","getter","__esModule","d","definition","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","nmd","paths","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","Error","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"main.1c1ff44e8eff34a1438d.js","mappings":"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","sources":["webpack://@touffi/chords-charts-studio/webpack/runtime/chunk loaded","webpack://@touffi/chords-charts-studio/./src/core/clock.js","webpack://@touffi/chords-charts-studio/./src/db/files/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/db/options/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_state/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_state/selectors.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_state/selectors.js","webpack://@touffi/chords-charts-studio/./src/db/files/selectors.js","webpack://@touffi/chords-charts-studio/./src/db/options/editorModeOptions.js","webpack://@touffi/chords-charts-studio/./src/db/files/reducers.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_state/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/db/options/selectors.js","webpack://@touffi/chords-charts-studio/./src/db/options/reducers.js","webpack://@touffi/chords-charts-studio/./src/db/reducers.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_state/reducers.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_state/actionsTypes.js","webpack://@touffi/chords-charts-studio/./src/core/stripTags.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_state/reducers.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_state/reducers.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/reducers.js","webpack://@touffi/chords-charts-studio/./src/ui/reducers.js","webpack://@touffi/chords-charts-studio/./src/state/reducers.js","webpack://@touffi/chords-charts-studio/./src/state/seed.js","webpack://@touffi/chords-charts-studio/./src/db/seed.js","webpack://@touffi/chords-charts-studio/./src/db/options/seed.js","webpack://@touffi/chords-charts-studio/./src/state/store.js","webpack://@touffi/chords-charts-studio/./src/state/localStorage.js","webpack://@touffi/chords-charts-studio/./src/core/createAction.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_state/actions.js","webpack://@touffi/chords-charts-studio/./src/songImporter/getMessageHandlers.js","webpack://@touffi/chords-charts-studio/./src/registerHandlers.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/ErrorBoundary.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_state/actions.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/Logo.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/Icon.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/NavEntry.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/Nav.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/Button.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/UserGuide.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/_components/Versions.js","webpack://@touffi/chords-charts-studio/./src/core/getVersions.js","webpack://@touffi/chords-charts-studio/./src/db/files/actions.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_state/selectors.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/Modal.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/Header.js","webpack://@touffi/chords-charts-studio/./src/songImporter/getUploadedFile.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/FilePicker.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/Input.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/PreviewError.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/InputFormatEntry.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/InputFormatSelector.js","webpack://@touffi/chords-charts-studio/./src/core/converters/chordSheetJs2ChordMark.js","webpack://@touffi/chords-charts-studio/./src/core/converters/ultimateGuitar2ChordMark.js","webpack://@touffi/chords-charts-studio/./src/songImporter/input2ChordMark.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_components/SongImporter.js","webpack://@touffi/chords-charts-studio/./src/songImporter/_containers/SongImporter.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/allNavEntries.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_components/App.js","webpack://@touffi/chords-charts-studio/./src/ui/layout/app/_containers/App.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_state/actions.js","webpack://@touffi/chords-charts-studio/./src/core/renderSong.js","webpack://@touffi/chords-charts-studio/./src/fileManager/exportSelectedFileAsText.js","webpack://@touffi/chords-charts-studio/./src/ui/_components/ModalConfirm.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/DeleteConfirmModal.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileActionEntry.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileActions.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileEntry.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_components/FileManager.js","webpack://@touffi/chords-charts-studio/./src/fileManager/_containers/FileManager.js","webpack://@touffi/chords-charts-studio/./src/core/escapeHTML.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/_components/SongRenderer.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/_containers/SongRenderer.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/editorPreview/_components/EditorPreview.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/editorPreview/_containers/EditorPreview.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/schema.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/converters/stateToText.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/converters/toSafeHtml.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/ProsemirrorEditorView.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/converters/textToDom.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/prosemirror/getPlugins.js","webpack://@touffi/chords-charts-studio/./src/editor/songEditor/_components/EditorLayout.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/exportPreview/_components/ExportPreview.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/playRenderer/_components/PlayRenderer.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/playRenderer/_containers/PlayRenderer.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/Page.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/PageHeader.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/mapLinesToColumns.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/getDimensionsFromDom.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/padColumns.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/element.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/getAllLinesHeight.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/helpers/getPagesHeight.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/AllPages.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_components/PrintPreview.js","webpack://@touffi/chords-charts-studio/./src/songRenderers/printPreview/_containers/PrintPreview.js","webpack://@touffi/chords-charts-studio/./src/editor/_components/Editor.js","webpack://@touffi/chords-charts-studio/./src/editor/_containers/Editor.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/_components/OptionsPanel.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/OptionsGroup.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/SelectChoice.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Select.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Slider.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/Toggle.js","webpack://@touffi/chords-charts-studio/./src/ui/sideBar/options/_components/SidebarOptionsPanel.js","webpack://@touffi/chords-charts-studio/./src/db/options/actions.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/_containers/Rendering.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/_containers/OptionsPanelFactory.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/allWidgets.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/_state/selectors.js","webpack://@touffi/chords-charts-studio/./src/optionsPanels/rendering/_components/Rendering.js","webpack://@touffi/chords-charts-studio/./src/controllers/Editor.js","webpack://@touffi/chords-charts-studio/./src/router.js","webpack://@touffi/chords-charts-studio/./src/renderController.js","webpack://@touffi/chords-charts-studio/./src/app.js","webpack://@touffi/chords-charts-studio/./src/addSampleContent.js","webpack://@touffi/chords-charts-studio/webpack/bootstrap","webpack://@touffi/chords-charts-studio/webpack/runtime/compat get default export","webpack://@touffi/chords-charts-studio/webpack/runtime/define property getters","webpack://@touffi/chords-charts-studio/webpack/runtime/global","webpack://@touffi/chords-charts-studio/webpack/runtime/hasOwnProperty shorthand","webpack://@touffi/chords-charts-studio/webpack/runtime/node module decorator","webpack://@touffi/chords-charts-studio/webpack/runtime/publicPath","webpack://@touffi/chords-charts-studio/webpack/runtime/jsonp chunk loading","webpack://@touffi/chords-charts-studio/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","export default function clock() {\n\treturn Date.now();\n}\n","export const DB_FILES_CREATE = 'db/files/Create';\nexport const DB_FILES_DELETE = 'db/files/Delete';\nexport const DB_FILES_IMPORT = 'db/files/Import';\nexport const DB_FILES_UPDATE = 'db/files/Update';\n","export const DB_OPTION_SET_OPTION_VALUE = 'db/options/setOptionValue';\n","export const UI_LAYOUT_APP_SET_EDITOR_MODE = 'ui/layout/app/setEditorMode';\nexport const UI_LAYOUT_APP_TOGGLE_LEFT_BAR = 'ui/layout/app/toggleLeftBar';\nexport const UI_LAYOUT_APP_TOGGLE_RIGHT_BAR = 'ui/layout/app/toggleRightBar';\n","export const isLeftBarCollapsed = (state) =>\n\tstate.ui.layout.app.isLeftBarCollapsed;\n\nexport const isRightBarCollapsed = (state) =>\n\tstate.ui.layout.app.isRightBarCollapsed;\n\nexport const getEditorMode = (state) => state.ui.layout.app.editorMode;\n","export const getSelectedId = (state) => state.fileManager.selected;\n\nexport const getRenamedId = (state) => state.fileManager.renamed;\n\nexport const getDefaultTitle = (state) => state.fileManager.defaultTitle;\n","import _map from 'lodash/map';\nimport _cloneDeep from 'lodash/cloneDeep';\nimport _isEqual from 'lodash/isEqual';\nimport _sortBy from 'lodash/sortBy';\n\nimport { createSelectorCreator, defaultMemoize } from 'reselect';\n\n// create a \"selector creator\" that uses lodash.isEqual instead of ===\nconst createDeepEqualSelector = createSelectorCreator(defaultMemoize, _isEqual);\n\n// return value should not change when file content changes\nexport const getAllTitles = createDeepEqualSelector(\n\t(state) =>\n\t\t_map(state.db.files.allFiles, ({ title, id }) => ({ title, id })),\n\t(allFiles) => _sortBy(allFiles, (o) => o.title.toLowerCase())\n);\n\nexport const getOne = (state, id) => {\n\treturn state.db.files.allFiles[id];\n};\n\nexport const getCategoryOptions = (state, id, category) => {\n\tconst file = state.db.files.allFiles[id];\n\n\tif (!file) return;\n\n\tif ((file.options || {})[category]) {\n\t\t// handle edge cases where we might have an empty object...\n\t\t// of course this _should_ never happen!\n\t\tif (Object.keys(file.options[category]).length === 0) return;\n\n\t\treturn _cloneDeep(file.options[category]);\n\t}\n};\n\nexport const getLatestModeOptions = (state, id) => {\n\tconst file = state.db.files.allFiles[id];\n\n\tif (!file) return;\n\n\tconst fileOptions = file.options || {};\n\n\tconst allOptionsPerMode = [];\n\tif (fileOptions.edit) allOptionsPerMode.push({ ...fileOptions.edit });\n\tif (fileOptions.play) allOptionsPerMode.push({ ...fileOptions.play });\n\tif (fileOptions.print) allOptionsPerMode.push({ ...fileOptions.print });\n\tif (fileOptions.export) allOptionsPerMode.push({ ...fileOptions.export });\n\n\tif (!allOptionsPerMode.length) return;\n\n\tallOptionsPerMode.sort((a, b) => a.updatedAt - b.updatedAt);\n\n\treturn allOptionsPerMode.reduce(\n\t\t(acc, modeOptions) => Object.assign(acc, modeOptions),\n\t\t{}\n\t);\n};\n","const editorModeOptions = {\n\tedit: [],\n\tplay: [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'preferredAccidentals',\n\n\t\t'chartType',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\n\t\t'columnsCount',\n\n\t\t'fontSize',\n\t\t'chordsColor',\n\t\t'highlightChords',\n\t],\n\tprint: [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'preferredAccidentals',\n\n\t\t'chartType',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\n\t\t'columnsCount',\n\t\t'columnBreakOnParagraph',\n\t\t'documentMargins',\n\n\t\t'fontSize',\n\t\t'highlightChords',\n\t],\n\texport: [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'preferredAccidentals',\n\n\t\t'chartFormat',\n\t\t'chartType',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\t],\n};\n\nexport default editorModeOptions;\n","import _pick from 'lodash/pick';\nimport clock from '../../core/clock';\n\nimport * as actionTypes from './actionsTypes';\n\nimport { DB_OPTION_SET_OPTION_VALUE } from '../options/actionsTypes';\nimport { UI_LAYOUT_APP_SET_EDITOR_MODE } from '../../ui/layout/app/_state/actionsTypes';\nimport { getEditorMode } from '../../ui/layout/app/_state/selectors';\nimport { getSelectedId } from '../../fileManager/_state/selectors';\nimport { getLatestModeOptions, getCategoryOptions } from './selectors';\nimport editorModeOptions from '../options/editorModeOptions';\n\nconst initialState = {\n\tallFiles: {},\n};\n\nfunction createFile(state, action) {\n\tconst { id, title, content } = action.payload;\n\n\tconst allFiles = { ...state.allFiles };\n\tallFiles[id] = {\n\t\tid,\n\t\ttitle,\n\t\tcontent,\n\t};\n\n\treturn {\n\t\t...state,\n\t\tallFiles,\n\t};\n}\n\nfunction updateFile(state, action) {\n\tconst { id, title, content } = action.payload;\n\n\tif ((!title && typeof content === 'undefined') || !state.allFiles[id]) {\n\t\treturn state;\n\t}\n\n\tconst allFiles = { ...state.allFiles };\n\n\tallFiles[id] = { ...allFiles[id] };\n\n\tif (title) {\n\t\tallFiles[id].title = title;\n\t}\n\tif (typeof content !== 'undefined') {\n\t\tallFiles[id].content = content;\n\t}\n\treturn {\n\t\t...state,\n\t\tallFiles,\n\t};\n}\n\nfunction deleteFile(state, action) {\n\tconst { id } = action.payload;\n\n\tif (!id || !state.allFiles[id]) {\n\t\treturn state;\n\t}\n\n\tconst allFiles = { ...state.allFiles };\n\tdelete allFiles[id];\n\n\treturn {\n\t\t...state,\n\t\tallFiles,\n\t};\n}\n\n/**\n * Whenever the user set an option, we save it in the song entity, either:\n * - for the current editing mode if it is a formatting option\n * - in the preferences otherwise\n */\nfunction updateFileOption(state, action, fullState) {\n\tconst { context, key, value } = action.payload;\n\tconst id = getSelectedId(fullState);\n\tconst allFiles = { ...state.allFiles };\n\n\tif (\n\t\t['songFormatting', 'songPreferences'].includes(context) &&\n\t\tallFiles[id]\n\t) {\n\t\tconst editorMode = getEditorMode(fullState);\n\t\tconst optionCategory =\n\t\t\tcontext === 'songPreferences' ? 'preferences' : editorMode;\n\n\t\tallFiles[id] = addOption(allFiles[id], optionCategory, key, value);\n\t\treturn {\n\t\t\t...state,\n\t\t\tallFiles,\n\t\t};\n\t}\n\treturn state;\n}\n\nfunction addOption(fileState, category, key, value) {\n\treturn {\n\t\t...fileState,\n\t\toptions: {\n\t\t\t...fileState.options,\n\t\t\t[category]: {\n\t\t\t\t...(fileState.options || {})[category],\n\t\t\t\tupdatedAt: clock(),\n\t\t\t\t[key]: value,\n\t\t\t},\n\t\t},\n\t};\n}\n\n/**\n * When a user switch mode and the target mode does not have any saved settings yet,\n * we apply the latest saved settings (all modes merged) for a better user flow\n */\nfunction setEditorMode(state, action, fullState) {\n\tconst fileId = getSelectedId(fullState);\n\tconst nextMode = action.payload.mode;\n\n\tconst hasOptionsForNextMode = !!getCategoryOptions(\n\t\tfullState,\n\t\tfileId,\n\t\tnextMode\n\t);\n\n\tif (!hasOptionsForNextMode) {\n\t\tconst previousModeOptions = _pick(\n\t\t\tgetLatestModeOptions(fullState, fileId) || {},\n\t\t\teditorModeOptions[nextMode]\n\t\t);\n\n\t\tif (Object.keys(previousModeOptions).length) {\n\t\t\tpreviousModeOptions.updatedAt = clock();\n\t\t\tconst allFiles = { ...state.allFiles };\n\n\t\t\tallFiles[fileId] = {\n\t\t\t\t...allFiles[fileId],\n\t\t\t\toptions: {\n\t\t\t\t\t...allFiles[fileId].options,\n\t\t\t\t\t[nextMode]: previousModeOptions,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tallFiles,\n\t\t\t};\n\t\t}\n\t}\n\treturn state;\n}\n\nexport default (state = initialState, action = {}, fullState = {}) => {\n\tswitch (action.type) {\n\t\tcase actionTypes.DB_FILES_CREATE:\n\t\tcase actionTypes.DB_FILES_IMPORT:\n\t\t\treturn createFile(state, action);\n\t\tcase actionTypes.DB_FILES_UPDATE:\n\t\t\treturn updateFile(state, action);\n\t\tcase actionTypes.DB_FILES_DELETE:\n\t\t\treturn deleteFile(state, action);\n\t\tcase DB_OPTION_SET_OPTION_VALUE:\n\t\t\treturn updateFileOption(state, action, fullState);\n\t\tcase UI_LAYOUT_APP_SET_EDITOR_MODE:\n\t\t\treturn setEditorMode(state, action, fullState);\n\t}\n\treturn state;\n};\n","export const FILE_MANAGER_SELECT_FILE = 'fileManager/select';\nexport const FILE_MANAGER_ENABLE_RENAME = 'fileManager/enableRename';\n","import _cloneDeep from 'lodash/cloneDeep';\n\nexport const getOptionValue = (state, context, key) => {\n\tif (\n\t\t!state.db.options[context] ||\n\t\t!state.db.options[context].values ||\n\t\ttypeof state.db.options[context].values[key] === 'undefined'\n\t) {\n\t\treturn;\n\t}\n\treturn state.db.options[context].values[key];\n};\n\nexport const getAllOptionValues = (state, context) => {\n\tif (!state.db.options[context] || !state.db.options[context].values) {\n\t\treturn;\n\t}\n\treturn _cloneDeep(state.db.options[context].values);\n};\n\nexport const getOptionsDefaults = (state, context) => {\n\tif (!state.db.options[context] || !state.db.options[context].defaults) {\n\t\treturn;\n\t}\n\treturn _cloneDeep(state.db.options[context].defaults);\n};\n","import _pick from 'lodash/pick';\n\nimport * as actionTypes from './actionsTypes';\nimport { getCategoryOptions, getLatestModeOptions } from '../files/selectors';\n\nimport { UI_LAYOUT_APP_SET_EDITOR_MODE } from '../../ui/layout/app/_state/actionsTypes';\nimport { FILE_MANAGER_SELECT_FILE } from '../../fileManager/_state/actionsTypes';\nimport { getSelectedId } from '../../fileManager/_state/selectors';\nimport { getEditorMode } from '../../ui/layout/app/_state/selectors';\nimport { getOptionsDefaults } from './selectors';\nimport allEditorModeOptions from './editorModeOptions';\n\nconst initialState = {};\n\nfunction setOptionValue(state, action) {\n\tconst { context, key, value } = action.payload;\n\n\tif (\n\t\t!state[context] ||\n\t\t!state[context].values ||\n\t\ttypeof state[context].values[key] === 'undefined'\n\t) {\n\t\treturn state;\n\t}\n\n\tconst newState = {\n\t\t...state,\n\t\t[context]: {\n\t\t\t...state[context],\n\t\t\tvalues: { ...state[context].values },\n\t\t},\n\t};\n\tnewState[context].values[key] = value;\n\n\treturn newState;\n}\n\nfunction setEditorMode(state, action, fullState) {\n\tconst fileId = getSelectedId(fullState);\n\tconst nextMode = action.payload.mode;\n\n\tconst newOptions = getModeOptions(fullState, fileId, nextMode);\n\n\treturn {\n\t\t...state,\n\t\tsongFormatting: {\n\t\t\t...state.songFormatting,\n\t\t\tvalues: {\n\t\t\t\t...newOptions,\n\t\t\t},\n\t\t},\n\t};\n}\n\n// Get defined options for a mode, either because they exist for the given mode,\n// or building them from options stored in the other modes\nfunction getModeOptions(fullState, fileId, mode) {\n\tconst defaultOptions = getOptionsDefaults(fullState, 'songFormatting');\n\tlet editorModeOptions = getCategoryOptions(fullState, fileId, mode);\n\n\tif (!editorModeOptions) {\n\t\teditorModeOptions = getLatestModeOptions(fullState, fileId) || {};\n\t}\n\tdelete editorModeOptions.updatedAt;\n\n\t// take only relevant options for the mode\n\teditorModeOptions = _pick(editorModeOptions, allEditorModeOptions[mode]);\n\n\treturn Object.assign(defaultOptions, editorModeOptions);\n}\n\nfunction selectFile(state, action, fullState) {\n\tconst { id } = action.payload;\n\tconst editorMode = getEditorMode(fullState);\n\n\tconst newOptions = getModeOptions(fullState, id, editorMode);\n\n\tconst songPreferences =\n\t\tgetCategoryOptions(fullState, id, 'preferences') || {};\n\tdelete songPreferences.updatedAt;\n\n\tconst defaultPreferences = getOptionsDefaults(fullState, 'songPreferences');\n\n\tconst newPreferences = Object.assign(defaultPreferences, songPreferences);\n\n\treturn {\n\t\t...state,\n\t\tsongPreferences: {\n\t\t\t...state.songPreferences,\n\t\t\tvalues: {\n\t\t\t\t...newPreferences,\n\t\t\t},\n\t\t},\n\t\tsongFormatting: {\n\t\t\t...state.songFormatting,\n\t\t\tvalues: {\n\t\t\t\t...newOptions,\n\t\t\t},\n\t\t},\n\t};\n}\n\nexport default (state = initialState, action = {}, fullState = {}) => {\n\tswitch (action.type) {\n\t\tcase actionTypes.DB_OPTION_SET_OPTION_VALUE: {\n\t\t\treturn setOptionValue(state, action);\n\t\t}\n\t\tcase UI_LAYOUT_APP_SET_EDITOR_MODE: {\n\t\t\treturn setEditorMode(state, action, fullState);\n\t\t}\n\t\tcase FILE_MANAGER_SELECT_FILE: {\n\t\t\treturn selectFile(state, action, fullState);\n\t\t}\n\t}\n\treturn state;\n};\n","import combineSectionReducers from 'combine-section-reducers';\nimport files from './files/reducers';\nimport options from './options/reducers';\n\nexport default combineSectionReducers({\n\tfiles,\n\toptions,\n});\n","import {\n\tFILE_MANAGER_SELECT_FILE,\n\tFILE_MANAGER_ENABLE_RENAME,\n} from './actionsTypes';\n\nimport {\n\tDB_FILES_CREATE,\n\tDB_FILES_DELETE,\n\tDB_FILES_IMPORT,\n\tDB_FILES_UPDATE,\n} from '../../db/files/actionsTypes';\n\nconst initialState = {\n\tselected: '',\n\trenamed: '',\n\tdefaultTitle: '[untitled]',\n};\n\nexport default function reducers(state = initialState, action = {}) {\n\tswitch (action.type) {\n\t\tcase DB_FILES_CREATE: {\n\t\t\tconst { id } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselected: id,\n\t\t\t\trenamed: id,\n\t\t\t};\n\t\t}\n\n\t\tcase DB_FILES_IMPORT: {\n\t\t\tconst { id } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselected: id,\n\t\t\t\trenamed: '',\n\t\t\t};\n\t\t}\n\n\t\tcase DB_FILES_UPDATE: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trenamed: '',\n\t\t\t};\n\t\t}\n\n\t\tcase DB_FILES_DELETE: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselected: '',\n\t\t\t\trenamed: '',\n\t\t\t};\n\t\t}\n\n\t\tcase FILE_MANAGER_SELECT_FILE: {\n\t\t\tconst { id } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tselected: id,\n\t\t\t\trenamed: id === state.renamed ? id : '',\n\t\t\t};\n\t\t}\n\n\t\tcase FILE_MANAGER_ENABLE_RENAME: {\n\t\t\tconst { id } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trenamed: id,\n\t\t\t};\n\t\t}\n\t}\n\treturn state;\n}\n","export const SONG_IMPORTER_IMPORT_CANCEL = 'songImporter/import/cancel';\nexport const SONG_IMPORTER_IMPORT_START = 'songImporter/import/start';\nexport const SONG_IMPORTER_SET_CONTENT = 'songImporter/setContent';\nexport const SONG_IMPORTER_SET_INPUT_FORMAT = 'songImporter/setInputFormat';\n","import domPurify from 'dompurify';\n\nexport default function stripTags(html) {\n\treturn domPurify.sanitize(html, {\n\t\tALLOWED_TAGS: ['#text'],\n\t\tKEEP_CONTENT: true,\n\t});\n}\n","import * as actions from './actionsTypes';\nimport { DB_FILES_IMPORT } from '../../db/files/actionsTypes';\n\nimport stripTags from '../../core/stripTags';\n\nconst initialState = {\n\tcontent: '',\n\tisFromWeb: false,\n\tisImporting: false,\n\tinputFormat: 'basic',\n\ttitle: '',\n};\n\nexport default function reducers(state = initialState, action = {}) {\n\tswitch (action.type) {\n\t\tcase actions.SONG_IMPORTER_SET_CONTENT: {\n\t\t\tconst { content, title = '' } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcontent: stripTags(content),\n\t\t\t\ttitle: title ? stripTags(title) : state.title,\n\t\t\t};\n\t\t}\n\n\t\tcase actions.SONG_IMPORTER_SET_INPUT_FORMAT: {\n\t\t\tconst { inputFormat } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tinputFormat,\n\t\t\t};\n\t\t}\n\n\t\tcase DB_FILES_IMPORT:\n\t\tcase actions.SONG_IMPORTER_IMPORT_CANCEL: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcontent: '',\n\t\t\t\ttitle: '',\n\t\t\t\tisImporting: false,\n\t\t\t};\n\t\t}\n\n\t\tcase actions.SONG_IMPORTER_IMPORT_START: {\n\t\t\tconst { content, inputFormat, title, isFromWeb } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisImporting: true,\n\t\t\t\tcontent: content ? stripTags(content) : '',\n\t\t\t\ttitle: title ? stripTags(title) : '',\n\t\t\t\tinputFormat: inputFormat || state.inputFormat,\n\t\t\t\tisFromWeb,\n\t\t\t};\n\t\t}\n\t}\n\treturn state;\n}\n","import {\n\tUI_LAYOUT_APP_TOGGLE_RIGHT_BAR,\n\tUI_LAYOUT_APP_TOGGLE_LEFT_BAR,\n\tUI_LAYOUT_APP_SET_EDITOR_MODE,\n} from './actionsTypes';\n\nimport {\n\tDB_FILES_CREATE,\n\tDB_FILES_IMPORT,\n\tDB_FILES_DELETE,\n} from '../../../../db/files/actionsTypes';\n\nconst initialState = {\n\tisLeftBarCollapsed: false,\n\tisRightBarCollapsed: false,\n\teditorMode: 'edit',\n\tactiveModal: 'none',\n};\n\nexport default function reducers(state = initialState, action = {}) {\n\tswitch (action.type) {\n\t\tcase UI_LAYOUT_APP_TOGGLE_LEFT_BAR: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisLeftBarCollapsed: !state.isLeftBarCollapsed,\n\t\t\t};\n\t\t}\n\t\tcase UI_LAYOUT_APP_TOGGLE_RIGHT_BAR: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisRightBarCollapsed: !state.isRightBarCollapsed,\n\t\t\t};\n\t\t}\n\t\tcase UI_LAYOUT_APP_SET_EDITOR_MODE: {\n\t\t\tconst { mode } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditorMode: mode,\n\t\t\t};\n\t\t}\n\t\tcase DB_FILES_DELETE:\n\t\tcase DB_FILES_CREATE:\n\t\tcase DB_FILES_IMPORT: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditorMode: 'edit',\n\t\t\t};\n\t\t}\n\t}\n\treturn state;\n}\n","import combineSectionReducers from 'combine-section-reducers';\nimport app from './app/_state/reducers';\n\nexport default combineSectionReducers({\n\tapp,\n});\n","import combineSectionReducers from 'combine-section-reducers';\nimport layout from './layout/reducers';\n\nexport default combineSectionReducers({\n\tlayout,\n});\n","import combineSectionReducers from 'combine-section-reducers';\n\nimport db from '../db/reducers';\nimport fileManager from '../fileManager/_state/reducers';\nimport songImporter from '../songImporter/_state/reducers';\nimport ui from '../ui/reducers';\n\nexport default combineSectionReducers({\n\tdb,\n\tfileManager,\n\tsongImporter,\n\tui,\n});\n","import db from '../db/seed';\n\nexport default {\n\tdb,\n};\n","import options from './options/seed';\n\nexport default {\n\toptions,\n};\n","export default {\n\t// songPreferences are identical for all song rendering modes\n\t// therefore, they are only saved once for each song\n\tsongPreferences: {\n\t\tvalues: {\n\t\t\ttransposeValue: 0,\n\t\t\tharmonizeAccidentals: true,\n\t\t\tpreferredAccidentals: 'auto',\n\t\t},\n\t\tdefaults: {\n\t\t\ttransposeValue: 0,\n\t\t\tharmonizeAccidentals: true,\n\t\t\tpreferredAccidentals: 'auto',\n\t\t},\n\t\t//userDefaults: {},\n\t},\n\t// songFormatting options are specific to a given mode (print, export...)\n\t// they are saved separately for each song\n\tsongFormatting: {\n\t\tvalues: {\n\t\t\tchartFormat: 'chordmark',\n\t\t\tchartType: 'all',\n\t\t\talignChordsWithLyrics: true,\n\t\t\talignBars: true,\n\t\t\tautoRepeatChords: true,\n\t\t\texpandSectionCopy: true,\n\n\t\t\tcolumnsCount: 1,\n\t\t\tcolumnBreakOnParagraph: true,\n\t\t\tdocumentMargins: 3,\n\n\t\t\tfontSize: 0,\n\t\t\tchordsColor: 'yellow',\n\t\t\thighlightChords: false,\n\t\t},\n\t\tdefaults: {\n\t\t\tchartFormat: 'chordmark',\n\t\t\tchartType: 'all',\n\t\t\talignChordsWithLyrics: true,\n\t\t\talignBars: true,\n\t\t\tautoRepeatChords: true,\n\t\t\texpandSectionCopy: true,\n\n\t\t\tcolumnsCount: 1,\n\t\t\tcolumnBreakOnParagraph: true,\n\t\t\tdocumentMargins: 3,\n\n\t\t\tfontSize: 0,\n\t\t\tchordsColor: 'yellow',\n\t\t\thighlightChords: false,\n\t\t},\n\t\t//userDefaults: {},\n\t},\n};\n","import _defaultsDeep from 'lodash/defaultsDeep';\n\nimport { createStore as createReduxStore, applyMiddleware } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport thunkMiddleware from 'redux-thunk';\n\nimport { loadState, saveState } from './localStorage';\nimport allReducers from './reducers';\nimport seed from './seed';\n\nlet store;\n\nexport function createStore() {\n\tconst storeEnhancers = composeWithDevTools(\n\t\tapplyMiddleware(thunkMiddleware)\n\t);\n\n\tconst persistedState = loadState();\n\n\t// store migrations\n\tif (persistedState && persistedState.db && persistedState.db.options) {\n\t\tdelete persistedState.db.options.rendering; // remove old options before the options refactor in v0.9.0\n\t}\n\n\t/* Reset all options * /\n\tObject.keys(persistedState.db.files.allFiles).forEach((fileId) => {\n\t\tdelete persistedState.db.files.allFiles[fileId].options;\n\t});\n\tdelete persistedState.db.options;\n\t/**/\n\t/* misc * /\n\tdelete persistedState.songImporter;\n\tdelete persistedState.fileManager.selected;\n\t/**/\n\n\tconst initialState = _defaultsDeep(persistedState, seed);\n\n\tstore = createReduxStore(allReducers, initialState, storeEnhancers);\n\n\tstore.subscribe(() => {\n\t\tsaveState(store.getState());\n\t});\n}\n\nexport function getStore() {\n\treturn store;\n}\n","// @see https://egghead.io/lessons/javascript-redux-persisting-the-state-to-the-local-storage\n\nexport const loadState = () => {\n\ttry {\n\t\tconst serializedState = localStorage.getItem('state');\n\t\tif (!serializedState) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn JSON.parse(serializedState);\n\t} catch (err) {\n\t\treturn undefined;\n\t}\n};\n\nexport const saveState = (state) => {\n\ttry {\n\t\tconst serializedState = JSON.stringify(state);\n\t\tlocalStorage.setItem('state', serializedState);\n\t} catch (err) {\n\t\t// ignore write errors\n\t}\n};\n","export default function createAction(type, payload) {\n\tif (!type) {\n\t\tthrow new TypeError('Cannot create an action without an action type');\n\t}\n\treturn {\n\t\ttype,\n\t\tpayload,\n\t};\n}\n","import * as actionsTypes from './actionsTypes';\n\nimport createAction from '../../core/createAction';\n\nexport const setContent = (content, title) =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_SET_CONTENT, { content, title });\n\nexport const setInputFormat = (inputFormat) =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_SET_INPUT_FORMAT, { inputFormat });\n\nexport const startImport = () =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_IMPORT_START, {\n\t\tisFromWeb: false,\n\t});\n\nexport const startImportFromWeb = (inputFormat, content, title) =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_IMPORT_START, {\n\t\tcontent,\n\t\tinputFormat,\n\t\ttitle,\n\t\tisFromWeb: true,\n\t});\n\nexport const cancelImport = () =>\n\tcreateAction(actionsTypes.SONG_IMPORTER_IMPORT_CANCEL);\n","import { getStore } from '../state/store';\nimport { startImportFromWeb } from './_state/actions';\n\n/**\n * @typedef {Object} WebsiteImportMessage\n * @type {Object}\n * @property {('ultimateGuitar')} source - website from which the tab comes from\n * @property {String} chordChart - content of the chord chart\n * @property {String} title - song title\n * @property {String} artist - song artist\n */\n\nconst songImporterHandlers = {\n\t/**\n\t *\n\t * @param {WebsiteImportMessage} message\n\t */\n\t'@CCS/IMPORT_TAB': (message) => {\n\t\tconst store = getStore();\n\n\t\tconst title = buildTitle(message.title, message.artist);\n\t\tstore.dispatch(\n\t\t\tstartImportFromWeb(message.source, message.chordChart, title)\n\t\t);\n\t},\n};\n\nconst buildTitle = (songTitle, artist) => {\n\tlet title = songTitle;\n\tif (artist) {\n\t\ttitle += ' - ' + artist;\n\t}\n\treturn title;\n};\n\nexport default function getSongImporterHandlers() {\n\treturn songImporterHandlers;\n}\n","import getSongImporterHandlers from './songImporter/getMessageHandlers';\n\nexport default function registerHandlers() {\n\twindow.addEventListener('message', _handleMessage);\n}\n\n// unit test backdoor, not for public usage!\nexport const _handleMessage = (e) => {\n\tconst allHandlers = {\n\t\t...getSongImporterHandlers(),\n\t};\n\n\tif (e.source !== window || e.origin !== window.location.origin) {\n\t\treturn false;\n\t}\n\tconst message = e.data;\n\n\tif (typeof allHandlers[message.type] === 'function') {\n\t\tallHandlers[message.type](message.payload);\n\t}\n\treturn true;\n};\n","import './ErrorBoundary.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n// source: https://codepen.io/gaearon/pen/wqvxGa?editors=0010\nclass ErrorBoundary extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { error: null, errorInfo: null };\n\t}\n\n\tcomponentDidCatch(error, errorInfo) {\n\t\tthis.setState({\n\t\t\terror: error,\n\t\t\terrorInfo: errorInfo,\n\t\t});\n\t}\n\n\trender() {\n\t\tif (this.state.errorInfo) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t

    Something went wrong

    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{this.state.error && this.state.error.toString()}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{this.state.errorInfo.componentStack}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t);\n\t\t}\n\t\treturn this.props.children;\n\t}\n}\n\nErrorBoundary.propTypes = {\n\tchildren: PropTypes.any,\n};\n\nexport default ErrorBoundary;\n","import {\n\tUI_LAYOUT_APP_SET_EDITOR_MODE,\n\tUI_LAYOUT_APP_TOGGLE_LEFT_BAR,\n\tUI_LAYOUT_APP_TOGGLE_RIGHT_BAR,\n} from './actionsTypes';\n\nimport createAction from '../../../../core/createAction';\n\nexport const setEditorMode = (mode) =>\n\tcreateAction(UI_LAYOUT_APP_SET_EDITOR_MODE, { mode });\n\nexport const toggleLeftBar = () => createAction(UI_LAYOUT_APP_TOGGLE_LEFT_BAR);\n\nexport const toggleRightBar = () =>\n\tcreateAction(UI_LAYOUT_APP_TOGGLE_RIGHT_BAR);\n","import './Logo.scss';\n\nimport React from 'react';\n\nimport logoImg from './logo.png';\n\nfunction Logo() {\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{'Chord\n\t\t\t\t
    \n\t\t\t\t
    Chord Charts Studio
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n\nexport default React.memo(Logo);\n","import './Icon.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Icon(props) {\n\tconst { iconName } = props;\n\n\tconst classList = ['icon', 'material-icons'];\n\n\treturn {iconName};\n}\n\nIcon.propTypes = {\n\ticonName: PropTypes.string.isRequired,\n};\n\nexport default React.memo(Icon);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon.js';\n\nfunction NavEntry(props) {\n\tconst { label, icon, editorMode, setEditorMode, isActive, isDisabled } =\n\t\tprops;\n\n\tconst classNames = ['mainNavEntry'];\n\n\tif (isActive) {\n\t\tclassNames.push('mainNavEntry-isActive');\n\t}\n\tif (isDisabled) {\n\t\tclassNames.push('mainNavEntry-isDisabled');\n\t}\n\n\tfunction handleClick() {\n\t\tif (!isDisabled) setEditorMode(editorMode);\n\t}\n\n\treturn (\n\t\t
  • \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t{label}\n\t\t
  • \n\t);\n}\n\nNavEntry.propTypes = {\n\tlabel: PropTypes.string.isRequired,\n\ticon: PropTypes.string.isRequired,\n\teditorMode: PropTypes.string.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\n\tisActive: PropTypes.bool.isRequired,\n\tisDisabled: PropTypes.bool.isRequired,\n};\n\nexport default React.memo(NavEntry);\n","import './Nav.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport NavEntry from './NavEntry.js';\n\nfunction Nav(props) {\n\tconst { currentMode, allEntries, setEditorMode, selectedId } = props;\n\n\treturn (\n\t\t\n\t);\n}\n\nNav.propTypes = {\n\tcurrentMode: PropTypes.string.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\n\tselectedId: PropTypes.string,\n\tallEntries: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tid: PropTypes.string.isRequired,\n\t\t\tlabel: PropTypes.string.isRequired,\n\t\t\ticon: PropTypes.string.isRequired,\n\t\t\teditorMode: PropTypes.string.isRequired,\n\t\t})\n\t),\n};\n\nexport default React.memo(Nav);\n","import './Button.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Button = ({ children, isDisabled, buttonName, onClick, type }) => {\n\tconst allClassNames = ['Button'];\n\n\tif (type === 'primary') allClassNames.push('Button-primary');\n\tif (type === 'secondary') allClassNames.push('Button-secondary');\n\tif (isDisabled) allClassNames.push('Button-isDisabled');\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n};\n\nButton.propTypes = {\n\tchildren: PropTypes.string.isRequired,\n\tisDisabled: PropTypes.bool,\n\tbuttonName: PropTypes.string.isRequired,\n\ttype: PropTypes.string.isRequired,\n\tonClick: PropTypes.func.isRequired,\n};\n\nButton.defaultProps = {\n\tisDisabled: false,\n};\n\nexport default Button;\n","import './UserGuide.scss';\n\nimport React from 'react';\n\nimport Button from '../../_components/Button';\nimport Icon from '../../_components/Icon.js';\n\nconst userGuideUrl =\n\t'https://chordmark.netlify.app/docs/chord-charts-studio/overview';\n\nconst UserGuide = () => {\n\tconst openUserGuide = () => {\n\t\twindow.open(userGuideUrl, '_blank').focus();\n\t};\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tUser Guide\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n};\n\nUserGuide.propTypes = {};\n\nUserGuide.defaultProps = {};\n\nexport default React.memo(UserGuide);\n","import getVersions from '../../../core/getVersions';\nimport './Versions.scss';\n\nimport React from 'react';\n\nfunction Versions() {\n\tconst versions = getVersions();\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\tChords Charts Studio {versions['chord-charts-studio']}\n\t\t\t\t
    \n\t\t\t\tChordMark {versions['chord-mark']}
    \n\t\t\t\tChordSymbol {versions['chord-symbol']}\n\t\t\t
    \n\t\t
    \n\t);\n}\n\nexport default React.memo(Versions);\n","export default () => ({'chord-charts-studio':'v0.10.0','chord-symbol':'v2.1.0','chord-mark':'v0.8.0'});","import { v4 as uuidv4 } from 'uuid';\n\nimport createAction from '../../core/createAction';\nimport * as actionTypes from './actionsTypes';\n\nexport const createFile = (title, content = '') => {\n\tif (!title) {\n\t\tthrow new TypeError('Cannot create a file without title');\n\t}\n\tconst payload = {\n\t\tid: uuidv4(),\n\t\ttitle,\n\t\tcontent,\n\t};\n\treturn createAction(actionTypes.DB_FILES_CREATE, payload);\n};\n\nexport const importFile = (title, content = '') => {\n\tif (!title) {\n\t\tthrow new TypeError('Cannot import a file without title');\n\t}\n\tconst payload = {\n\t\tid: uuidv4(),\n\t\ttitle,\n\t\tcontent,\n\t};\n\treturn createAction(actionTypes.DB_FILES_IMPORT, payload);\n};\n\nexport const updateFile = (id, { title, content } = {}) => {\n\tif (!id) {\n\t\tthrow new TypeError('Cannot update a file without an id');\n\t}\n\tconst payload = {\n\t\tid,\n\t\ttitle,\n\t\tcontent,\n\t};\n\treturn createAction(actionTypes.DB_FILES_UPDATE, payload);\n};\n\nexport const deleteFile = (id) => {\n\treturn createAction(actionTypes.DB_FILES_DELETE, { id });\n};\n","export const getContent = (state) => state.songImporter.content;\n\nexport const getInputFormat = (state) => state.songImporter.inputFormat;\n\nexport const getTitle = (state) => state.songImporter.title;\n\nexport const isImporting = (state) => state.songImporter.isImporting;\n\nexport const isFromWeb = (state) => state.songImporter.isFromWeb;\n","import './Modal.scss';\n\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Modal(props) {\n\tconst { children, closeModal } = props;\n\n\tuseEffect(() => {\n\t\tconst handleKeyboard = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tcloseModal();\n\t\t\t}\n\t\t};\n\t\twindow.addEventListener('keyup', handleKeyboard);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('keyup', handleKeyboard);\n\t\t};\n\t});\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    {children}
    \n\t\t
    \n\t);\n}\n\nModal.propTypes = {\n\tchildren: PropTypes.element.isRequired,\n\tcloseModal: PropTypes.func.isRequired,\n};\n\nexport default Modal;\n","import React from 'react';\nimport Button from '../../ui/_components/Button';\nimport PropTypes from 'prop-types';\n\nconst Header = ({\n\tcancelImport,\n\tchordMarkContent,\n\timportFile,\n\ttitle,\n\tcontent,\n\terror,\n}) => {\n\tconst headerTitle = title ? 'Import \"' + title + '\"' : 'Import song';\n\n\tconst doImport = () => {\n\t\timportFile(title || '[untitled]', chordMarkContent);\n\t};\n\n\treturn (\n\t\t
    \n\t\t\t
    {headerTitle}
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tCANCEL\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tIMPORT\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n};\n\nHeader.propTypes = {\n\tcancelImport: PropTypes.func.isRequired,\n\tchordMarkContent: PropTypes.string,\n\tcontent: PropTypes.string,\n\terror: PropTypes.string,\n\timportFile: PropTypes.func.isRequired,\n\ttitle: PropTypes.string,\n};\n\nexport default Header;\n","import filesize from 'filesize';\n\nconst maxFileSizeBytes = 50 * 1024;\n\nconst getUploadedFile = (fileList) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (fileList.length) {\n\t\t\tconst file = fileList[0];\n\n\t\t\tif (isOversized(file)) {\n\t\t\t\treject(getFileTooBigMsg(file.size));\n\t\t\t} else if (!isTextFile(file)) {\n\t\t\t\treject(getWrongFileTypeMsg(file));\n\t\t\t} else {\n\t\t\t\tfile.text()\n\t\t\t\t\t.then((fileContent) => {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tcontent: fileContent,\n\t\t\t\t\t\t\ttitle: getSongTitle(file),\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\treject(getNoFileSelectedMsg());\n\t\t}\n\t});\n};\n\nconst getSongTitle = (file) => file.name.substr(0, file.name.lastIndexOf('.'));\n\nconst isOversized = (file) => file.size > maxFileSizeBytes;\n\n// files with extension such as .cho or .chopro are detected with an empty mimetype\n// so we consider them as text\nconst isTextFile = (file) =>\n\tfile.type.indexOf('text') === 0 || file.type.length === 0;\n\nconst getFileTooBigMsg = (actualSize) =>\n\t'The selected file is too big: ' +\n\tfilesize(actualSize, { round: 0 }) +\n\t' (maximum allowed file size is ' +\n\tfilesize(maxFileSizeBytes, { round: 0 }) +\n\t').';\n\nconst getWrongFileTypeMsg = (file) =>\n\t'Cannot import file of type ' + file.type + '.';\n\nconst getNoFileSelectedMsg = () => 'No file selected.';\n\nexport default getUploadedFile;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport getUploadedFile from '../getUploadedFile';\n\nconst allowedFiles = 'text/*,.cho,.crd,.chopro,.chord,.pro,.txt,.md';\n\nconst FilePicker = ({ setContent }) => {\n\tconst handleChange = (ev) => {\n\t\tgetUploadedFile(ev.target.files)\n\t\t\t.then((file) => {\n\t\t\t\tsetContent(file.content, file.title);\n\t\t\t})\n\t\t\t.catch((e) => {\n\t\t\t\tsetContent(e);\n\t\t\t});\n\t};\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\tSelect File\n\t\t\t\n\t\t\t\n\t\t
    \n\t);\n};\n\nFilePicker.propTypes = {\n\tsetContent: PropTypes.func.isRequired,\n};\n\nexport default FilePicker;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../ui/_components/Icon';\n\nfunction Input(props) {\n\tconst { content, setContent, isDisabled } = props;\n\n\tconst onChange = (e) => {\n\t\tsetContent(e.target.value);\n\t};\n\n\tconst allClasses = ['sim-Input_Textarea'];\n\n\tif (isDisabled) {\n\t\tallClasses.push('sim-Input_Textarea-Disabled');\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t
    \n\t\t\t\t\n\t\t\t\tCopy/paste below\n\t\t\t\t\n\t\t\t
    \n\t\t\t\n\t\t\n\t);\n}\n\nInput.propTypes = {\n\tcontent: PropTypes.string.isRequired,\n\tisDisabled: PropTypes.bool.isRequired,\n\tsetContent: PropTypes.func.isRequired,\n};\n\nInput.defaultProps = {};\n\nexport default Input;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction PreviewError(props) {\n\tconst { inputFormat, error } = props;\n\n\treturn (\n\t\t
    \n\t\t\t

    \n\t\t\t\tThere was an error when trying to parse the song in the\n\t\t\t\tspecified input format ({inputFormat}).\n\t\t\t\t
    \n\t\t\t\tPlease correct the input or try another format.\n\t\t\t\t
    \n\t\t\t\tThe error was:\n\t\t\t

    \n\t\t\t

    "{error}"

    \n\t\t\t

    \n\t\t\t\tHint: most of the time, this is related to an unclosed\n\t\t\t\t"[" or "{" or an unsupported ChordPro\n\t\t\t\tdirective\n\t\t\t

    \n\t\t
    \n\t);\n}\n\nPreviewError.propTypes = {\n\terror: PropTypes.string,\n\tinputFormat: PropTypes.string.isRequired,\n};\n\nPreviewError.defaultProps = {};\n\nexport default PreviewError;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction InputFormatEntry(props) {\n\tconst { setInputFormat, inputFormat, id, label, isDisabled } = props;\n\n\tconst onChange = (e) => {\n\t\tif (!isDisabled) {\n\t\t\tsetInputFormat(e.target.value);\n\t\t}\n\t};\n\n\tconst allInputClasses = ['sim-InputFormat_Entry'];\n\tconst allLabelClasses = ['sim-InputFormat_Label'];\n\n\tif (isDisabled) {\n\t\tallInputClasses.push('sim-InputFormat_Entry-Disabled');\n\t\tallLabelClasses.push('sim-InputFormat_Label-Disabled');\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nInputFormatEntry.propTypes = {\n\tsetInputFormat: PropTypes.func.isRequired,\n\tinputFormat: PropTypes.string.isRequired,\n\tid: PropTypes.string.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tisDisabled: PropTypes.bool.isRequired,\n};\n\nInputFormatEntry.defaultProps = {};\n\nexport default InputFormatEntry;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport InputFormatEntry from './InputFormatEntry';\n\nconst allEntries = [\n\t{\n\t\tid: 'basic',\n\t\tlabel: 'Basic',\n\t},\n\t{\n\t\tid: 'chordpro',\n\t\tlabel: 'ChordPro',\n\t},\n\t{\n\t\tid: 'ultimateGuitar',\n\t\tlabel: 'Ultimate Guitar',\n\t},\n];\n\nfunction InputFormatSelector(props) {\n\tconst { setInputFormat, inputFormat, disableAll } = props;\n\n\tconst rendered = allEntries.map((entry) => (\n\t\t\n\t));\n\n\treturn (\n\t\t
    \n\t\t\tInput format:\n\t\t\t{rendered}\n\t\t
    \n\t);\n}\n\nInputFormatSelector.propTypes = {\n\tdisableAll: PropTypes.bool.isRequired,\n\tsetInputFormat: PropTypes.func.isRequired,\n\tinputFormat: PropTypes.string.isRequired,\n};\n\nInputFormatSelector.defaultProps = {};\n\nexport default InputFormatSelector;\n","import { ChordLyricsPair, Tag } from 'chordsheetjs';\n\nconst allLines = [];\n\nexport default function chordSheetJs2ChordMark(song) {\n\tallLines.length = 0;\n\tformatAllParagraphs(song);\n\treturn allLines.join('\\n');\n}\n\nconst formatAllParagraphs = (song) => {\n\tconst { bodyParagraphs } = song;\n\tbodyParagraphs.map((paragraph) => {\n\t\tformatParagraph(paragraph);\n\t\tallLines.push('');\n\t});\n};\n\nconst formatParagraph = (paragraph) => {\n\tswitch (paragraph.type) {\n\t\tcase 'verse':\n\t\t\tallLines.push('#v');\n\t\t\tbreak;\n\t\tcase 'chorus':\n\t\t\tallLines.push('#c');\n\t\t\tbreak;\n\t}\n\tparagraph.lines.map((line) => formatLine(line));\n};\n\nconst formatLine = (line) => {\n\tconst parts = [\n\t\tformatChordLine(line),\n\t\tformatLyricLine(line),\n\t\tformatTagLine(line),\n\t]\n\t\t.filter((i) => i !== null)\n\t\t.map((part) => part.trimRight());\n\n\tallLines.push(...parts);\n};\n\nconst formatChordLine = (line) => {\n\tif (!lineHasChords(line)) {\n\t\treturn null;\n\t}\n\n\treturn line.items.reduce((chordLine, item) => {\n\t\tif (itemHasChord(item)) {\n\t\t\tchordLine += item.chords.trim() + ' ';\n\t\t}\n\t\treturn chordLine;\n\t}, '');\n};\n\nconst formatLyricLine = (line) => {\n\tif (!lineHasLyrics(line)) {\n\t\treturn null;\n\t}\n\treturn line.items.reduce((lyricsLine, item) => {\n\t\tif (!itemHasLyric(item)) lyricsLine += ' ';\n\t\tif (itemHasChord(item)) lyricsLine += '_';\n\t\tif (itemHasLeftPadding(item)) lyricsLine += ' ';\n\n\t\tlyricsLine += item.lyrics.trim();\n\n\t\tif (itemHasRightPadding(item)) lyricsLine += ' ';\n\n\t\treturn lyricsLine;\n\t}, '');\n};\n\nconst formatTagLine = (line) => {\n\tif (!lineHasTag(line)) {\n\t\treturn null;\n\t}\n\tconst tagValue = line.items[0].value.toLowerCase().replace(/[- 0-9]/g, '');\n\n\treturn sectionLabelsMapping[tagValue]\n\t\t? sectionLabelsMapping[tagValue]\n\t\t: '#' + tagValue;\n};\n\nconst sectionLabelsMapping = {\n\tadlib: '#a',\n\tbridge: '#b',\n\tchorus: '#c',\n\tinterlude: '#u',\n\tintro: '#i',\n\tintroduction: '#i',\n\toutro: '#o',\n\tprechorus: '#p',\n\tsolo: '#s',\n};\n\nconst lineHasChords = (line) =>\n\tline.items.some((item) => item instanceof ChordLyricsPair && item.chords);\n\nconst lineHasLyrics = (line) =>\n\tline.items.some((item) => item instanceof ChordLyricsPair && item.lyrics);\n\nconst lineHasTag = (line) =>\n\tline.items.some((item) => item instanceof Tag && item.isRenderable());\n\nconst itemHasChord = (item) => {\n\treturn item instanceof ChordLyricsPair && item.chords.trim().length;\n};\n\nconst itemHasLyric = (item) => {\n\treturn item.lyrics.length;\n};\n\nconst itemHasLeftPadding = (item) => {\n\treturn item.lyrics.length - item.lyrics.trimLeft().length >= 1;\n};\n\nconst itemHasRightPadding = (item) => {\n\treturn (\n\t\titem.lyrics.trim().length &&\n\t\titem.lyrics.length - item.lyrics.trimRight().length >= 1\n\t);\n};\n","import ChordSheetJS from 'chordsheetjs';\nimport chordSheetJs2ChordMark from './chordSheetJs2ChordMark';\n\nexport default function ultimateGuitar2ChordMark(ugChordChartRaw) {\n\tconst ugChordChart = ugChordChartRaw\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.replace(/\\t/g, ' ')\n\t\t.replace(/\\[\\/?ch]/g, '')\n\t\t.replace(/\\[\\/?tab]/g, '');\n\n\tconst parser = new ChordSheetJS.UltimateGuitarParser();\n\tconst parsed = parser.parse(ugChordChart);\n\n\treturn chordSheetJs2ChordMark(parsed);\n}\n","import ultimateGuitar2ChordMark from '../core/converters/ultimateGuitar2ChordMark';\nimport ChordSheetJS from 'chordsheetjs';\nimport chordSheetJs2ChordMark from '../core/converters/chordSheetJs2ChordMark';\n\nconst input2ChordMark = (input, inputFormat) => {\n\tconst converter = getConverter(inputFormat);\n\treturn converter(input);\n};\n\nconst getConverter = (inputFormat) => {\n\tif (inputFormat === 'ultimateGuitar') {\n\t\treturn ultimateGuitar2ChordMark;\n\t}\n\n\tconst parser =\n\t\tinputFormat === 'chordpro'\n\t\t\t? new ChordSheetJS.ChordProParser()\n\t\t\t: new ChordSheetJS.ChordSheetParser();\n\n\treturn (input) => {\n\t\tconst parsed = parser.parse(input);\n\t\treturn chordSheetJs2ChordMark(parsed);\n\t};\n};\n\nexport default input2ChordMark;\n","import './SongImporter.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../../ui/_components/Modal';\nimport Header from './Header';\nimport FilePicker from './FilePicker';\nimport Input from './Input';\nimport PreviewError from './PreviewError';\nimport InputFormatSelector from './InputFormatSelector';\nimport input2ChordMark from '../input2ChordMark';\nimport Icon from '../../ui/_components/Icon';\n\nfunction SongImporter(props) {\n\tconst {\n\t\tcancelImport,\n\t\tcontent,\n\t\timportFile,\n\t\tisFromWeb,\n\t\tisImporting,\n\t\tsetContent,\n\t\tsetInputFormat,\n\t\tinputFormat,\n\t\ttitle,\n\t} = props;\n\n\tif (!isImporting) return null;\n\n\tlet chordMarkContent = '';\n\tlet error = '';\n\n\ttry {\n\t\tchordMarkContent = input2ChordMark(content, inputFormat);\n\t} catch (e) {\n\t\terror = e.message;\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tChordMark preview\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!error ? (\n\t\t\t\t\t\t\t\tchordMarkContent\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t);\n}\n\nSongImporter.propTypes = {\n\tcancelImport: PropTypes.func.isRequired,\n\tcontent: PropTypes.string.isRequired,\n\timportFile: PropTypes.func.isRequired,\n\tisFromWeb: PropTypes.bool.isRequired,\n\tisImporting: PropTypes.bool.isRequired,\n\tsetContent: PropTypes.func.isRequired,\n\tsetInputFormat: PropTypes.func.isRequired,\n\tinputFormat: PropTypes.string.isRequired,\n\ttitle: PropTypes.string,\n};\n\nSongImporter.defaultProps = {};\n\nexport default SongImporter;\n","import { connect } from 'react-redux';\n\nimport { importFile } from '../../db/files/actions';\nimport { setContent, setInputFormat, cancelImport } from '../_state/actions';\nimport {\n\tgetInputFormat,\n\tgetContent,\n\tgetTitle,\n\tisImporting,\n\tisFromWeb,\n} from '../_state/selectors';\n\nimport SongImporter from '../_components/SongImporter';\n\nexport default connect(\n\t(state) => ({\n\t\tcontent: getContent(state),\n\t\tisFromWeb: isFromWeb(state),\n\t\tisImporting: isImporting(state),\n\t\tinputFormat: getInputFormat(state),\n\t\ttitle: getTitle(state),\n\t}),\n\n\t{\n\t\tsetContent,\n\t\tsetInputFormat,\n\t\tcancelImport,\n\t\timportFile,\n\t}\n)(SongImporter);\n","export default [\n\t{\n\t\tid: 'edit',\n\t\tlabel: 'Edit',\n\t\ticon: 'create',\n\t\teditorMode: 'edit',\n\t},\n\t{\n\t\tid: 'play',\n\t\tlabel: 'Screen view',\n\t\ticon: 'music_note',\n\t\teditorMode: 'play',\n\t},\n\t{\n\t\tid: 'print',\n\t\tlabel: 'Print/PDF Preview',\n\t\ticon: 'print',\n\t\teditorMode: 'print',\n\t},\n\t{\n\t\tid: 'export',\n\t\tlabel: 'Export Preview',\n\t\ticon: 'save_alt',\n\t\teditorMode: 'export',\n\t},\n];\n","import './App.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Logo from '../../../sideBar/_components/Logo';\nimport Nav from './Nav';\nimport UserGuide from '../../../sideBar/_components/UserGuide';\nimport Versions from '../../../sideBar/_components/Versions';\nimport Icon from '../../../_components/Icon';\nimport SongImporter from '../../../../songImporter/_containers/SongImporter';\n\nimport allNavEntries from '../allNavEntries';\n\nfunction App(props) {\n\tconst {\n\t\teditorMode,\n\t\tisLeftBarCollapsed,\n\t\tisRightBarCollapsed,\n\t\ttoggleLeftBar,\n\t\ttoggleRightBar,\n\t\tsetEditorMode,\n\t\tselectedId,\n\n\t\tleftBar,\n\t\trightBar,\n\t} = props;\n\n\tconst leftBarClassNames = ['leftBar'];\n\tif (isLeftBarCollapsed) {\n\t\tleftBarClassNames.push('leftBar-isCollapsed');\n\t}\n\n\tconst rightBarClassNames = ['rightBar'];\n\tif (isRightBarCollapsed) {\n\t\trightBarClassNames.push('rightBar-isCollapsed');\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{leftBar}\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{props.children}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{rightBar}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t);\n}\n\nApp.propTypes = {\n\tchildren: PropTypes.element,\n\n\tisLeftBarCollapsed: PropTypes.bool,\n\tisRightBarCollapsed: PropTypes.bool,\n\tselectedId: PropTypes.string,\n\ttoggleLeftBar: PropTypes.func.isRequired,\n\ttoggleRightBar: PropTypes.func.isRequired,\n\n\teditorMode: PropTypes.string.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\n\n\tleftBar: PropTypes.element.isRequired,\n\trightBar: PropTypes.element.isRequired,\n};\n\nApp.defaultProps = {\n\tisLeftBarCollapsed: false,\n\tisRightBarCollapsed: false,\n};\n\nexport default App;\n","import { connect } from 'react-redux';\n\nimport {\n\ttoggleLeftBar,\n\ttoggleRightBar,\n\tsetEditorMode,\n} from '../_state/actions';\nimport {\n\tisLeftBarCollapsed,\n\tisRightBarCollapsed,\n\tgetEditorMode,\n} from '../_state/selectors';\nimport { getSelectedId } from '../../../../fileManager/_state/selectors';\n\nimport App from '../_components/App';\n\nexport default connect(\n\t(state) => ({\n\t\teditorMode: getEditorMode(state),\n\t\tisLeftBarCollapsed: isLeftBarCollapsed(state),\n\t\tisRightBarCollapsed: isRightBarCollapsed(state),\n\t\tselectedId: getSelectedId(state),\n\t}),\n\n\t{\n\t\ttoggleLeftBar,\n\t\ttoggleRightBar,\n\t\tsetEditorMode,\n\t}\n)(App);\n","import createAction from '../../core/createAction';\n\nimport * as actionsTypes from './actionsTypes';\n\nexport const selectFile = (id) =>\n\tcreateAction(actionsTypes.FILE_MANAGER_SELECT_FILE, { id });\n\nexport const enableRename = (id) =>\n\tcreateAction(actionsTypes.FILE_MANAGER_ENABLE_RENAME, { id });\n","import { renderSong as renderSongCm, parseSong } from 'chord-mark';\nimport chordMark2ChordPro from 'chord-mark-2-chordpro';\n\nimport stripTags from './stripTags';\n\nexport function renderAsText(\n\tsongTxt,\n\trenderOptions = {},\n\tuseChartFormat = false\n) {\n\treturn render(songTxt, renderOptions, useChartFormat, 'text');\n}\n\nexport function renderAsHtml(\n\tsongTxt,\n\trenderOptions = {},\n\tuseChartFormat = false\n) {\n\treturn render(songTxt, renderOptions, useChartFormat, 'html');\n}\n\nfunction render(songTxt, renderOptions, useChartFormat, outputFormat) {\n\tif (useChartFormat && renderOptions.chartFormat === 'chordmarkSrc') {\n\t\treturn outputFormat === 'html' ? toHtml(songTxt) : songTxt;\n\t} else if (useChartFormat && renderOptions.chartFormat === 'chordpro') {\n\t\trenderOptions.customRenderer = chordMark2ChordPro;\n\t\tconst chordProTxt = renderSong(songTxt, renderOptions);\n\t\treturn outputFormat === 'html' ? toHtml(chordProTxt) : chordProTxt;\n\t} else {\n\t\tconst chordMarkHtml = renderSong(songTxt, renderOptions);\n\t\treturn outputFormat === 'html' ? chordMarkHtml : toText(chordMarkHtml);\n\t}\n}\n\nfunction renderSong(songTxt, renderOptions) {\n\ttry {\n\t\tconst parsed = parseSong(songTxt);\n\t\treturn renderSongCm(parsed, {\n\t\t\t...renderOptions,\n\t\t});\n\t} catch (e) {\n\t\treturn e.message;\n\t}\n}\n\nfunction toHtml(text) {\n\treturn text\n\t\t.split('\\n')\n\t\t.map((line) => (line === '' ? ' ' : line))\n\t\t.map((line) => `

    ${line}

    `)\n\t\t.join('\\n');\n}\n\nfunction toText(html) {\n\treturn html\n\t\t.split('\\n')\n\t\t.map((line) => stripTags(line))\n\t\t.map((line) => (line === ' ' ? '' : line))\n\t\t.join('\\n');\n}\n","import { saveAs } from 'file-saver';\nimport { getStore } from '../state/store';\n\nimport { getSelectedId } from './_state/selectors';\nimport { getOne } from '../db/files/selectors';\nimport { getOptionValue } from '../db/options/selectors';\n\nimport { renderAsText } from '../core/renderSong';\n\nexport default function exportSelectedFileAsText() {\n\tconst store = getStore();\n\tconst state = store.getState();\n\n\tconst selectedId = getSelectedId(state);\n\tconst selectedFile = getOne(state, selectedId);\n\n\tconst renderOptions = {\n\t\ttransposeValue: getOptionValue(\n\t\t\tstate,\n\t\t\t'songPreferences',\n\t\t\t'transposeValue'\n\t\t),\n\t\tharmonizeAccidentals: getOptionValue(\n\t\t\tstate,\n\t\t\t'songPreferences',\n\t\t\t'harmonizeAccidentals'\n\t\t),\n\t\taccidentalsType: getOptionValue(\n\t\t\tstate,\n\t\t\t'songPreferences',\n\t\t\t'accidentalsType'\n\t\t),\n\n\t\tchartType: getOptionValue(state, 'songFormatting', 'chartType'),\n\t\tchartFormat: getOptionValue(state, 'songFormatting', 'chartFormat'),\n\t\talignChordsWithLyrics: getOptionValue(\n\t\t\tstate,\n\t\t\t'songFormatting',\n\t\t\t'alignChordsWithLyrics'\n\t\t),\n\t\talignBars: getOptionValue(state, 'songFormatting', 'alignBars'),\n\t\tautoRepeatChords: getOptionValue(\n\t\t\tstate,\n\t\t\t'songFormatting',\n\t\t\t'autoRepeatChords'\n\t\t),\n\t\texpandSectionCopy: getOptionValue(\n\t\t\tstate,\n\t\t\t'songFormatting',\n\t\t\t'expandSectionCopy'\n\t\t),\n\t};\n\n\tconst fileContent = renderAsText(selectedFile.content, renderOptions, true);\n\tconst fileExt = renderOptions.chartFormat === 'chordpro' ? 'cho' : 'txt';\n\tconst fileName = `${selectedFile.title}.${fileExt}`;\n\n\tconst blob = new Blob([fileContent], {\n\t\ttype: 'text/plain;charset=utf-8',\n\t\tendings: 'native',\n\t});\n\tsaveAs(blob, fileName);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from './Button';\nimport Modal from './Modal';\n\nfunction ModalConfirm(props) {\n\tconst {\n\t\tconfirmAction,\n\t\tconfirmTitle = 'OK',\n\t\tcancelAction,\n\t\tcancelTitle = 'CANCEL',\n\t\tchildren,\n\t} = props;\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t
    {children}
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{cancelTitle}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{confirmTitle}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n\nModalConfirm.propTypes = {\n\tconfirmAction: PropTypes.func.isRequired,\n\tconfirmTitle: PropTypes.string,\n\tcancelAction: PropTypes.func.isRequired,\n\tcancelTitle: PropTypes.string,\n\tchildren: PropTypes.node.isRequired,\n};\n\nexport default ModalConfirm;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ModalConfirm from '../../ui/_components/ModalConfirm';\n\nfunction DeleteConfirmModal(props) {\n\tconst { selected, deleteFile, isDeleting, setIsDeleting } = props;\n\n\tif (!isDeleting) {\n\t\treturn null;\n\t}\n\n\tconst cancelDelete = () => setIsDeleting(false);\n\tconst confirmDelete = () => {\n\t\tsetIsDeleting(false);\n\t\tdeleteFile(selected);\n\t};\n\n\treturn (\n\t\t\n\t\t\tAre you sure you want to delete this file?\n\t\t\t
    \n\t\t\tThis action cannot be undone.\n\t\t\n\t);\n}\n\nDeleteConfirmModal.propTypes = {\n\tdeleteFile: PropTypes.func.isRequired,\n\tisDeleting: PropTypes.bool.isRequired,\n\tselected: PropTypes.string.isRequired,\n\tsetIsDeleting: PropTypes.func.isRequired,\n};\n\nexport default DeleteConfirmModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../ui/_components/Icon';\n\nfunction FileActionEntry(props) {\n\tconst { icon, text, action, isDisabled } = props;\n\n\tconst classNames = ['fileManagerAction'];\n\n\tif (isDisabled) {\n\t\tclassNames.push('fileManagerAction-isDisabled');\n\t}\n\tconst handleClick = () => {\n\t\tif (!isDisabled) {\n\t\t\taction();\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t {text}\n\t\t\t\n\t\t\n\t);\n}\n\nFileActionEntry.propTypes = {\n\ticon: PropTypes.string.isRequired,\n\ttext: PropTypes.string.isRequired,\n\taction: PropTypes.func.isRequired,\n\tisDisabled: PropTypes.bool.isRequired,\n};\n\nexport default React.memo(FileActionEntry);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport FileActionEntry from './FileActionEntry';\n\nfunction FileActions(props) {\n\tconst {\n\t\tselected,\n\t\tcreateFile,\n\t\tdeleteFile,\n\t\tenableRename,\n\t\tstartImport,\n\t\texportAsText,\n\t\tprintFile,\n\t} = props;\n\n\tconst allActions = [\n\t\t{\n\t\t\ticon: 'upload',\n\t\t\ttext: 'Import',\n\t\t\taction: startImport,\n\t\t\tisDisabled: false,\n\t\t},\n\t\t{\n\t\t\ticon: 'add_circle',\n\t\t\ttext: 'New',\n\t\t\taction: createFile,\n\t\t\tisDisabled: false,\n\t\t},\n\t\t{\n\t\t\ticon: 'create',\n\t\t\ttext: 'Rename',\n\t\t\taction: enableRename,\n\t\t\tisDisabled: !selected,\n\t\t},\n\t\t{\n\t\t\ticon: 'delete',\n\t\t\ttext: 'Delete',\n\t\t\taction: deleteFile,\n\t\t\tisDisabled: !selected,\n\t\t},\n\t\t{\n\t\t\ticon: 'print',\n\t\t\ttext: 'Print',\n\t\t\taction: printFile,\n\t\t\tisDisabled: !selected,\n\t\t},\n\t\t{\n\t\t\ticon: 'download',\n\t\t\ttext: 'Export',\n\t\t\taction: exportAsText,\n\t\t\tisDisabled: !selected,\n\t\t},\n\t];\n\n\treturn (\n\t\t
    \n\t\t\t{allActions.map((action, key) => (\n\t\t\t\t\n\t\t\t))}\n\t\t
    \n\t);\n}\n\nFileActions.propTypes = {\n\tselected: PropTypes.string,\n\tcreateFile: PropTypes.func.isRequired,\n\tdeleteFile: PropTypes.func.isRequired,\n\tenableRename: PropTypes.func.isRequired,\n\texportAsText: PropTypes.func.isRequired,\n\tprintFile: PropTypes.func.isRequired,\n\tstartImport: PropTypes.func.isRequired,\n};\n\nexport default React.memo(FileActions);\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction FileEntry(props) {\n\tconst [title, setTitle] = useState(props.title);\n\n\tconst {\n\t\tfileId,\n\t\tisSelected,\n\t\tisRenamed,\n\t\tdefaultTitle,\n\t\tselectFile,\n\t\tenableRename,\n\t\tupdateFile,\n\t} = props;\n\n\tconst classList = ['fileManagerEntry'];\n\tif (isSelected) {\n\t\tclassList.push('fileManagerEntry-isSelected');\n\t}\n\tif (isRenamed) {\n\t\tclassList.push('fileManagerEntry-isRenamed');\n\t}\n\n\tconst inputRef = React.createRef();\n\n\tuseEffect(() => {\n\t\tif (isRenamed) {\n\t\t\tinputRef.current.focus();\n\t\t}\n\t}, [isRenamed, inputRef]);\n\n\tfunction handleClick() {\n\t\tif (!isSelected) {\n\t\t\tselectFile(fileId);\n\t\t}\n\t}\n\n\tfunction handleDoubleClick(e) {\n\t\tif (!isRenamed) {\n\t\t\tenableRename(fileId);\n\t\t\te.target.select();\n\t\t}\n\t}\n\n\tfunction handleKeyPress(e) {\n\t\tif (isRenamed && e.which === 13) {\n\t\t\te.preventDefault();\n\t\t\twindow.getSelection().removeAllRanges();\n\n\t\t\tconst newTitle = e.target.value;\n\t\t\tsaveTitle(newTitle);\n\t\t}\n\t}\n\n\tfunction handleChange(e) {\n\t\tsetTitle(e.target.value);\n\t}\n\n\tfunction handleFocus(e) {\n\t\tif (isRenamed) {\n\t\t\te.target.select();\n\t\t}\n\t}\n\n\tfunction handleBlur(e) {\n\t\tif (isRenamed) {\n\t\t\tconst newTitle = e.target.value;\n\t\t\tsaveTitle(newTitle);\n\t\t}\n\t}\n\n\tfunction saveTitle(newTitle) {\n\t\tnewTitle = newTitle || defaultTitle;\n\n\t\tupdateFile(fileId, {\n\t\t\ttitle: newTitle,\n\t\t});\n\t\tsetTitle(newTitle);\n\n\t\tinputRef.current.scrollLeft = 0;\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nFileEntry.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\tfileId: PropTypes.string.isRequired,\n\tisSelected: PropTypes.bool.isRequired,\n\tisRenamed: PropTypes.bool.isRequired,\n\tdefaultTitle: PropTypes.string.isRequired,\n\tselectFile: PropTypes.func.isRequired,\n\tenableRename: PropTypes.func.isRequired,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default FileEntry;\n","import './FileManager.scss';\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport exportSelectedFileAsText from '../exportSelectedFileAsText';\n\nimport DeleteConfirmModal from './DeleteConfirmModal';\nimport Icon from '../../ui/_components/Icon';\nimport FileActions from './FileActions';\nimport FileEntry from './FileEntry';\n\nfunction FileManager(props) {\n\tconst [isDeleting, setIsDeleting] = useState(false);\n\n\tconst {\n\t\tallTitles,\n\t\tselected,\n\t\trenamed,\n\t\tdefaultTitle,\n\n\t\tcreateFile,\n\t\tdeleteFile,\n\t\tenableRename,\n\t\tstartImport,\n\t\tselectFile,\n\t\tupdateFile,\n\t\tsetEditorMode,\n\t} = props;\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t createFile(defaultTitle)}\n\t\t\t\t\tdeleteFile={() => setIsDeleting(true)}\n\t\t\t\t\tenableRename={() => enableRename(selected)}\n\t\t\t\t\tstartImport={() => startImport()}\n\t\t\t\t\texportAsText={() => {\n\t\t\t\t\t\tsetEditorMode('export');\n\t\t\t\t\t\tsetTimeout(() => exportSelectedFileAsText(), 0);\n\t\t\t\t\t}}\n\t\t\t\t\tprintFile={() => {\n\t\t\t\t\t\tsetEditorMode('print');\n\t\t\t\t\t\tsetTimeout(() => window.print(), 0);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t
      \n\t\t\t\t\t{allTitles.map((file) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n\nFileManager.propTypes = {\n\tallTitles: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\ttitle: PropTypes.string.isRequired,\n\t\t\tid: PropTypes.string.isRequired,\n\t\t})\n\t).isRequired,\n\tselected: PropTypes.string.isRequired,\n\trenamed: PropTypes.string.isRequired,\n\tdefaultTitle: PropTypes.string.isRequired,\n\n\tselectFile: PropTypes.func.isRequired,\n\tcreateFile: PropTypes.func.isRequired,\n\tdeleteFile: PropTypes.func.isRequired,\n\tenableRename: PropTypes.func.isRequired,\n\tstartImport: PropTypes.func.isRequired,\n\tupdateFile: PropTypes.func.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\n};\n\nexport default FileManager;\n","import { connect } from 'react-redux';\n\nimport { selectFile, enableRename } from '../_state/actions';\nimport {\n\tgetDefaultTitle,\n\tgetSelectedId,\n\tgetRenamedId,\n} from '../_state/selectors';\n\nimport { createFile, updateFile, deleteFile } from '../../db/files/actions';\nimport { startImport } from '../../songImporter/_state/actions';\nimport { setEditorMode } from '../../ui/layout/app/_state/actions';\n\nimport { getAllTitles } from '../../db/files/selectors';\n\nimport FileManager from '../_components/FileManager';\n\nexport default connect(\n\t(state) => ({\n\t\tselected: getSelectedId(state),\n\t\trenamed: getRenamedId(state),\n\t\tdefaultTitle: getDefaultTitle(state),\n\t\tallTitles: getAllTitles(state),\n\t}),\n\n\t{\n\t\tselectFile,\n\t\tcreateFile,\n\t\tdeleteFile,\n\t\tupdateFile,\n\t\tenableRename,\n\t\tsetEditorMode,\n\t\tstartImport,\n\t}\n)(FileManager);\n","import domPurify from 'dompurify';\n\nexport default function escapeHTML(unescaped) {\n\treturn domPurify.sanitize(unescaped);\n}\n","import './SongRenderer.scss';\n\nimport _pick from 'lodash/pick';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport escapeHTML from '../../core/escapeHTML';\n\nimport { renderAsHtml } from '../../core/renderSong';\n\nfunction SongRenderer(props) {\n\tconst { content, useChartFormat } = props;\n\n\tconst renderOptions = _pick(props, [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'accidentalsType',\n\n\t\t'chartType',\n\t\t'chartFormat',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\t]);\n\n\tconst rendered = renderAsHtml(content, renderOptions, useChartFormat);\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n\nSongRenderer.propTypes = {\n\tuseChartFormat: PropTypes.bool.isRequired,\n\tchartFormat: PropTypes.string.isRequired,\n\tcontent: PropTypes.string,\n};\n\nSongRenderer.defaultProps = {\n\tcontent: '',\n\tuseChartFormat: false,\n};\n\nexport default SongRenderer;\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../db/options/selectors';\n\nimport SongRenderer from '../_components/SongRenderer';\n\nexport default connect((state) => ({\n\t// songPreferences\n\ttransposeValue: getOptionValue(state, 'songPreferences', 'transposeValue'),\n\tharmonizeAccidentals: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'harmonizeAccidentals'\n\t),\n\taccidentalsType: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'preferredAccidentals'\n\t),\n\n\t// songFormatting\n\tchartFormat: getOptionValue(state, 'songFormatting', 'chartFormat'),\n\tchartType: getOptionValue(state, 'songFormatting', 'chartType'),\n\talignChordsWithLyrics: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'alignChordsWithLyrics'\n\t),\n\talignBars: getOptionValue(state, 'songFormatting', 'alignBars'),\n\tautoRepeatChords: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'autoRepeatChords'\n\t),\n\texpandSectionCopy: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'expandSectionCopy'\n\t),\n}))(SongRenderer);\n","import './EditorPreview.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction EditorPreview(props) {\n\tconst { selectedFile } = props;\n\n\tconst classNames = ['editorPreview'];\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n\nEditorPreview.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n};\n\nexport default EditorPreview;\n","import { connect } from 'react-redux';\n\n//import { getOptionValue } from '../../../db/options/selectors';\n\nimport EditorPreview from '../_components/EditorPreview';\n\nexport default connect(() => ({}))(EditorPreview);\n","import { Schema } from 'prosemirror-model';\n\nconst editorSchema = new Schema({\n\tnodes: {\n\t\tdoc: {\n\t\t\tcontent: 'block+',\n\t\t},\n\n\t\tparagraph: {\n\t\t\tcontent: 'inline*',\n\t\t\tgroup: 'block',\n\t\t\tparseDOM: [{ tag: 'p' }],\n\t\t\ttoDOM() {\n\t\t\t\treturn ['p', 0];\n\t\t\t},\n\t\t},\n\n\t\thard_break: {\n\t\t\tinline: true,\n\t\t\tgroup: 'inline',\n\t\t\tselectable: false,\n\t\t\tparseDOM: [{ tag: 'br' }],\n\t\t\t// no idea how to test this!\n\t\t\t/* istanbul ignore next */\n\t\t\ttoDOM() {\n\t\t\t\treturn ['br'];\n\t\t\t},\n\t\t},\n\n\t\ttext: {\n\t\t\tgroup: 'inline',\n\t\t},\n\t},\n});\n\nexport default editorSchema;\n","/**\n * Convert a proseMirror state to plain text\n */\nexport default function stateToText(state) {\n\tconst json = state.toJSON();\n\n\treturn json.doc.content\n\t\t.map((paragraph) => {\n\t\t\tif (!paragraph.content) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn paragraph.content.reduce((acc, current) => {\n\t\t\t\tacc += current.text || '\\n';\n\t\t\t\treturn acc;\n\t\t\t}, '');\n\t\t})\n\t\t.join('\\n');\n}\n","import domPurify from 'dompurify';\n\n/**\n * Minimal wrapper around DOMPurify library.\n * Pretty drastic also: anything that is HTML is just simply ignored, including text content of tags.\n *\n * @param {String} dirty\n * @returns {String} clean HTML\n */\nexport default function toSafeHtml(dirty) {\n\tconst config = {\n\t\tALLOWED_TAGS: ['p', '#text'],\n\t\tKEEP_CONTENT: false,\n\t};\n\n\treturn domPurify.sanitize(dirty, config);\n}\n","import './ProsemirrorEditorView.scss';\n\nimport React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { EditorState } from 'prosemirror-state';\nimport { EditorView } from 'prosemirror-view';\nimport { DOMParser as pmDOMParser } from 'prosemirror-model';\n\nimport getPlugins from './getPlugins';\nimport editorSchema from './schema';\n\nimport stateToText from './converters/stateToText';\nimport textToDom from './converters/textToDom';\n\nimport 'prosemirror-view/style/prosemirror.css';\n\nfunction createEditorState(editorContent) {\n\treturn EditorState.create({\n\t\tdoc: pmDOMParser\n\t\t\t.fromSchema(editorSchema)\n\t\t\t.parse(textToDom(editorContent), { preserveWhitespace: 'full' }),\n\t\tplugins: getPlugins(),\n\t});\n}\n\nfunction createEditorView(editorState, updateFile, fileId) {\n\treturn new EditorView(null, {\n\t\tstate: editorState,\n\t\tdispatchTransaction: function dispatchTransaction(transaction) {\n\t\t\tconst { state, transactions } =\n\t\t\t\tthis.state.applyTransaction(transaction);\n\n\t\t\tthis.updateState(state);\n\n\t\t\tif (transactions.some((tr) => tr.docChanged)) {\n\t\t\t\tupdateFile(fileId, { content: stateToText(state) });\n\t\t\t}\n\t\t},\n\t});\n}\n\nfunction ProseMirrorEditorView(props) {\n\tconst { selectedFileId, editorContent, updateFile } = props;\n\n\tconst editorView = useRef();\n\tconst editorDom = useRef();\n\tconst previousFileId = usePrevious(selectedFileId);\n\n\t/**\n\t * Editor is recreated on component mount and on file change.\n\t * The later is needed as we need to to re-bind the change handler with the new file id.\n\t */\n\tfunction shouldCreateEditor() {\n\t\treturn (\n\t\t\tselectedFileId &&\n\t\t\t(!editorView.current || previousFileId !== selectedFileId)\n\t\t);\n\t}\n\n\t// Editor has been previously created, but now no file is selected anymore\n\tfunction isEditorOrphan() {\n\t\treturn editorExists() && !selectedFileId;\n\t}\n\n\tfunction editorExists() {\n\t\treturn editorView.current && editorView.current.dom.parentNode;\n\t}\n\n\tfunction destroyEditor() {\n\t\teditorView.current.dom.parentNode.removeChild(editorView.current.dom);\n\t}\n\n\tuseEffect(() => {\n\t\tif (shouldCreateEditor()) {\n\t\t\tif (editorExists()) {\n\t\t\t\tdestroyEditor();\n\t\t\t}\n\n\t\t\tconst editorState = createEditorState(editorContent);\n\t\t\teditorView.current = createEditorView(\n\t\t\t\teditorState,\n\t\t\t\tupdateFile,\n\t\t\t\tselectedFileId\n\t\t\t);\n\t\t\teditorDom.current.appendChild(editorView.current.dom);\n\n\t\t\t// expose editor instance as a component property for unit tests\n\t\t\tProseMirrorEditorView.editorView = editorView.current;\n\t\t} else if (isEditorOrphan()) {\n\t\t\tdestroyEditor();\n\t\t}\n\t});\n\n\treturn
    ;\n}\n\nProseMirrorEditorView.defaultProps = {\n\tselectedFileId: '',\n\teditorContent: '',\n};\n\nProseMirrorEditorView.propTypes = {\n\tselectedFileId: PropTypes.string,\n\teditorContent: PropTypes.string,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default ProseMirrorEditorView;\n\n// @see https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\nfunction usePrevious(value) {\n\tconst ref = useRef();\n\tuseEffect(() => {\n\t\tref.current = value;\n\t});\n\treturn ref.current;\n}\n","import escapeHTML from './toSafeHtml';\n\n/**\n * @param {String} text\n * @returns {HTMLElement}\n */\nexport default function textToDom(text) {\n\tconst html = escapeHTML(text)\n\t\t.split('\\n')\n\t\t.map((line) => `

    ${line}

    `)\n\t\t.join('');\n\n\tconst div = document.createElement('div');\n\tdiv.innerHTML = escapeHTML(html);\n\n\treturn div;\n}\n","import { keymap } from 'prosemirror-keymap';\nimport { baseKeymap } from 'prosemirror-commands';\nimport { undo, redo, history as pmHistory } from 'prosemirror-history';\n\nexport default function getPlugins() {\n\treturn [\n\t\tpmHistory(),\n\t\tkeymap({ 'Mod-z': undo, 'Mod-y': redo }),\n\t\tkeymap(baseKeymap),\n\t];\n}\n","import './EditorLayout.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ScrollSync, ScrollSyncNode } from 'scroll-sync-react';\n\nimport EditorPreview from '../../../songRenderers/editorPreview/_containers/EditorPreview';\nimport ProseMirrorEditorView from '../prosemirror/ProsemirrorEditorView';\n\nfunction EditorLayout(props) {\n\tconst { selectedFile, updateFile } = props;\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n\nEditorLayout.propTypes = {\n\tselectedFile: PropTypes.object,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default EditorLayout;\n","import './ExportPreview.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction ExportPreview(props) {\n\tconst { selectedFile } = props;\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n\nExportPreview.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n};\n\nexport default ExportPreview;\n","import './PlayRenderer.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction PlayRenderer(props) {\n\tconst {\n\t\tselectedFile,\n\t\tfontSize,\n\t\tchordsColor,\n\t\thighlightChords,\n\t\tcolumnsCount,\n\t} = props;\n\n\tconst classNames = ['playRenderer'];\n\tclassNames.push('playRenderer--columns-' + columnsCount);\n\tclassNames.push('cmLine--fontSize' + fontSize);\n\tclassNames.push('cmChordSymbol--chordsColor-' + chordsColor);\n\tif (highlightChords) {\n\t\tclassNames.push('cmChordLine--highlightChords');\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n}\n\nPlayRenderer.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tchordsColor: PropTypes.string.isRequired,\n\thighlightChords: PropTypes.bool.isRequired,\n};\n\nexport default PlayRenderer;\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../../db/options/selectors';\n\nimport PlayRenderer from '../_components/PlayRenderer';\n\nexport default connect((state) => ({\n\tchordsColor: getOptionValue(state, 'songFormatting', 'chordsColor'),\n\thighlightChords: getOptionValue(state, 'songFormatting', 'highlightChords'),\n\tfontSize: getOptionValue(state, 'songFormatting', 'fontSize'),\n\tcolumnsCount: getOptionValue(state, 'songFormatting', 'columnsCount'),\n}))(PlayRenderer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport escapeHTML from '../../../core/escapeHTML';\n\nfunction Page(props) {\n\tconst {\n\t\tpageHeader,\n\t\tallColumnsLines,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tfontSize,\n\t} = props;\n\n\tconst allSectionsRendered = allColumnsLines.map((columnLines, index) => {\n\t\tconst columnLinesTxt = columnLines.join('\\n');\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t});\n\n\tconst pageClasses = ['printPreview-page'];\n\tpageClasses.push('printPreview-page--' + documentSize);\n\tpageClasses.push('printPreview-page--font' + fontSize);\n\n\tconst pageContentWrapperClasses = ['printPreview-pageContentWrapper'];\n\tpageContentWrapperClasses.push(\n\t\t'printPreview-pageContentWrapper--padding' + documentMargins\n\t);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t{pageHeader}\n\t\t\t\t\t
    \n\t\t\t\t\t\t{allSectionsRendered}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\n\t);\n}\nPage.defaultProps = {\n\tallColumnsLines: [],\n};\nPage.propTypes = {\n\tpageHeader: PropTypes.element,\n\tallColumnsLines: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n};\n\nexport default React.memo(Page);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction PageHeader(props) {\n\tconst { title } = props;\n\n\treturn
    {title}
    ;\n}\nPageHeader.defaultProps = {\n\tallColumnsLines: [],\n};\nPageHeader.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n};\n\nexport default React.memo(PageHeader);\n","const cssClasses = {\n\temptyLine: 'cmEmptyLine',\n\tchordLine: 'cmChordLine',\n\ttextLine: 'cmTextLine',\n};\n\n/**\n * @param {Object[]} allLinesWithHeight\n * @param {String} allLinesWithHeight.content\n * @param {Number} allLinesWithHeight.height\n * @param {Number} columnsCount\n * @param {Number} firstPageHeight\n * @param {Number} normalPageHeight\n * @param {Boolean} columnBreakOnParagraph\n * @param {Boolean} noEmptyLinesOnColumnStart\n * @param {Boolean} noOrphanTextLine\n * @returns {Array} array of pages, as array of columns\n */\nexport default function mapLinesToColumns(\n\tallLinesWithHeight,\n\t{\n\t\tcolumnsCount,\n\t\tfirstPageHeight,\n\t\tnormalPageHeight,\n\t\tcolumnBreakOnParagraph,\n\t\tnoEmptyLinesOnColumnStart = true,\n\t\tnoOrphanTextLine = true,\n\t}\n) {\n\tconst layout = layoutFactory({\n\t\tcolumnsCount,\n\t\tfirstPageHeight,\n\t\tnormalPageHeight,\n\t\tnoEmptyLinesOnColumnStart,\n\t});\n\n\tlet buffer = [];\n\tlet bufferHeight = 0;\n\n\tconst pageHeight = firstPageHeight || normalPageHeight;\n\n\tif (pageHeight > 0) {\n\t\tallLinesWithHeight.forEach((line, lineIndex) => {\n\t\t\tif (\n\t\t\t\tshouldRenderLine(\n\t\t\t\t\tlayout,\n\t\t\t\t\tline,\n\t\t\t\t\tbuffer,\n\t\t\t\t\tnoEmptyLinesOnColumnStart\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tbuffer.push(line);\n\t\t\t\tbufferHeight += line.height;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tbuffer.length > 0 &&\n\t\t\t\tisBreakable(line, allLinesWithHeight[lineIndex + 1], {\n\t\t\t\t\tnoOrphanTextLine,\n\t\t\t\t\tcolumnBreakOnParagraph,\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\tif (layout.fitsOnCurrentColumn(bufferHeight)) {\n\t\t\t\t\tlayout.insert(buffer);\n\t\t\t\t} else if (layout.fitsOnNextColumn(bufferHeight)) {\n\t\t\t\t\tlayout.insertOnNextColumn(buffer);\n\t\t\t\t} else {\n\t\t\t\t\tlayout.insert(buffer);\n\t\t\t\t}\n\t\t\t\tbuffer = [];\n\t\t\t\tbufferHeight = 0;\n\t\t\t}\n\t\t});\n\t}\n\treturn layout.get();\n}\n\n/**\n * Try to spot the case where the line is empty and would be rendered as the first line\n * of the next column, which we may want to avoid\n */\nfunction shouldRenderLine(layout, line, buffer, noEmptyLinesOnColumnStart) {\n\treturn !(\n\t\tisEmptyLine(line) &&\n\t\t!layout.fitsOnCurrentColumn(line.height) &&\n\t\tbuffer.length === 0 &&\n\t\tnoEmptyLinesOnColumnStart === true\n\t);\n}\n\nfunction isBreakable(\n\tcurrentLine,\n\tnextLine,\n\t{ noOrphanTextLine, columnBreakOnParagraph }\n) {\n\tif (isEmptyLine(currentLine) || !nextLine) {\n\t\treturn true;\n\t}\n\n\tconst wouldProduceOrphanTextLine =\n\t\tisChordLine(currentLine) && isTextLine(nextLine);\n\tif (noOrphanTextLine === true && wouldProduceOrphanTextLine) {\n\t\treturn false;\n\t}\n\n\tconst isEndOfParagraph = isEmptyLine(nextLine);\n\tif (columnBreakOnParagraph === true && !isEndOfParagraph) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction isEmptyLine(line) {\n\treturn hasClass(line.content, cssClasses.emptyLine);\n}\n\nfunction isChordLine(line) {\n\treturn hasClass(line.content, cssClasses.chordLine);\n}\n\nfunction isTextLine(line) {\n\treturn hasClass(line.content, cssClasses.textLine);\n}\n\nfunction hasClass(line, className) {\n\treturn line.indexOf(className) > -1;\n}\n\nfunction layoutFactory({ firstPageHeight, normalPageHeight, columnsCount }) {\n\tconst allPagesColumns = [];\n\n\tlet pageIndex = 0;\n\tlet columnIndex = 0;\n\tlet maxColumnHeight = getMaxColumnHeight();\n\tlet currentColumnHeight = 0;\n\n\tallPagesColumns[pageIndex] = [];\n\tallPagesColumns[pageIndex][columnIndex] = [];\n\n\tfunction flushBuffer(buffer) {\n\t\tbuffer.forEach((line) => {\n\t\t\tif (shouldChangeColumn(currentColumnHeight + line.height)) {\n\t\t\t\tchangeColumn();\n\t\t\t}\n\t\t\tallPagesColumns[pageIndex][columnIndex].push(line.content);\n\t\t\tcurrentColumnHeight += line.height;\n\t\t});\n\t}\n\n\tfunction getMaxColumnHeight() {\n\t\treturn pageIndex === 0 && firstPageHeight\n\t\t\t? firstPageHeight\n\t\t\t: normalPageHeight;\n\t}\n\n\tfunction shouldChangeColumn(nextHeight) {\n\t\treturn nextHeight > maxColumnHeight;\n\t}\n\n\tfunction changeColumn() {\n\t\tif (shouldChangePage()) {\n\t\t\tpageIndex++;\n\t\t\tallPagesColumns[pageIndex] = [];\n\t\t\tcolumnIndex = 0;\n\t\t} else {\n\t\t\tcolumnIndex++;\n\t\t}\n\t\tallPagesColumns[pageIndex][columnIndex] = [];\n\t\tcurrentColumnHeight = 0;\n\t\tmaxColumnHeight = getMaxColumnHeight();\n\t}\n\n\tfunction shouldChangePage() {\n\t\treturn columnIndex === columnsCount - 1;\n\t}\n\n\treturn {\n\t\tinsert(buffer) {\n\t\t\tflushBuffer(buffer);\n\t\t},\n\n\t\tinsertOnNextColumn(buffer) {\n\t\t\tchangeColumn();\n\t\t\tflushBuffer(buffer);\n\t\t},\n\n\t\tfitsOnCurrentColumn(bufferHeight) {\n\t\t\treturn currentColumnHeight + bufferHeight <= maxColumnHeight;\n\t\t},\n\n\t\tfitsOnNextColumn(bufferHeight) {\n\t\t\tconst nextColumnHeight =\n\t\t\t\tpageIndex === 0 && columnIndex < columnsCount && firstPageHeight\n\t\t\t\t\t? firstPageHeight\n\t\t\t\t\t: normalPageHeight;\n\t\t\treturn bufferHeight <= nextColumnHeight;\n\t\t},\n\n\t\tget() {\n\t\t\treturn allPagesColumns;\n\t\t},\n\t};\n}\n","import './getDimensionsFromDom.scss';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport default function getDimensionsFromDom(component, measuringFn) {\n\tconst container = document.createElement('div');\n\tcontainer.classList.add('measuring-node');\n\tdocument.body.appendChild(container);\n\n\treturn new Promise((resolve) => {\n\t\tReactDOM.render(
    {component}
    , container, () => {\n\t\t\tconst measure = measuringFn(container);\n\n\t\t\tReactDOM.unmountComponentAtNode(container);\n\t\t\tcontainer.parentNode.removeChild(container);\n\n\t\t\tresolve(measure);\n\t\t});\n\t});\n}\n","export default function padColumns(columnCount, allColumns = []) {\n\tfor (let i = allColumns.length || 0; i < columnCount; i++) {\n\t\tallColumns.push([]);\n\t}\n\treturn allColumns;\n}\n","export function getOffsetHeight(element) {\n\treturn element.offsetHeight;\n}\n\nexport function getClientHeight(element) {\n\treturn element.clientHeight;\n}\n","import React from 'react';\n\nimport getDimensionsFromDom from './getDimensionsFromDom';\nimport padColumns from './padColumns';\nimport { getOffsetHeight } from './element';\n\nimport Page from '../_components/Page';\n\nconst cssSelectors = {\n\tline: '.cmLine',\n};\n\nexport default async function getAllLinesHeight(\n\tallLines,\n\t{ columnsCount, documentSize, documentMargins, fontSize }\n) {\n\tconst component = (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n\n\tconst measuringFn = (container) => {\n\t\tconst allLinesHeight = [];\n\t\tcontainer.querySelectorAll(cssSelectors.line).forEach((line) => {\n\t\t\tallLinesHeight.push(getOffsetHeight(line));\n\t\t});\n\t\treturn allLinesHeight;\n\t};\n\n\treturn await getDimensionsFromDom(component, measuringFn);\n}\n","import React from 'react';\n\nimport getDimensionsFromDom from './getDimensionsFromDom';\nimport padColumns from './padColumns';\nimport { getClientHeight } from './element';\n\nimport Page from '../_components/Page';\nimport PageHeader from '../_components/PageHeader';\n\nexport default async function getAllLinesHeight(\n\ttitle,\n\t{ columnsCount, documentSize, documentMargins, fontSize }\n) {\n\tconst component = (\n\t\t}\n\t\t\tallColumnsLines={padColumns(columnsCount)}\n\t\t\tdocumentSize={documentSize}\n\t\t\tdocumentMargins={documentMargins}\n\t\t\tfontSize={fontSize}\n\t\t/>\n\t);\n\n\tconst measuringFn = (container) => {\n\t\tconst pageContent = container.querySelector(\n\t\t\t'.printPreview-pageContent'\n\t\t);\n\t\tconst pageColumnWrapper = container.querySelector(\n\t\t\t'.printPreview-pageColumnWrapper'\n\t\t);\n\t\treturn {\n\t\t\tfirstPageHeight: getClientHeight(pageColumnWrapper),\n\t\t\tnormalPageHeight: getClientHeight(pageContent),\n\t\t};\n\t};\n\n\treturn await getDimensionsFromDom(component, measuringFn);\n}\n","import React, { useState, useLayoutEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\nimport mapLinesToColumns from '../helpers/mapLinesToColumns';\nimport getAllLinesHeight from '../helpers/getAllLinesHeight';\nimport getPagesHeight from '../helpers/getPagesHeight';\nimport padColumns from '../helpers/padColumns';\n\nfunction AllPages(props) {\n\tconst [allPagesColumns, setAllPagesColumns] = useState([]);\n\n\tconst {\n\t\ttitle,\n\t\tallLines,\n\t\tcolumnsCount,\n\t\tcolumnBreakOnParagraph,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tfontSize,\n\t} = props;\n\n\tuseLayoutEffect(() => {\n\t\tconst getDimensions = async () => {\n\t\t\tconst pageOptions = {\n\t\t\t\tcolumnsCount,\n\t\t\t\tdocumentSize,\n\t\t\t\tdocumentMargins,\n\t\t\t\tfontSize,\n\t\t\t};\n\n\t\t\tconst allLinesHeight = await getAllLinesHeight(\n\t\t\t\tallLines,\n\t\t\t\tpageOptions\n\t\t\t);\n\n\t\t\tconst { normalPageHeight, firstPageHeight } = await getPagesHeight(\n\t\t\t\ttitle,\n\t\t\t\tpageOptions\n\t\t\t);\n\n\t\t\tconst allLinesWithHeight = allLines.map((line, index) => ({\n\t\t\t\tcontent: line,\n\t\t\t\theight: allLinesHeight[index],\n\t\t\t}));\n\n\t\t\tconst mapped = mapLinesToColumns(allLinesWithHeight, {\n\t\t\t\tcolumnsCount,\n\t\t\t\tcolumnBreakOnParagraph,\n\t\t\t\tnormalPageHeight,\n\t\t\t\tfirstPageHeight,\n\t\t\t});\n\n\t\t\tsetAllPagesColumns(mapped);\n\t\t};\n\t\tgetDimensions();\n\t}, [\n\t\tallLines,\n\t\ttitle,\n\t\tcolumnsCount,\n\t\tcolumnBreakOnParagraph,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tfontSize,\n\t]);\n\n\tconst allPagesRendered = allPagesColumns.map((pageColumns, index) => {\n\t\treturn (\n\t\t\t : null}\n\t\t\t\tallColumnsLines={padColumns(columnsCount, pageColumns)}\n\t\t\t\tdocumentSize={documentSize}\n\t\t\t\tdocumentMargins={documentMargins}\n\t\t\t\tfontSize={fontSize}\n\t\t\t/>\n\t\t);\n\t});\n\n\treturn {allPagesRendered};\n}\n\nAllPages.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\tallLines: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tcolumnBreakOnParagraph: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n};\n\nexport default AllPages;\n","import './PrintPreview.scss';\n\nimport _pick from 'lodash/pick';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { renderAsHtml } from '../../../core/renderSong';\nimport AllPages from './AllPages';\n\nfunction PrintPreview(props) {\n\tconst { selectedFile, highlightChords } = props;\n\n\tconst renderOptions = _pick(props, [\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'accidentalsType',\n\n\t\t'chartType',\n\t\t'alignChordsWithLyrics',\n\t\t'alignBars',\n\t\t'autoRepeatChords',\n\t\t'expandSectionCopy',\n\t]);\n\n\tconst allLines = renderAsHtml(selectedFile.content || '', {\n\t\t...renderOptions,\n\t}).split('\\n');\n\n\tconst classNames = ['printPreview'];\n\tif (highlightChords) {\n\t\tclassNames.push('cmChordLine--highlightChords');\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\nPrintPreview.propTypes = {\n\tchartType: PropTypes.string.isRequired,\n\tselectedFile: PropTypes.object.isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tcolumnBreakOnParagraph: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\thighlightChords: PropTypes.bool.isRequired,\n};\n\nexport default PrintPreview;\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../../db/options/selectors';\n\nimport PrintPreview from '../_components/PrintPreview';\n\nexport default connect((state) => ({\n\t// songPreferences\n\tharmonizeAccidentals: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'harmonizeAccidentals'\n\t),\n\taccidentalsType: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'preferredAccidentals'\n\t),\n\ttransposeValue: getOptionValue(state, 'songPreferences', 'transposeValue'),\n\n\t// songFormatting\n\tchartType: getOptionValue(state, 'songFormatting', 'chartType'),\n\talignChordsWithLyrics: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'alignChordsWithLyrics'\n\t),\n\talignBars: getOptionValue(state, 'songFormatting', 'alignBars'),\n\tautoRepeatChords: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'autoRepeatChords'\n\t),\n\texpandSectionCopy: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'expandSectionCopy'\n\t),\n\n\tcolumnsCount: getOptionValue(state, 'songFormatting', 'columnsCount'),\n\tcolumnBreakOnParagraph: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'columnBreakOnParagraph'\n\t),\n\tdocumentMargins: getOptionValue(state, 'songFormatting', 'documentMargins'),\n\n\tfontSize: getOptionValue(state, 'songFormatting', 'fontSize'),\n\thighlightChords: getOptionValue(state, 'songFormatting', 'highlightChords'),\n}))(PrintPreview);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport EditorLayout from '../songEditor/_components/EditorLayout';\nimport ExportPreview from '../../songRenderers/exportPreview/_components/ExportPreview';\nimport PlayRenderer from '../../songRenderers/playRenderer/_containers/PlayRenderer';\nimport PrintPreview from '../../songRenderers/printPreview/_containers/PrintPreview';\n\nfunction Editor(props) {\n\tconst { editorMode } = props;\n\n\tswitch (editorMode) {\n\t\tcase 'edit':\n\t\t\treturn ;\n\t\tcase 'play':\n\t\t\treturn ;\n\t\tcase 'print':\n\t\t\treturn ;\n\t\tcase 'export':\n\t\t\treturn ;\n\t}\n}\n\nEditor.propTypes = {\n\teditorMode: PropTypes.string.isRequired,\n};\n\nexport default Editor;\n","import { connect } from 'react-redux';\n\nimport { getSelectedId } from '../../fileManager/_state/selectors';\nimport { getEditorMode } from '../../ui/layout/app/_state/selectors';\n\nimport { getOne } from '../../db/files/selectors';\nimport { updateFile } from '../../db/files/actions';\n\nimport Editor from '../_components/Editor';\n\nexport default connect(\n\t(state) => ({\n\t\tselectedFile: getOne(state, getSelectedId(state)) || {},\n\t\teditorMode: getEditorMode(state),\n\t}),\n\n\t{\n\t\tupdateFile,\n\t}\n)(Editor);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction OptionsPanel(props) {\n\tconst {\n\t\tid,\n\t\tallWidgets,\n\t\tnonInteractableWidgets,\n\t\thiddenWidgets,\n\t\tsetOption,\n\t\tgetEntryComponent,\n\t} = props;\n\n\tconst classNames = ['optionsPanel', 'optionsPanel-' + id];\n\n\tlet widget, groupWidget;\n\n\tlet WidgetComponent, GroupComponent;\n\tlet isGroupInteractable, isGroupWidgetInteractable;\n\n\tlet renderedGroupWidgets;\n\n\tconst renderedWidgets = allWidgets.widgetsOrder\n\t\t.filter((widgetId) => {\n\t\t\treturn !hiddenWidgets.includes(widgetId);\n\t\t})\n\t\t.map((widgetId) => {\n\t\t\twidget = allWidgets.allWidgets[widgetId];\n\n\t\t\tif (widget.type === 'optionsGroup') {\n\t\t\t\trenderedGroupWidgets = widget.groupWidgetsOrder\n\t\t\t\t\t.filter((groupWidgetId) => {\n\t\t\t\t\t\treturn !hiddenWidgets.includes(groupWidgetId);\n\t\t\t\t\t})\n\t\t\t\t\t.map((groupWidgetId) => {\n\t\t\t\t\t\tgroupWidget = widget.allGroupWidgets[groupWidgetId];\n\n\t\t\t\t\t\tisGroupWidgetInteractable =\n\t\t\t\t\t\t\t!nonInteractableWidgets.includes(widgetId) &&\n\t\t\t\t\t\t\t!nonInteractableWidgets.includes(groupWidgetId);\n\n\t\t\t\t\t\treturn renderWidget(\n\t\t\t\t\t\t\tgroupWidgetId,\n\t\t\t\t\t\t\tgroupWidget,\n\t\t\t\t\t\t\tisGroupWidgetInteractable\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\tGroupComponent = getEntryComponent(widget.type);\n\t\t\t\tisGroupInteractable =\n\t\t\t\t\t!nonInteractableWidgets.includes(widgetId);\n\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t{renderedGroupWidgets}\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn renderWidget(\n\t\t\t\t\twidgetId,\n\t\t\t\t\twidget,\n\t\t\t\t\t!nonInteractableWidgets.includes(widgetId)\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\tfunction renderWidget(widgetId, localWidget, isInteractable) {\n\t\tWidgetComponent = getEntryComponent(localWidget.type);\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\treturn
    {renderedWidgets}
    ;\n}\n\nOptionsPanel.propTypes = {\n\tid: PropTypes.string.isRequired,\n\tallWidgets: PropTypes.object.isRequired,\n\tnonInteractableWidgets: PropTypes.arrayOf(PropTypes.string).isRequired,\n\thiddenWidgets: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tsetOption: PropTypes.func.isRequired,\n\tgetEntryComponent: PropTypes.func.isRequired,\n};\n\nexport default OptionsPanel;\n","import './OptionsGroup.scss';\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction OptionsGroup(props) {\n\tconst [isOpened, setIsOpened] = useState(props.isOpened);\n\n\tconst { isInteractable, icon, label } = props;\n\n\tconst classNames = ['sb-optionsGroup'];\n\tif (!shouldBeInteractable()) {\n\t\tclassNames.push('sb-optionsGroup-isNotInteractable');\n\t}\n\n\tif (shouldBeClosed()) {\n\t\tsetIsOpened(false);\n\t}\n\n\tfunction shouldBeInteractable() {\n\t\treturn isInteractable && props.children && props.children.length > 0;\n\t}\n\n\tfunction shouldBeClosed() {\n\t\treturn isOpened && (!props.children || props.children.length === 0);\n\t}\n\n\tfunction handleClick() {\n\t\tsetIsOpened(!isOpened);\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{' '}\n\t\t\t\t\t{label}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{isOpened && props.children}\n\t\t\t
    \n\t\t\n\t);\n}\n\nOptionsGroup.propTypes = {\n\tisOpened: PropTypes.bool,\n\tisInteractable: PropTypes.bool.isRequired,\n\ticon: PropTypes.string.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tchildren: PropTypes.arrayOf(PropTypes.element),\n};\n\nOptionsGroup.defaultProps = {\n\tisOpened: true,\n};\n\nexport default OptionsGroup;\n","import './Select.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction SelectChoice(props) {\n\tconst { isSelected, isInteractable, label, onClick } = props;\n\n\tlet checkIcon;\n\tconst classNames = ['sb-optionSelectChoice'];\n\n\tif (isSelected) {\n\t\tclassNames.push('sb-optionSelectChoice-isSelected');\n\t\tcheckIcon = (\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\tif (!isInteractable) {\n\t\tclassNames.push('sb-optionSelectChoice-isNotInteractable');\n\t}\n\n\tfunction handleClick() {\n\t\tif (isInteractable) {\n\t\t\tonClick();\n\t\t}\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t{isSelected && checkIcon}\n\t\t\t
    \n\t\t\t
    {label}
    \n\t\t
    \n\t);\n}\n\nSelectChoice.propTypes = {\n\tisSelected: PropTypes.bool.isRequired,\n\tisInteractable: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tonClick: PropTypes.func.isRequired,\n};\n\nexport default React.memo(SelectChoice);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport SelectChoice from './SelectChoice';\n\nimport Icon from '../../../_components/Icon';\n\nfunction Select(props) {\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\tconst {\n\t\tisInteractable,\n\t\tlabel,\n\t\tallChoices,\n\t\toptionContext,\n\t\toptionKey,\n\t\toptionValue,\n\t\tsetOption,\n\t} = props;\n\n\tconst classNames = ['sb-optionSelect'];\n\tif (!isInteractable) {\n\t\tclassNames.push('sb-optionSelect-isNotInteractable');\n\t}\n\n\tconst iconName = isOpen ? 'keyboard_arrow_down' : 'keyboard_arrow_right';\n\n\tfunction toggleChoices() {\n\t\tsetIsOpen(!isOpen);\n\t}\n\n\tconst renderedChoices = !isOpen ? null : (\n\t\t
    \n\t\t\t{allChoices.map((choice) => (\n\t\t\t\t {\n\t\t\t\t\t\tsetOption(optionContext, optionKey, choice.value);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t))}\n\t\t
    \n\t);\n\n\tconst activeLabel = allChoices.find(\n\t\t(choice) => optionValue === choice.value\n\t).label;\n\n\tconst selectLabel = isOpen ? (\n\t\tlabel\n\t) : (\n\t\t\n\t\t\t{label + ': '}\n\t\t\t\n\t\t\t\t{activeLabel}\n\t\t\t\n\t\t\n\t);\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{selectLabel}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\n\t\t\t{renderedChoices}\n\t\t\n\t);\n}\n\nSelect.propTypes = {\n\tisInteractable: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tallChoices: PropTypes.array.isRequired,\n\toptionContext: PropTypes.string.isRequired,\n\toptionKey: PropTypes.string.isRequired,\n\toptionValue: PropTypes.string.isRequired,\n\tsetOption: PropTypes.func.isRequired,\n};\n\nexport default Select;\n","import './Slider.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Slider(props) {\n\tconst {\n\t\tisInteractable,\n\t\tlabel,\n\t\tmin,\n\t\tmax,\n\t\tshowPlusSymbol,\n\t\toptionContext,\n\t\toptionKey,\n\t\toptionValue,\n\t\tsetOption,\n\t} = props;\n\n\tconst classNames = ['sb-optionSlider'];\n\tif (!isInteractable) {\n\t\tclassNames.push('sb-optionSlider-isNotInteractable');\n\t}\n\n\tfunction handleChange(e) {\n\t\tsetOption(optionContext, optionKey, Number.parseInt(e.target.value));\n\t}\n\n\tconst valueDisplay =\n\t\toptionValue > 0 && showPlusSymbol ? '+' + optionValue : optionValue;\n\n\treturn (\n\t\t
    \n\t\t\t
    {label}
    \n\t\t\t
    {valueDisplay}
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n}\n\nSlider.propTypes = {\n\tisInteractable: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tmin: PropTypes.number.isRequired,\n\tmax: PropTypes.number.isRequired,\n\tshowPlusSymbol: PropTypes.bool,\n\toptionContext: PropTypes.string.isRequired,\n\toptionKey: PropTypes.string.isRequired,\n\toptionValue: PropTypes.number.isRequired,\n\tsetOption: PropTypes.func.isRequired,\n};\n\nSlider.defaultProps = {\n\tshowPlusSymbol: true,\n};\n\nexport default React.memo(Slider);\n","import './Toggle.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction Toggle(props) {\n\tconst {\n\t\tisInteractable,\n\t\tlabel,\n\t\toptionContext,\n\t\toptionKey,\n\t\toptionValue,\n\t\tsetOption,\n\t} = props;\n\n\tconst classNames = ['sb-optionToggle'];\n\tclassNames.push(\n\t\toptionValue === true ? 'sb-optionToggle-isOn' : 'sb-optionToggle-isOff'\n\t);\n\tif (!isInteractable) {\n\t\tclassNames.push('sb-optionToggle-isNotInteractable');\n\t}\n\n\tfunction handleClick() {\n\t\tsetOption(optionContext, optionKey, !optionValue);\n\t}\n\n\treturn (\n\t\t\n\t\t\t
    {label}
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t);\n}\n\nToggle.propTypes = {\n\tisInteractable: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\toptionContext: PropTypes.string.isRequired,\n\toptionKey: PropTypes.string.isRequired,\n\toptionValue: PropTypes.bool.isRequired,\n\tsetOption: PropTypes.func.isRequired,\n};\n\nexport default React.memo(Toggle);\n","import './SidebarOptionsPanel.scss';\n\nimport React from 'react';\n\nimport OptionPanel from '../../../../optionsPanels/_components/OptionsPanel';\n\nimport OptionsGroup from './OptionsGroup';\nimport Select from './Select';\nimport Slider from './Slider';\nimport Toggle from './Toggle';\n\nfunction getEntryComponent(type) {\n\tswitch (type) {\n\t\tcase 'optionsGroup':\n\t\t\treturn OptionsGroup;\n\t\tcase 'select':\n\t\t\treturn Select;\n\t\tcase 'slider':\n\t\t\treturn Slider;\n\t\tcase 'toggle':\n\t\t\treturn Toggle;\n\t}\n}\n\nexport default function SidebarOptionPanel(props) {\n\treturn (\n\t\t
    \n\t\t\t\n\t\t
    \n\t);\n}\n","import createAction from '../../core/createAction';\nimport * as actionTypes from './actionsTypes';\n\nexport const setOptionValue = (context, key, value) => {\n\tif (!context) {\n\t\tthrow new TypeError('Cannot set an option without a context');\n\t}\n\tif (!key) {\n\t\tthrow new TypeError('Cannot set an option without a key');\n\t}\n\tconst payload = {\n\t\tcontext,\n\t\tkey,\n\t\tvalue,\n\t};\n\treturn createAction(actionTypes.DB_OPTION_SET_OPTION_VALUE, payload);\n};\n","import Rendering from '../_components/Rendering';\nimport OptionsPanelFactory from '../../_containers/OptionsPanelFactory';\n\nimport allWidgets from '../allWidgets';\nimport {\n\tgetNonInteractableWidgets,\n\tgetHiddenWidgets,\n} from '../_state/selectors';\n\nexport default OptionsPanelFactory(\n\tallWidgets,\n\tgetNonInteractableWidgets,\n\tgetHiddenWidgets,\n\tRendering\n);\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../db/options/selectors';\nimport { setOptionValue } from '../../db/options/actions';\n\nexport default function OptionsPanelFactory(\n\tallWidgets,\n\tgetNonInteractableWidgets,\n\tgetHiddenWidgets,\n\tcomponent\n) {\n\treturn connect(\n\t\t(state) => {\n\t\t\tconst stateToProps = {\n\t\t\t\tallWidgets,\n\t\t\t\tnonInteractableWidgets: getNonInteractableWidgets(state),\n\t\t\t\thiddenWidgets: getHiddenWidgets(state),\n\t\t\t};\n\n\t\t\tlet widget;\n\t\t\tlet groupWidget;\n\n\t\t\tallWidgets.widgetsOrder.forEach((widgetId) => {\n\t\t\t\twidget = allWidgets.allWidgets[widgetId];\n\n\t\t\t\twidget.groupWidgetsOrder.forEach((groupWidgetId) => {\n\t\t\t\t\tgroupWidget = widget.allGroupWidgets[groupWidgetId];\n\n\t\t\t\t\tstateToProps[groupWidget.option.key] = getOptionValue(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tgroupWidget.option.context,\n\t\t\t\t\t\tgroupWidget.option.key\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn stateToProps;\n\t\t},\n\n\t\t{\n\t\t\tsetOption: setOptionValue,\n\t\t}\n\t)(component);\n}\n","/* eslint-disable max-lines */\nexport default {\n\twidgetsOrder: ['key', 'preferences', 'layout', 'style'],\n\n\tallWidgets: {\n\t\tkey: {\n\t\t\tlabel: 'Key',\n\t\t\ttype: 'optionsGroup',\n\t\t\ticon: 'music_note',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'transposeValue',\n\t\t\t\t'harmonizeAccidentals',\n\t\t\t\t'preferredAccidentals',\n\t\t\t],\n\t\t\tallGroupWidgets: {\n\t\t\t\ttransposeValue: {\n\t\t\t\t\tlabel: 'Transpose',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: -11,\n\t\t\t\t\t\tmax: 11,\n\t\t\t\t\t\tshowPlusSymbol: true,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songPreferences',\n\t\t\t\t\t\tkey: 'transposeValue',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tharmonizeAccidentals: {\n\t\t\t\t\tlabel: 'Harmonize accidentals',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songPreferences',\n\t\t\t\t\t\tkey: 'harmonizeAccidentals',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tpreferredAccidentals: {\n\t\t\t\t\tlabel: 'Preferred accidentals',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'preferredAccidentalsAuto',\n\t\t\t\t\t\t\t\tlabel: 'Auto',\n\t\t\t\t\t\t\t\tvalue: 'auto',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'preferredAccidentalsSharp',\n\t\t\t\t\t\t\t\tlabel: '♯',\n\t\t\t\t\t\t\t\tvalue: 'sharp',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'preferredAccidentalsFlat',\n\t\t\t\t\t\t\t\tlabel: '♭',\n\t\t\t\t\t\t\t\tvalue: 'flat',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songPreferences',\n\t\t\t\t\t\tkey: 'preferredAccidentals',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tpreferences: {\n\t\t\tlabel: 'Preferences',\n\t\t\ttype: 'optionsGroup',\n\t\t\ticon: 'tune',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'chartFormat',\n\t\t\t\t'chartType',\n\t\t\t\t'alignChordsWithLyrics',\n\t\t\t\t'alignBars',\n\t\t\t\t'autoRepeatChords',\n\t\t\t\t'expandSectionCopy',\n\t\t\t],\n\t\t\tallGroupWidgets: {\n\t\t\t\tchartFormat: {\n\t\t\t\t\tlabel: 'Export format',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'formatChordMark',\n\t\t\t\t\t\t\t\tlabel: 'ChordMark',\n\t\t\t\t\t\t\t\tvalue: 'chordmark',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'formatChordMarkSrc',\n\t\t\t\t\t\t\t\tlabel: 'ChordMark (Source)',\n\t\t\t\t\t\t\t\tvalue: 'chordmarkSrc',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'formatChordpro',\n\t\t\t\t\t\t\t\tlabel: 'ChordPro',\n\t\t\t\t\t\t\t\tvalue: 'chordpro',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'chartFormat',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tchartType: {\n\t\t\t\t\tlabel: 'Chart type',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'typedisplayAll',\n\t\t\t\t\t\t\t\tlabel: 'Complete',\n\t\t\t\t\t\t\t\tvalue: 'all',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'typedisplayLyrics',\n\t\t\t\t\t\t\t\tlabel: 'Lyrics only',\n\t\t\t\t\t\t\t\tvalue: 'lyrics',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'typedisplayChords',\n\t\t\t\t\t\t\t\tlabel: 'Chords only',\n\t\t\t\t\t\t\t\tvalue: 'chords',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'typedisplayChordsFirstLyricLine',\n\t\t\t\t\t\t\t\tlabel: 'Chords + First lyric line',\n\t\t\t\t\t\t\t\tvalue: 'chordsFirstLyricLine',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'chartType',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\talignChordsWithLyrics: {\n\t\t\t\t\tlabel: 'Align chords with lyrics',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'alignChordsWithLyrics',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\talignBars: {\n\t\t\t\t\tlabel: 'Align bars',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'alignBars',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tautoRepeatChords: {\n\t\t\t\t\tlabel: 'Auto repeat chords',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'autoRepeatChords',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\texpandSectionCopy: {\n\t\t\t\t\tlabel: 'Expand copied sections',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'expandSectionCopy',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tlayout: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Layout',\n\t\t\ticon: 'view_compact',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'columnsCount',\n\t\t\t\t'columnBreakOnParagraph',\n\t\t\t\t'documentMargins',\n\t\t\t],\n\t\t\tallGroupWidgets: {\n\t\t\t\tcolumnsCount: {\n\t\t\t\t\tlabel: 'Columns',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: 1,\n\t\t\t\t\t\tmax: 4,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'columnsCount',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tcolumnBreakOnParagraph: {\n\t\t\t\t\tlabel: 'Break on paragraph',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'columnBreakOnParagraph',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tdocumentMargins: {\n\t\t\t\t\tlabel: 'Margins',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: 1,\n\t\t\t\t\t\tmax: 5,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'documentMargins',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tstyle: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Style',\n\t\t\ticon: 'format_size',\n\n\t\t\tgroupWidgetsOrder: ['fontSize', 'chordsColor', 'highlightChords'],\n\n\t\t\tallGroupWidgets: {\n\t\t\t\tfontSize: {\n\t\t\t\t\tlabel: 'Font size',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: -5,\n\t\t\t\t\t\tmax: +5,\n\t\t\t\t\t\tshowPlusSymbol: true,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'fontSize',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tchordsColor: {\n\t\t\t\t\tlabel: 'Chords color',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColor',\n\t\t\t\t\t\t\t\tlabel: 'Base',\n\t\t\t\t\t\t\t\tvalue: 'base',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColorRed',\n\t\t\t\t\t\t\t\tlabel: 'Red',\n\t\t\t\t\t\t\t\tvalue: 'red',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColorYellow',\n\t\t\t\t\t\t\t\tlabel: 'Yellow',\n\t\t\t\t\t\t\t\tvalue: 'yellow',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColorGreen',\n\t\t\t\t\t\t\t\tlabel: 'Green',\n\t\t\t\t\t\t\t\tvalue: 'green',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'chordsColor',\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\thighlightChords: {\n\t\t\t\t\tlabel: 'Highlight Chords',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'songFormatting',\n\t\t\t\t\t\tkey: 'highlightChords',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n};\n","import _difference from 'lodash/difference';\n\nimport editorModeOptions from '../../../db/options/editorModeOptions'; // duh!\nimport { getEditorMode } from '../../../ui/layout/app/_state/selectors';\nimport { getSelectedId } from '../../../fileManager/_state/selectors';\nimport {\n\tgetOptionsDefaults,\n\tgetOptionValue,\n} from '../../../db/options/selectors';\n\nexport const getNonInteractableWidgets = (state) => {\n\tconst nonInteractableWidgets = [];\n\n\tconst allOptions = Object.keys({\n\t\t...getOptionsDefaults(state, 'songFormatting'),\n\t\t...getOptionsDefaults(state, 'songPreferences'),\n\t});\n\n\tconst selectedId = getSelectedId(state);\n\tif (!selectedId) {\n\t\treturn allOptions;\n\t}\n\n\tconst editorMode = getEditorMode(state);\n\n\tconst nonInteractableOptions = _difference(\n\t\tallOptions,\n\t\teditorModeOptions[editorMode]\n\t);\n\n\tnonInteractableWidgets.push(...nonInteractableOptions);\n\n\t// specific rules\n\tconst chartType = getOptionValue(state, 'songFormatting', 'chartType');\n\tif (chartType === 'lyrics') {\n\t\tnonInteractableWidgets.push('alignChordsWithLyrics');\n\t\tnonInteractableWidgets.push('alignBars');\n\t\tnonInteractableWidgets.push('autoRepeatChords');\n\t} else if (chartType === 'chords') {\n\t\tnonInteractableWidgets.push('alignChordsWithLyrics');\n\t}\n\n\tconst chartFormat = getOptionValue(state, 'songFormatting', 'chartFormat');\n\tif (['chordmarkSrc', 'chordpro'].includes(chartFormat)) {\n\t\tnonInteractableWidgets.push('chartType');\n\t\tnonInteractableWidgets.push('alignChordsWithLyrics');\n\t\tnonInteractableWidgets.push('alignBars');\n\t\tnonInteractableWidgets.push('autoRepeatChords');\n\t}\n\tif (chartFormat === 'chordmarkSrc') {\n\t\tnonInteractableWidgets.push('expandSectionCopy');\n\t}\n\n\treturn nonInteractableWidgets;\n};\n\nexport const getHiddenWidgets = (state) => {\n\tconst hiddenWidgets = [];\n\n\tconst harmonizeAccidentals = getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'harmonizeAccidentals'\n\t);\n\n\tif (!harmonizeAccidentals) {\n\t\thiddenWidgets.push('preferredAccidentals');\n\t}\n\n\treturn hiddenWidgets;\n};\n","import './Rendering.scss';\n\nimport React from 'react';\n\nimport Icon from '../../../ui/_components/Icon';\n\nimport SidebarOptionPanel from '../../../ui/sideBar/options/_components/SidebarOptionsPanel';\n\nexport default function Rendering(props) {\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n}\n","import React from 'react';\n\nimport AppLayout from '../ui/layout/app/_containers/App';\nimport FileManager from '../fileManager/_containers/FileManager';\nimport Editor from '../editor/_containers/Editor';\nimport RightBarPanel from '../optionsPanels/rendering/_containers/Rendering';\n\nexport default function Edit() {\n\tconst fm = ;\n\tconst rightBarPanel = ;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n","import UniversalRouter from 'universal-router';\nimport renderController from './renderController';\n\nimport Editor from './controllers/Editor';\n\nconst routes = [\n\t{\n\t\tpath: '/editor',\n\t\taction: () => Editor,\n\t},\n];\n\nconst universalRouter = new UniversalRouter(routes);\n\nexport default {\n\tnavigateTo(path) {\n\t\treturn universalRouter.resolve(path).then((controller) => {\n\t\t\treturn renderController(controller);\n\t\t});\n\t},\n};\n","import React from 'react';\nimport ReactDom from 'react-dom';\nimport { Provider } from 'react-redux';\n\nimport { getStore } from './state/store';\n\nimport ErrorBoundary from './ui/_components/ErrorBoundary';\n\nexport default function renderController(Controller) {\n\tReactDom.render(\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t,\n\t\tdocument.getElementById('app')\n\t);\n}\n","import '../scss/styles.scss';\n\nimport { createStore } from './state/store';\nimport registerHandlers from './registerHandlers';\nimport router from './router';\nimport addSampleContent from './addSampleContent';\n\nregisterHandlers();\n\nexport default function run() {\n\tcreateStore();\n\n\taddSampleContent();\n\n\treturn router.navigateTo('/editor');\n}\n","import { getStore } from './state/store';\n\nimport { getAllTitles } from './db/files/selectors';\nimport { importFile } from './db/files/actions';\n\nimport gettingStarted from './gettingStarted.txt';\nimport sampleSong from './sampleSong.txt';\n\nexport default function addSampleContent() {\n\tconst store = getStore();\n\tconst state = store.getState();\n\n\tconst allTitles = getAllTitles(state);\n\n\tif (allTitles.length === 0) {\n\t\tstore.dispatch(importFile('Hallelujah - Leonard Cohen', sampleSong));\n\t\tstore.dispatch(importFile('Getting started', gettingStarted));\n\t}\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_touffi_chords_charts_studio\"] = self[\"webpackChunk_touffi_chords_charts_studio\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(\"SF5+\")))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","clock","Date","now","DB_FILES_CREATE","DB_FILES_DELETE","DB_FILES_IMPORT","DB_FILES_UPDATE","DB_OPTION_SET_OPTION_VALUE","UI_LAYOUT_APP_SET_EDITOR_MODE","UI_LAYOUT_APP_TOGGLE_LEFT_BAR","UI_LAYOUT_APP_TOGGLE_RIGHT_BAR","isLeftBarCollapsed","state","ui","layout","app","isRightBarCollapsed","getEditorMode","editorMode","getSelectedId","fileManager","selected","getRenamedId","renamed","getDefaultTitle","defaultTitle","getAllTitles","createSelectorCreator","defaultMemoize","_isEqual","createDeepEqualSelector","_map","db","files","allFiles","title","id","_sortBy","o","toLowerCase","getOne","getCategoryOptions","category","file","options","Object","keys","length","_cloneDeep","getLatestModeOptions","fileOptions","allOptionsPerMode","edit","push","play","print","export","sort","a","b","updatedAt","reduce","acc","modeOptions","assign","initialState","createFile","action","payload","content","updateFile","deleteFile","updateFileOption","fullState","context","key","value","includes","optionCategory","fileState","addOption","setEditorMode","fileId","nextMode","mode","previousModeOptions","_pick","editorModeOptions","FILE_MANAGER_SELECT_FILE","FILE_MANAGER_ENABLE_RENAME","getOptionValue","values","getOptionsDefaults","defaults","setOptionValue","newState","newOptions","getModeOptions","songFormatting","defaultOptions","allEditorModeOptions","selectFile","songPreferences","defaultPreferences","newPreferences","combineSectionReducers","type","actionTypes","SONG_IMPORTER_IMPORT_CANCEL","SONG_IMPORTER_IMPORT_START","SONG_IMPORTER_SET_CONTENT","SONG_IMPORTER_SET_INPUT_FORMAT","stripTags","html","domPurify","ALLOWED_TAGS","KEEP_CONTENT","isFromWeb","isImporting","inputFormat","activeModal","songImporter","actions","transposeValue","harmonizeAccidentals","preferredAccidentals","chartFormat","chartType","alignChordsWithLyrics","alignBars","autoRepeatChords","expandSectionCopy","columnsCount","columnBreakOnParagraph","documentMargins","fontSize","chordsColor","highlightChords","store","createStore","storeEnhancers","composeWithDevTools","applyMiddleware","thunkMiddleware","persistedState","serializedState","localStorage","getItem","JSON","parse","err","loadState","rendering","_defaultsDeep","seed","createReduxStore","allReducers","subscribe","stringify","setItem","saveState","getState","getStore","createAction","TypeError","songImporterHandlers","message","buildTitle","artist","dispatch","actionsTypes","startImportFromWeb","source","chordChart","songTitle","_handleMessage","e","allHandlers","window","origin","location","data","ErrorBoundary","props","error","errorInfo","this","setState","className","style","whiteSpace","open","toString","componentStack","children","React","propTypes","PropTypes","Logo","src","logoImg","alt","Icon","iconName","join","NavEntry","label","icon","isActive","isDisabled","classNames","onClick","Nav","currentMode","allEntries","selectedId","map","entry","Button","buttonName","allClassNames","disabled","name","defaultProps","UserGuide","focus","Versions","versions","importFile","uuidv4","getContent","getInputFormat","getTitle","Modal","closeModal","useEffect","handleKeyboard","addEventListener","removeEventListener","Header","cancelImport","chordMarkContent","headerTitle","getSongTitle","substr","lastIndexOf","isOversized","size","isTextFile","indexOf","getFileTooBigMsg","actualSize","filesize","round","getWrongFileTypeMsg","getNoFileSelectedMsg","fileList","Promise","resolve","reject","text","then","fileContent","catch","FilePicker","setContent","htmlFor","onChange","ev","getUploadedFile","target","accept","Input","allClasses","PreviewError","InputFormatEntry","setInputFormat","allInputClasses","allLabelClasses","checked","InputFormatSelector","disableAll","rendered","allLines","chordSheetJs2ChordMark","song","formatAllParagraphs","bodyParagraphs","paragraph","formatParagraph","lines","line","formatLine","parts","formatChordLine","formatLyricLine","formatTagLine","filter","i","part","trimRight","lineHasChords","items","chordLine","item","itemHasChord","chords","trim","lineHasLyrics","lyricsLine","itemHasLyric","itemHasLeftPadding","lyrics","itemHasRightPadding","lineHasTag","tagValue","replace","sectionLabelsMapping","adlib","bridge","chorus","interlude","intro","introduction","outro","prechorus","solo","some","ChordLyricsPair","Tag","isRenderable","trimLeft","ultimateGuitar2ChordMark","ugChordChartRaw","ugChordChart","ChordSheetJS","getConverter","parser","input","converter","SongImporter","input2ChordMark","connect","App","toggleLeftBar","toggleRightBar","leftBar","rightBar","leftBarClassNames","rightBarClassNames","allNavEntries","renderAsHtml","songTxt","renderOptions","useChartFormat","render","outputFormat","toHtml","customRenderer","chordMark2ChordPro","chordProTxt","renderSong","chordMarkHtml","split","parsed","parseSong","renderSongCm","exportSelectedFileAsText","selectedFile","accidentalsType","renderAsText","fileExt","fileName","blob","Blob","endings","saveAs","ModalConfirm","confirmAction","confirmTitle","cancelAction","cancelTitle","DeleteConfirmModal","isDeleting","setIsDeleting","FileActionEntry","FileActions","enableRename","startImport","exportAsText","allActions","printFile","FileEntry","useState","setTitle","isSelected","isRenamed","classList","inputRef","saveTitle","newTitle","current","scrollLeft","onDoubleClick","select","ref","readOnly","autoFocus","onBlur","onFocus","onKeyPress","which","preventDefault","getSelection","removeAllRanges","FileManager","allTitles","setTimeout","isRequired","escapeHTML","unescaped","SongRenderer","dangerouslySetInnerHTML","__html","EditorPreview","Schema","nodes","doc","group","parseDOM","tag","toDOM","hard_break","inline","selectable","stateToText","toJSON","toSafeHtml","dirty","ProseMirrorEditorView","selectedFileId","editorContent","editorView","useRef","editorDom","previousFileId","editorExists","dom","parentNode","destroyEditor","removeChild","editorState","EditorState","pmDOMParser","editorSchema","div","document","createElement","innerHTML","preserveWhitespace","plugins","pmHistory","keymap","undo","redo","baseKeymap","createEditorState","EditorView","dispatchTransaction","transaction","applyTransaction","transactions","updateState","tr","docChanged","createEditorView","appendChild","EditorLayout","ExportPreview","PlayRenderer","Page","pageHeader","allColumnsLines","documentSize","allSectionsRendered","columnLines","index","columnLinesTxt","pageClasses","pageContentWrapperClasses","PageHeader","cssClasses","mapLinesToColumns","allLinesWithHeight","firstPageHeight","normalPageHeight","noEmptyLinesOnColumnStart","noOrphanTextLine","allPagesColumns","pageIndex","columnIndex","maxColumnHeight","getMaxColumnHeight","currentColumnHeight","flushBuffer","buffer","forEach","shouldChangeColumn","height","changeColumn","nextHeight","shouldChangePage","insert","insertOnNextColumn","fitsOnCurrentColumn","bufferHeight","fitsOnNextColumn","get","layoutFactory","lineIndex","isEmptyLine","shouldRenderLine","currentLine","nextLine","wouldProduceOrphanTextLine","hasClass","isChordLine","isTextLine","isEndOfParagraph","isBreakable","getDimensionsFromDom","component","measuringFn","container","add","body","ReactDOM","measure","padColumns","columnCount","allColumns","getOffsetHeight","element","offsetHeight","getClientHeight","clientHeight","cssSelectors","getAllLinesHeight","allLinesHeight","querySelectorAll","pageContent","querySelector","AllPages","setAllPagesColumns","useLayoutEffect","getDimensions","pageOptions","getPagesHeight","mapped","allPagesRendered","pageColumns","PrintPreview","Editor","OptionsPanel","widget","groupWidget","WidgetComponent","GroupComponent","isGroupInteractable","isGroupWidgetInteractable","renderedGroupWidgets","allWidgets","nonInteractableWidgets","hiddenWidgets","setOption","getEntryComponent","renderedWidgets","widgetsOrder","widgetId","groupWidgetsOrder","groupWidgetId","allGroupWidgets","renderWidget","isInteractable","localWidget","optionContext","option","optionKey","optionValue","typeOptions","OptionsGroup","isOpened","setIsOpened","shouldBeInteractable","SelectChoice","checkIcon","Select","isOpen","setIsOpen","allChoices","renderedChoices","choice","activeLabel","find","selectLabel","Slider","min","max","showPlusSymbol","valueDisplay","Number","parseInt","Toggle","SidebarOptionPanel","getNonInteractableWidgets","getHiddenWidgets","stateToProps","preferences","allOptions","nonInteractableOptions","_difference","Edit","fm","rightBarPanel","routes","path","universalRouter","UniversalRouter","controller","Controller","ReactDom","getElementById","sampleSong","gettingStarted","addSampleContent","router","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","splice","r","n","getter","__esModule","d","definition","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","nmd","paths","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","Error","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/packages/chord-charts-studio/build/vendors.493c19c5bf42afc6ee19.js b/packages/chord-charts-studio/build/vendors.1c1ff44e8eff34a1438d.js similarity index 99% rename from packages/chord-charts-studio/build/vendors.493c19c5bf42afc6ee19.js rename to packages/chord-charts-studio/build/vendors.1c1ff44e8eff34a1438d.js index 3e8fb8e1..48459e10 100644 --- a/packages/chord-charts-studio/build/vendors.493c19c5bf42afc6ee19.js +++ b/packages/chord-charts-studio/build/vendors.1c1ff44e8eff34a1438d.js @@ -1,3 +1,3 @@ -/*! For license information please see vendors.493c19c5bf42afc6ee19.js.LICENSE.txt */ +/*! For license information please see vendors.1c1ff44e8eff34a1438d.js.LICENSE.txt */ (self.webpackChunk_touffi_chords_charts_studio=self.webpackChunk_touffi_chords_charts_studio||[]).push([[216],{"1C0g":t=>{var e;self,e=function(){return(()=>{var t={681:t=>{var e;self,e=function(){return(()=>{var t={1110:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''+(null!=(i=t.lambda(null!=e?a(e,"barContent"):e,e))?i:"")+""},useData:!0})},3255:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''+t.escapeExpression("function"==typeof(i=null!=(i=a(r,"barSeparator")||(null!=e?a(e,"barSeparator"):e))?i:t.hooks.helperMissing)?i.call(null!=e?e:t.nullContext||{},{name:"barSeparator",hash:{},data:o,loc:{start:{line:1,column:29},end:{line:1,column:47}}}):i)+""},useData:!0})},7132:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({1:function(t,e,r,n,o){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''+(null!=(i=t.lambda(null!=e?a(e,"chordLineOffset"):e,e))?i:"")+""},compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''+(null!=(i=a(r,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"chordLineOffset"):e,{name:"if",hash:{},fn:t.program(1,o,0),inverse:t.noop,data:o,loc:{start:{line:1,column:26},end:{line:1,column:128}}}))?i:"")+(null!=(i=t.lambda(null!=e?a(e,"chordLine"):e,e))?i:"")+""},useData:!0})},3524:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({1:function(t,e,r,n,o){var i=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''+t.escapeExpression(t.lambda(null!=e?i(e,"chordDuration"):e,e))+""},compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''+t.escapeExpression(t.lambda(null!=e?a(e,"chordSymbol"):e,e))+(null!=(i=a(r,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"chordDuration"):e,{name:"if",hash:{},fn:t.program(1,o,0),inverse:t.noop,data:o,loc:{start:{line:1,column:50},end:{line:1,column:144}}}))?i:"")+""},useData:!0})},1354:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){return' '},useData:!0})},3096:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){var i,a,s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'

    '+(null!=(i=t.lambda(null!=e?s(e,"line"):e,e))?i:"")+"

    "},useData:!0})},36:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''+(null!=(i=t.lambda(null!=e?a(e,"lyricLine"):e,e))?i:"")+""},useData:!0})},4273:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''+(null!=(i=t.lambda(null!=e?a(e,"sectionLabel"):e,e))?i:"")+""},useData:!0})},1196:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(i=t.lambda(null!=e?a(e,"song"):e,e))?i:""},useData:!0})},4604:(t,e,r)=>{var n=r(1524);t.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(t,e,r,n,o){var i,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return''+(null!=(i=t.lambda(null!=e?a(e,"timeSignature"):e,e))?i:"")+""},useData:!0})},4208:(t,e,r)=>{"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}e.__esModule=!0;var i=o(r(7060)),a=n(r(5442)),s=n(r(4936)),u=o(r(3303)),c=o(r(9657)),l=n(r(5727));function f(){var t=new i.HandlebarsEnvironment;return u.extend(t,i),t.SafeString=a.default,t.Exception=s.default,t.Utils=u,t.escapeExpression=u.escapeExpression,t.VM=c,t.template=function(e){return c.template(e,t)},t}var p=f();p.create=f,l.default(p),p.default=p,e.default=p,t.exports=e.default},7060:(t,e,r)=>{"use strict";function n(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.HandlebarsEnvironment=f;var o=r(3303),i=n(r(4936)),a=r(9228),s=r(2024),u=n(r(5324)),c=r(5434);e.VERSION="4.7.7",e.COMPILER_REVISION=8,e.LAST_COMPATIBLE_COMPILER_REVISION=7,e.REVISION_CHANGES={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};var l="[object Object]";function f(t,e,r){this.helpers=t||{},this.partials=e||{},this.decorators=r||{},a.registerDefaultHelpers(this),s.registerDefaultDecorators(this)}f.prototype={constructor:f,logger:u.default,log:u.default.log,registerHelper:function(t,e){if(o.toString.call(t)===l){if(e)throw new i.default("Arg not supported with multiple helpers");o.extend(this.helpers,t)}else this.helpers[t]=e},unregisterHelper:function(t){delete this.helpers[t]},registerPartial:function(t,e){if(o.toString.call(t)===l)o.extend(this.partials,t);else{if(void 0===e)throw new i.default('Attempting to register a partial called "'+t+'" as undefined');this.partials[t]=e}},unregisterPartial:function(t){delete this.partials[t]},registerDecorator:function(t,e){if(o.toString.call(t)===l){if(e)throw new i.default("Arg not supported with multiple decorators");o.extend(this.decorators,t)}else this.decorators[t]=e},unregisterDecorator:function(t){delete this.decorators[t]},resetLoggedPropertyAccesses:function(){c.resetLoggedProperties()}};var p=u.default.log;e.log=p,e.createFrame=o.createFrame,e.logger=u.default},2024:(t,e,r)=>{"use strict";e.__esModule=!0,e.registerDefaultDecorators=function(t){i.default(t)};var n,o=r(882),i=(n=o)&&n.__esModule?n:{default:n}},882:(t,e,r)=>{"use strict";e.__esModule=!0;var n=r(3303);e.default=function(t){t.registerDecorator("inline",(function(t,e,r,o){var i=t;return e.partials||(e.partials={},i=function(o,i){var a=r.partials;r.partials=n.extend({},a,e.partials);var s=t(o,i);return r.partials=a,s}),e.partials[o.args[0]]=o.fn,i}))},t.exports=e.default},4936:(t,e)=>{"use strict";e.__esModule=!0;var r=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function n(t,e){var o=e&&e.loc,i=void 0,a=void 0,s=void 0,u=void 0;o&&(i=o.start.line,a=o.end.line,s=o.start.column,u=o.end.column,t+=" - "+i+":"+s);for(var c=Error.prototype.constructor.call(this,t),l=0;l{"use strict";function n(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.registerDefaultHelpers=function(t){o.default(t),i.default(t),a.default(t),s.default(t),u.default(t),c.default(t),l.default(t)},e.moveHelperToHooks=function(t,e,r){t.helpers[e]&&(t.hooks[e]=t.helpers[e],r||delete t.helpers[e])};var o=n(r(2984)),i=n(r(31)),a=n(r(81)),s=n(r(691)),u=n(r(4668)),c=n(r(7245)),l=n(r(7420))},2984:(t,e,r)=>{"use strict";e.__esModule=!0;var n=r(3303);e.default=function(t){t.registerHelper("blockHelperMissing",(function(e,r){var o=r.inverse,i=r.fn;if(!0===e)return i(this);if(!1===e||null==e)return o(this);if(n.isArray(e))return e.length>0?(r.ids&&(r.ids=[r.name]),t.helpers.each(e,r)):o(this);if(r.data&&r.ids){var a=n.createFrame(r.data);a.contextPath=n.appendContextPath(r.data.contextPath,r.name),r={data:a}}return i(e,r)}))},t.exports=e.default},31:(t,e,r)=>{"use strict";e.__esModule=!0;var n,o=r(3303),i=r(4936),a=(n=i)&&n.__esModule?n:{default:n};e.default=function(t){t.registerHelper("each",(function(t,e){if(!e)throw new a.default("Must pass iterator to #each");var n,i=e.fn,s=e.inverse,u=0,c="",l=void 0,f=void 0;function p(e,r,n){l&&(l.key=e,l.index=r,l.first=0===r,l.last=!!n,f&&(l.contextPath=f+e)),c+=i(t[e],{data:l,blockParams:o.blockParams([t[e],e],[f+e,null])})}if(e.data&&e.ids&&(f=o.appendContextPath(e.data.contextPath,e.ids[0])+"."),o.isFunction(t)&&(t=t.call(this)),e.data&&(l=o.createFrame(e.data)),t&&"object"==typeof t)if(o.isArray(t))for(var d=t.length;u{"use strict";e.__esModule=!0;var n,o=r(4936),i=(n=o)&&n.__esModule?n:{default:n};e.default=function(t){t.registerHelper("helperMissing",(function(){if(1!==arguments.length)throw new i.default('Missing helper: "'+arguments[arguments.length-1].name+'"')}))},t.exports=e.default},691:(t,e,r)=>{"use strict";e.__esModule=!0;var n,o=r(3303),i=r(4936),a=(n=i)&&n.__esModule?n:{default:n};e.default=function(t){t.registerHelper("if",(function(t,e){if(2!=arguments.length)throw new a.default("#if requires exactly one argument");return o.isFunction(t)&&(t=t.call(this)),!e.hash.includeZero&&!t||o.isEmpty(t)?e.inverse(this):e.fn(this)})),t.registerHelper("unless",(function(e,r){if(2!=arguments.length)throw new a.default("#unless requires exactly one argument");return t.helpers.if.call(this,e,{fn:r.inverse,inverse:r.fn,hash:r.hash})}))},t.exports=e.default},4668:(t,e)=>{"use strict";e.__esModule=!0,e.default=function(t){t.registerHelper("log",(function(){for(var e=[void 0],r=arguments[arguments.length-1],n=0;n{"use strict";e.__esModule=!0,e.default=function(t){t.registerHelper("lookup",(function(t,e,r){return t?r.lookupProperty(t,e):t}))},t.exports=e.default},7420:(t,e,r)=>{"use strict";e.__esModule=!0;var n,o=r(3303),i=r(4936),a=(n=i)&&n.__esModule?n:{default:n};e.default=function(t){t.registerHelper("with",(function(t,e){if(2!=arguments.length)throw new a.default("#with requires exactly one argument");o.isFunction(t)&&(t=t.call(this));var r=e.fn;if(o.isEmpty(t))return e.inverse(this);var n=e.data;return e.data&&e.ids&&((n=o.createFrame(e.data)).contextPath=o.appendContextPath(e.data.contextPath,e.ids[0])),r(t,{data:n,blockParams:o.blockParams([t],[n&&n.contextPath])})}))},t.exports=e.default},6547:(t,e,r)=>{"use strict";e.__esModule=!0,e.createNewLookupObject=function(){for(var t=arguments.length,e=Array(t),r=0;r{"use strict";e.__esModule=!0,e.createProtoAccessControl=function(t){var e=Object.create(null);e.constructor=!1,e.__defineGetter__=!1,e.__defineSetter__=!1,e.__lookupGetter__=!1;var r=Object.create(null);return r.__proto__=!1,{properties:{whitelist:n.createNewLookupObject(r,t.allowedProtoProperties),defaultValue:t.allowProtoPropertiesByDefault},methods:{whitelist:n.createNewLookupObject(e,t.allowedProtoMethods),defaultValue:t.allowProtoMethodsByDefault}}},e.resultIsAllowed=function(t,e,r){return a("function"==typeof t?e.methods:e.properties,r)},e.resetLoggedProperties=function(){Object.keys(i).forEach((function(t){delete i[t]}))};var n=r(6547),o=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}(r(5324)),i=Object.create(null);function a(t,e){return void 0!==t.whitelist[e]?!0===t.whitelist[e]:void 0!==t.defaultValue?t.defaultValue:(function(t){!0!==i[t]&&(i[t]=!0,o.log("error",'Handlebars: Access has been denied to resolve the property "'+t+'" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'))}(e),!1)}},1208:(t,e)=>{"use strict";e.__esModule=!0,e.wrapHelper=function(t,e){return"function"!=typeof t?t:function(){return arguments[arguments.length-1]=e(arguments[arguments.length-1]),t.apply(this,arguments)}}},5324:(t,e,r)=>{"use strict";e.__esModule=!0;var n=r(3303),o={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(t){if("string"==typeof t){var e=n.indexOf(o.methodMap,t.toLowerCase());t=e>=0?e:parseInt(t,10)}return t},log:function(t){if(t=o.lookupLevel(t),"undefined"!=typeof console&&o.lookupLevel(o.level)<=t){var e=o.methodMap[t];console[e]||(e="log");for(var r=arguments.length,n=Array(r>1?r-1:0),i=1;i{"use strict";e.__esModule=!0,e.default=function(t){var e=void 0!==r.g?r.g:window,n=e.Handlebars;t.noConflict=function(){return e.Handlebars===t&&(e.Handlebars=n),t}},t.exports=e.default},9657:(t,e,r)=>{"use strict";e.__esModule=!0,e.checkRevision=function(t){var e=t&&t[0]||1,r=s.COMPILER_REVISION;if(!(e>=s.LAST_COMPATIBLE_COMPILER_REVISION&&e<=s.COMPILER_REVISION)){if(e{"use strict";function r(t){this.string=t}e.__esModule=!0,r.prototype.toString=r.prototype.toHTML=function(){return""+this.string},e.default=r,t.exports=e.default},3303:(t,e)=>{"use strict";e.__esModule=!0,e.extend=a,e.indexOf=function(t,e){for(var r=0,n=t.length;r":">",'"':""","'":"'","`":"`","=":"="},n=/[&<>"'`=]/g,o=/[&<>"'`=]/;function i(t){return r[t]}function a(t){for(var e=1;e{t.exports=r(4208).default},6013:function(t){var e;"undefined"!=typeof self&&self,e=function(){return(()=>{var t={8424:(t,e,r)=>{"use strict";function n(t,e){return t.reduce((function(t,e){return t?e(t):null}),e)}r.r(e),r.d(e,{chordParserFactory:()=>De,chordRendererFactory:()=>dr}),r(2222),r(7327),r(9554),r(6699),r(8309),r(2023),r(4747),r(5827);var o=r(361),i=r.n(o);r(5212);const a=function(t){if(!Array.isArray(t))throw new TypeError("customFilters should be given as an array");if(t.some((function(t){return"function"!=typeof t})))throw new TypeError("The given filter is not a function");return!0};function s(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function u(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;return{input:{symbol:e},normalized:{},formatted:{},parserConfiguration:i()(t)}}function Nt(t){return function(t){if(Array.isArray(t))return Rt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Rt(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Rt(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Rt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0)throw new Q(t,a);return n}(e)),e.input.modifiers=r,e.normalized.intervals=function(t,e){return t.includes(ye.power)?["1","5"]:t.includes(ye.bass)?["1"]:qt()(["1"].concat(be(function(t){var e=[];return t.includes(ye.omit3)?[]:(it(t,[ye.sus,ye.sus2])||(ke(t)?t.includes(ye.eleventh)||e.push("3"):e.push("b3")),t.includes(ye.add3)&&e.push("3"),e)}(t)),be(function(t){var e=[];return it(t,[ye.sus,ye.add4])&&e.push("4"),e}(t)),be(function(t,e){var r=[];return t.includes(ye.omit5)?[]:((it(t,[ye.dim,ye.halfDim,ye.fifthFlat])||Oe(t,e,"b5"))&&r.push("b5"),(it(t,[ye.aug,ye.fifthSharp])||Oe(t,e,"#5"))&&r.push("#5"),r.length||t.includes(ye.thirteenthFlat)||r.push("5"),r)}(t,e)),be(function(t){var e=[];return it(t,[ye.addb6])&&e.push("b6"),!it(t,[ye.add6,ye.add69])||Ee(t)||it(t,[ye.halfDim])||e.push("6"),e}(t)),be(function(t){var e=[];return it(t,[ye.alt])&&e.push("b7"),it(t,[ye.seventh,ye.halfDim])?t.includes(ye.dim)?e.push("bb7"):t.includes(ye.halfDim)?e.push("b7"):e.push(Se(t)):it(t,[ye.ninth,ye.eleventh,ye.thirteenth])&&e.push(Se(t)),t.includes(ye.add7)&&e.push("7"),e}(t)),be(function(t,e){var r=[];return it(t,[ye.add69,ye.ninth,ye.eleventh,ye.thirteenth])&&st(t,[ye.ninthFlat,ye.ninthSharp])&&r.push("9"),it(t,[ye.sus2,ye.add9])&&r.push("9"),(it(t,[ye.ninthFlat])||Oe(t,e,"b9"))&&r.push("b9"),(it(t,[ye.ninthSharp])||Oe(t,e,"#9"))&&r.push("#9"),r}(t,e)),be(function(t,e){var r=[];return(it(t,[ye.thirteenth])&&!ke(t)||it(t,[ye.eleventh,ye.add11]))&&r.push("11"),(it(t,[ye.eleventhSharp])||Oe(t,e,"#11"))&&r.push("#11"),r}(t,e)),be(function(t,e){var r=[];return(it(t,[ye.add13,ye.thirteenth])||it(t,[ye.add6,ye.add69])&&Ee(t)||it(t,[ye.add6,ye.add69])&&it(t,[ye.halfDim]))&&r.push("13"),(it(t,[ye.thirteenthFlat])||Oe(t,e,"b13"))&&r.push("b13"),r}(t,e)))).sort((function(t,e){return ge[t]-ge[e]}))}(r,t),e.normalized.semitones=e.normalized.intervals.map((function(t){return ge[t]})).sort((function(t,e){return t-e})),e.normalized.intents=function(t){return{major:ke(t),eleventh:t.includes(ye.eleventh),alt:t.includes(ye.alt)}}(r),e}function Se(t){return t.includes(ye.ma)?"7":"b7"}function Oe(t,e,r){return t.includes(ye.alt)&&e.includes(r)}function ke(t){return st(t,[ye.mi,ye.dim,ye.dim7,ye.halfDim])}function Ee(t){return it(t,[ye.seventh,ye.ninth,ye.eleventh,ye.thirteenth])}function _e(t){return t.replace(/[.\-*+?^${}()|[\]\\]/g,"\\$&")}function Ce(t){return function(t){if(Array.isArray(t))return je(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return je(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?je(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function je(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0}function Ne(t){return Re(new Y,t)}function Re(t,e){return{type:t.name,chord:t.chord,message:t.message,notationSystem:e}}const De=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=["b5","#5","b9","#9","#11","b13"],r=["english","german","latin"],o=t.notationSystems,s=void 0===o?i()(r):o,u=t.altIntervals,c=void 0===u?i()(e):u,l=t.customFilters,f=void 0===l?[]:l;return Pe(c,e),Ae(s,r),a(f),p;function p(e){var r=[];if(!Me(e)){var o=new K;r.push(Re(o))}var a,u,l,p=i()(L).filter((function(t){return s.includes(t.name)}));if(!r.length)for(;p.length&&!a;){l=p.shift(),u=[Mt.bind(null,t),ae.bind(null,l.notes),Ct,we.bind(null,c),lt,Bt,te,Ot,zt].concat(Ce(f));try{(a=n(u,e))?a.input.notationSystem=l.name:r.push(Ne(l.name))}catch(o){r.push(Re(o,l.name))}}return a||{error:r}}};function Ie(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Le(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"none",e=arguments.length>1?arguments[1]:void 0;if("none"===t)return e;var r={max:["4","b5","#5","6","bb7","b7","7","b9","9","#9","11","#11","b13","13"],core:["4","b9","9","#9","11","#11","b13","13"]},o=Ye()(e.normalized.intervals,r[t]);st(o,["b3","3"])&&o.push(e.normalized.intents.major?"3":"b3"),st(o,["b5","5","#5"])&&o.push("5"),e.normalized.intervals=o,e.normalized.semitones=o.map((function(t){return ge[t]})),e.normalized.intents.eleventh=!1,e.normalized.intents.alt=!1,"max"===t&&delete e.normalized.bassNote;var i=[te,Ot,zt];return n(i,e)}var Xe=r(3137),Qe=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],Ze={"C#":"Db","D#":"Eb","F#":"Gb","G#":"Ab","A#":"Bb"},tr=r.n(Xe)()(Ze);function er(t,e,r){var n=r.normalized,o=n.rootNote,i=n.bassNote,a=nr(o);if(r.normalized.rootNote=rr(a,t,e),r.formatted.rootNote=r.normalized.rootNote,i){var s=nr(i);r.normalized.bassNote=rr(s,t,e),r.formatted.bassNote=r.normalized.bassNote}return zt(r)}function rr(t,e,r){var n=Qe.indexOf(t)+e,o=Math.floor(n/12),i=Qe[n-12*o];return r&&Ze[i]||i}function nr(t){return tr[t]||t}var or={german:{Ab:"As",A:"A","A#":"Ais",Bb:"Hes",B:"H",C:"C","C#":"Cis",Db:"Des",D:"D","D#":"Dis",Eb:"Es",E:"E",F:"F","F#":"Fis",Gb:"Ges",G:"G","G#":"Gis"},latin:{Ab:"Lab",A:"La","A#":"La#",Bb:"Sib",B:"Si",C:"Do","C#":"Do#",Db:"Reb",D:"Re","D#":"Re#",Eb:"Mib",E:"Mi",F:"Fa","F#":"Fa#",Gb:"Solb",G:"Sol","G#":"Sol#"}},ir=Object.keys(or);function ar(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"english",e=arguments.length>1?arguments[1]:void 0,r="auto"===t?e.input.notationSystem:t;return"english"===r?e:ir.includes(r)?(e.formatted.rootNote=or[r][e.formatted.rootNote],e.formatted.bassNote&&(e.formatted.bassNote=or[r][e.formatted.bassNote]),e):null}function sr(t){if(t){var e=t.formatted,r=e.rootNote,n=e.bassNote,o=e.descriptor,i=e.chordChanges,a=r;return o&&(a+=o),i&&i.length&&(a+="("+i.join(",")+")"),n&&(a+="/"+n),a}return null}function ur(t){delete t.parserConfiguration.notationSystems;var e=i()(t),r=sr(t),n=De(t.parserConfiguration)(r);return e.input=n.input,e}function cr(t){return cr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},cr(t)}function lr(t){return function(t){if(Array.isArray(t))return fr(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return fr(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?fr(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function fr(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{},e=t.useShortNamings,r=void 0!==e&&e,o=t.simplify,s=void 0===o?"none":o,u=t.transposeValue,c=void 0===u?0:u,l=t.harmonizeAccidentals,f=void 0!==l&&l,p=t.useFlats,d=void 0!==p&&p,h=t.printer,v=void 0===h?"text":h,m=t.notationSystem,y=void 0===m?"english":m,g=t.customFilters,b=void 0===g?[]:g;a(b);var x=[];return["max","core"].includes(s)&&x.push(Je.bind(null,s)),(f||0!==c)&&x.push(er.bind(null,c,d)),r&&x.push(Ge),x.push(ar.bind(null,y)),x.push.apply(x,lr(b)),w;function w(t){if(!pr(t))return null;var e=n(x,i()(t));return"raw"===v?ur(e):sr(e)}}},3099:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},6077:(t,e,r)=>{var n=r(111);t.exports=function(t){if(!n(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},1223:(t,e,r)=>{var n=r(5112),o=r(30),i=r(3070),a=n("unscopables"),s=Array.prototype;null==s[a]&&i.f(s,a,{configurable:!0,value:o(null)}),t.exports=function(t){s[a][t]=!0}},1530:(t,e,r)=>{"use strict";var n=r(8710).charAt;t.exports=function(t,e,r){return e+(r?n(t,e).length:1)}},9670:(t,e,r)=>{var n=r(111);t.exports=function(t){if(!n(t))throw TypeError(String(t)+" is not an object");return t}},8533:(t,e,r)=>{"use strict";var n=r(2092).forEach,o=r(9341),i=r(9207),a=o("forEach"),s=i("forEach");t.exports=a&&s?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},1318:(t,e,r)=>{var n=r(5656),o=r(7466),i=r(1400),a=function(t){return function(e,r,a){var s,u=n(e),c=o(u.length),l=i(a,c);if(t&&r!=r){for(;c>l;)if((s=u[l++])!=s)return!0}else for(;c>l;l++)if((t||l in u)&&u[l]===r)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},2092:(t,e,r)=>{var n=r(9974),o=r(8361),i=r(7908),a=r(7466),s=r(5417),u=[].push,c=function(t){var e=1==t,r=2==t,c=3==t,l=4==t,f=6==t,p=7==t,d=5==t||f;return function(h,v,m,y){for(var g,b,x=i(h),w=o(x),S=n(v,m,3),O=a(w.length),k=0,E=y||s,_=e?E(h,O):r||p?E(h,0):void 0;O>k;k++)if((d||k in w)&&(b=S(g=w[k],k,x),t))if(e)_[k]=b;else if(b)switch(t){case 3:return!0;case 5:return g;case 6:return k;case 2:u.call(_,g)}else switch(t){case 4:return!1;case 7:u.call(_,g)}return f?-1:c||l?l:_}};t.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},1194:(t,e,r)=>{var n=r(7293),o=r(5112),i=r(7392),a=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},9341:(t,e,r)=>{"use strict";var n=r(7293);t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},9207:(t,e,r)=>{var n=r(9781),o=r(7293),i=r(6656),a=Object.defineProperty,s={},u=function(t){throw t};t.exports=function(t,e){if(i(s,t))return s[t];e||(e={});var r=[][t],c=!!i(e,"ACCESSORS")&&e.ACCESSORS,l=i(e,0)?e[0]:u,f=i(e,1)?e[1]:void 0;return s[t]=!!r&&!o((function(){if(c&&!n)return!0;var t={length:-1};c?a(t,1,{enumerable:!0,get:u}):t[1]=1,r.call(t,l,f)}))}},3671:(t,e,r)=>{var n=r(3099),o=r(7908),i=r(8361),a=r(7466),s=function(t){return function(e,r,s,u){n(r);var c=o(e),l=i(c),f=a(c.length),p=t?f-1:0,d=t?-1:1;if(s<2)for(;;){if(p in l){u=l[p],p+=d;break}if(p+=d,t?p<0:f<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:f>p;p+=d)p in l&&(u=r(u,l[p],p,c));return u}};t.exports={left:s(!1),right:s(!0)}},5417:(t,e,r)=>{var n=r(111),o=r(3157),i=r(5112)("species");t.exports=function(t,e){var r;return o(t)&&("function"!=typeof(r=t.constructor)||r!==Array&&!o(r.prototype)?n(r)&&null===(r=r[i])&&(r=void 0):r=void 0),new(void 0===r?Array:r)(0===e?0:e)}},4326:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},9920:(t,e,r)=>{var n=r(6656),o=r(3887),i=r(1236),a=r(3070);t.exports=function(t,e){for(var r=o(e),s=a.f,u=i.f,c=0;c{var n=r(5112)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(r){try{return e[n]=!1,"/./"[t](e)}catch(t){}}return!1}},8544:(t,e,r)=>{var n=r(7293);t.exports=!n((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},8880:(t,e,r)=>{var n=r(9781),o=r(3070),i=r(9114);t.exports=n?function(t,e,r){return o.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},9114:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},6135:(t,e,r)=>{"use strict";var n=r(7593),o=r(3070),i=r(9114);t.exports=function(t,e,r){var a=n(e);a in t?o.f(t,a,i(0,r)):t[a]=r}},9781:(t,e,r)=>{var n=r(7293);t.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:(t,e,r)=>{var n=r(7854),o=r(111),i=n.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},8324:t=>{t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},5268:(t,e,r)=>{var n=r(4326),o=r(7854);t.exports="process"==n(o.process)},8113:(t,e,r)=>{var n=r(5005);t.exports=n("navigator","userAgent")||""},7392:(t,e,r)=>{var n,o,i=r(7854),a=r(8113),s=i.process,u=s&&s.versions,c=u&&u.v8;c?o=(n=c.split("."))[0]+n[1]:a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(o=n[1]),t.exports=o&&+o},748:t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:(t,e,r)=>{var n=r(7854),o=r(1236).f,i=r(8880),a=r(1320),s=r(3505),u=r(9920),c=r(4705);t.exports=function(t,e){var r,l,f,p,d,h=t.target,v=t.global,m=t.stat;if(r=v?n:m?n[h]||s(h,{}):(n[h]||{}).prototype)for(l in e){if(p=e[l],f=t.noTargetGet?(d=o(r,l))&&d.value:r[l],!c(v?l:h+(m?".":"#")+l,t.forced)&&void 0!==f){if(typeof p==typeof f)continue;u(p,f)}(t.sham||f&&f.sham)&&i(p,"sham",!0),a(r,l,p,t)}}},7293:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},7007:(t,e,r)=>{"use strict";r(4916);var n=r(1320),o=r(7293),i=r(5112),a=r(2261),s=r(8880),u=i("species"),c=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),l="$0"==="a".replace(/./,"$0"),f=i("replace"),p=!!/./[f]&&""===/./[f]("a","$0"),d=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}));t.exports=function(t,e,r,f){var h=i(t),v=!o((function(){var e={};return e[h]=function(){return 7},7!=""[t](e)})),m=v&&!o((function(){var e=!1,r=/a/;return"split"===t&&((r={}).constructor={},r.constructor[u]=function(){return r},r.flags="",r[h]=/./[h]),r.exec=function(){return e=!0,null},r[h](""),!e}));if(!v||!m||"replace"===t&&(!c||!l||p)||"split"===t&&!d){var y=/./[h],g=r(h,""[t],(function(t,e,r,n,o){return e.exec===a?v&&!o?{done:!0,value:y.call(e,r,n)}:{done:!0,value:t.call(r,e,n)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),b=g[0],x=g[1];n(String.prototype,t,b),n(RegExp.prototype,h,2==e?function(t,e){return x.call(t,this,e)}:function(t){return x.call(t,this)})}f&&s(RegExp.prototype[h],"sham",!0)}},9974:(t,e,r)=>{var n=r(3099);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 0:return function(){return t.call(e)};case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,o){return t.call(e,r,n,o)}}return function(){return t.apply(e,arguments)}}},5005:(t,e,r)=>{var n=r(857),o=r(7854),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(n[t])||i(o[t]):n[t]&&n[t][e]||o[t]&&o[t][e]}},647:(t,e,r)=>{var n=r(7908),o=Math.floor,i="".replace,a=/\$([$&'`]|\d\d?|<[^>]*>)/g,s=/\$([$&'`]|\d\d?)/g;t.exports=function(t,e,r,u,c,l){var f=r+t.length,p=u.length,d=s;return void 0!==c&&(c=n(c),d=a),i.call(l,d,(function(n,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(f);case"<":a=c[i.slice(1,-1)];break;default:var s=+i;if(0===s)return n;if(s>p){var l=o(s/10);return 0===l?n:l<=p?void 0===u[l-1]?i.charAt(1):u[l-1]+i.charAt(1):n}a=u[s-1]}return void 0===a?"":a}))}},7854:(t,e,r)=>{var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},6656:t=>{var e={}.hasOwnProperty;t.exports=function(t,r){return e.call(t,r)}},3501:t=>{t.exports={}},490:(t,e,r)=>{var n=r(5005);t.exports=n("document","documentElement")},4664:(t,e,r)=>{var n=r(9781),o=r(7293),i=r(317);t.exports=!n&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:(t,e,r)=>{var n=r(7293),o=r(4326),i="".split;t.exports=n((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},9587:(t,e,r)=>{var n=r(111),o=r(7674);t.exports=function(t,e,r){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==r&&n(a=i.prototype)&&a!==r.prototype&&o(t,a),t}},2788:(t,e,r)=>{var n=r(5465),o=Function.toString;"function"!=typeof n.inspectSource&&(n.inspectSource=function(t){return o.call(t)}),t.exports=n.inspectSource},9909:(t,e,r)=>{var n,o,i,a=r(8536),s=r(7854),u=r(111),c=r(8880),l=r(6656),f=r(5465),p=r(6200),d=r(3501),h=s.WeakMap;if(a){var v=f.state||(f.state=new h),m=v.get,y=v.has,g=v.set;n=function(t,e){return e.facade=t,g.call(v,t,e),e},o=function(t){return m.call(v,t)||{}},i=function(t){return y.call(v,t)}}else{var b=p("state");d[b]=!0,n=function(t,e){return e.facade=t,c(t,b,e),e},o=function(t){return l(t,b)?t[b]:{}},i=function(t){return l(t,b)}}t.exports={set:n,get:o,has:i,enforce:function(t){return i(t)?o(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!u(e)||(r=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}}},3157:(t,e,r)=>{var n=r(4326);t.exports=Array.isArray||function(t){return"Array"==n(t)}},4705:(t,e,r)=>{var n=r(7293),o=/#|\.prototype\./,i=function(t,e){var r=s[a(t)];return r==c||r!=u&&("function"==typeof e?n(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},s=i.data={},u=i.NATIVE="N",c=i.POLYFILL="P";t.exports=i},111:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},1913:t=>{t.exports=!1},7850:(t,e,r)=>{var n=r(111),o=r(4326),i=r(5112)("match");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},133:(t,e,r)=>{var n=r(7293);t.exports=!!Object.getOwnPropertySymbols&&!n((function(){return!String(Symbol())}))},8536:(t,e,r)=>{var n=r(7854),o=r(2788),i=n.WeakMap;t.exports="function"==typeof i&&/native code/.test(o(i))},3929:(t,e,r)=>{var n=r(7850);t.exports=function(t){if(n(t))throw TypeError("The method doesn't accept regular expressions");return t}},3009:(t,e,r)=>{var n=r(7854),o=r(3111).trim,i=r(1361),a=n.parseInt,s=/^[+-]?0[Xx]/,u=8!==a(i+"08")||22!==a(i+"0x16");t.exports=u?function(t,e){var r=o(String(t));return a(r,e>>>0||(s.test(r)?16:10))}:a},30:(t,e,r)=>{var n,o=r(9670),i=r(6048),a=r(748),s=r(3501),u=r(490),c=r(317),l=r(6200),f=l("IE_PROTO"),p=function(){},d=function(t){return"