diff --git a/jest.config.base.js b/jest.config.base.js index 7b1c2720..a80ae073 100644 --- a/jest.config.base.js +++ b/jest.config.base.js @@ -22,7 +22,9 @@ module.exports = { '\\.svg': 'jest-text-transformer', }, // whitelisting local modules in the node_modules folder - transformIgnorePatterns: ['.*(node_modules)(?!.*chord-mark.*).*$'], + transformIgnorePatterns: [ + '.*(node_modules)(?!.*chord-(symbol|mark).*).*$', + ], moduleNameMapper: { '\\.(css|scss)$': '/tests/styleMock.js', diff --git a/package.json b/package.json index 28d09193..2f0c9bbf 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "@size-limit/preset-app": "^8.1.0", "@size-limit/webpack": "^8.1.0", "babel-jest": "^29.2.1", - "babel-loader": "^8.2.2", + "babel-loader": "^9.1.2", "clean-webpack-plugin": "^4.0.0", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.5.1", @@ -41,7 +41,7 @@ "terser-webpack-plugin": "^5.1.4", "webpack": "^5.36.2", "webpack-bundle-analyzer": "^4.4.2", - "webpack-cli": "^4.7.2", + "webpack-cli": "^5.0.1", "webpack-dev-server": "^4.7.2", "webpack-merge": "^5.8.0" }, diff --git a/packages/chord-chart-studio/SLOC b/packages/chord-chart-studio/SLOC index 9dfe05f0..fcc36ddf 100644 --- a/packages/chord-chart-studio/SLOC +++ b/packages/chord-chart-studio/SLOC @@ -2,14 +2,14 @@ Source code: ---------- Result ------------ - Physical : 6254 - Source : 5180 + Physical : 6245 + Source : 5174 Comment : 132 Single-line comment : 63 Block comment : 69 Mixed : 9 Empty block comment : 0 - Empty : 951 + Empty : 948 To Do : 0 Number of files read : 142 @@ -20,14 +20,14 @@ Tests: ---------- Result ------------ - Physical : 7209 - Source : 5926 + Physical : 7156 + Source : 5880 Comment : 67 Single-line comment : 60 Block comment : 7 Mixed : 10 Empty block comment : 0 - Empty : 1226 + Empty : 1219 To Do : 0 Number of files read : 65 @@ -38,14 +38,14 @@ Total: ---------- Result ------------ - Physical : 13463 - Source : 11106 + Physical : 13401 + Source : 11054 Comment : 199 Single-line comment : 123 Block comment : 76 Mixed : 19 Empty block comment : 0 - Empty : 2177 + Empty : 2167 To Do : 0 Number of files read : 207 diff --git a/packages/chord-chart-studio/build/css/main.3a60932e92db6c837452.css b/packages/chord-chart-studio/build/css/main.3a60932e92db6c837452.css new file mode 100644 index 00000000..fe089969 --- /dev/null +++ b/packages/chord-chart-studio/build/css/main.3a60932e92db6c837452.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}.theme-dark .link1{color:#fabf2b}.theme-dark .link1:hover{color:#fbce5d}.theme-dark .link1:active{color:#fcdd8f}::-webkit-scrollbar{height:10px;width:10px}.theme-dark ::-webkit-scrollbar,.theme-light ::-webkit-scrollbar{background-color:red}.theme-dark ::-webkit-scrollbar-corner,.theme-dark ::-webkit-scrollbar-track{background-color:#293132}::-webkit-scrollbar-thumb{border-radius:100vw}.theme-light ::-webkit-scrollbar-thumb{border:3px solid}.theme-dark ::-webkit-scrollbar-thumb{background-color:#a8a8a8;border:3px solid #293132}.theme-dark ::-webkit-scrollbar-thumb:hover{background-color:#c1c1c1}@supports(scrollbar-color:white black){*{scrollbar-width:thin}.theme-dark *{scrollbar-color:#a8a8a8 #293132}}.cmTheme-dark1{background-color:#293132}.cmTheme-dark1 .cmSong{color:#f4f4f4;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-dark1 .cmSong p{margin:0}.cmTheme-dark1 .cmSectionLabel{color:#67d3ff;font-weight:700}.cmTheme-dark1 .cmSectionMultiplier{color:#ed7bff}.cmTheme-dark1 .cmKeyDeclaration,.cmTheme-dark1 .cmTimeSignature{color:#a7ff7b;font-weight:700}.cmTheme-dark1 .cmChordLine{color:#fabf2b}.cmTheme-dark1 .cmBarSeparator{opacity:.5}.cmTheme-dark1 .cmChordDuration{opacity:.7}.cmTheme-dark1 .cmSubBeatGroupCloser,.cmTheme-dark1 .cmSubBeatGroupOpener{font-weight:700;opacity:.8}.cmTheme-dark1 .cmChordLine-romanNumeral,.cmTheme-dark1 .cmRomanNumeral{color:#fabf2b}.cmTheme-dark1 .cmRomanNumeral-diatonic{background-color:#fabf2b;color:#303846;font-weight:700}.cmTheme-dark1 .cmRomanNumeral-borrowed{background-color:rgba(250,191,43,.7);color:#303846}.cmTheme-dark1 .cmRomanNumeral-unknown{opacity:.8}.cmTheme-dark2{background-color:#282a36}.cmTheme-dark2 .cmSong{color:#f8f8f2;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-dark2 .cmSong p{margin:0}.cmTheme-dark2 .cmSectionLabel{color:#ffb86c;font-weight:700}.cmTheme-dark2 .cmSectionMultiplier{color:#f1fa8c}.cmTheme-dark2 .cmKeyDeclaration,.cmTheme-dark2 .cmTimeSignature{color:#f1fa8c;font-weight:700}.cmTheme-dark2 .cmChordLine{color:#8be9fd}.cmTheme-dark2 .cmBarSeparator{opacity:.5}.cmTheme-dark2 .cmChordDuration{opacity:.7}.cmTheme-dark2 .cmSubBeatGroupCloser,.cmTheme-dark2 .cmSubBeatGroupOpener{font-weight:700;opacity:.8}.cmTheme-dark2 .cmChordLine-romanNumeral,.cmTheme-dark2 .cmRomanNumeral{color:#8be9fd}.cmTheme-dark2 .cmRomanNumeral-diatonic{background-color:#8be9fd;color:#303846;font-weight:700}.cmTheme-dark2 .cmRomanNumeral-borrowed{background-color:rgba(139,233,253,.7);color:#303846}.cmTheme-dark2 .cmRomanNumeral-unknown{opacity:.8}.cmTheme-dark3{background-color:#282a36}.cmTheme-dark3 .cmSong{color:#f8f8f2;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-dark3 .cmSong p{margin:0}.cmTheme-dark3 .cmSectionLabel{color:#f55;font-weight:700}.cmTheme-dark3 .cmSectionMultiplier{color:#f1fa8c}.cmTheme-dark3 .cmKeyDeclaration,.cmTheme-dark3 .cmTimeSignature{color:#8be9fd;font-weight:700}.cmTheme-dark3 .cmChordLine{color:#50fa7b}.cmTheme-dark3 .cmBarSeparator{opacity:.5}.cmTheme-dark3 .cmChordDuration{opacity:.7}.cmTheme-dark3 .cmSubBeatGroupCloser,.cmTheme-dark3 .cmSubBeatGroupOpener{font-weight:700;opacity:.8}.cmTheme-dark3 .cmChordLine-romanNumeral,.cmTheme-dark3 .cmRomanNumeral{color:#50fa7b}.cmTheme-dark3 .cmRomanNumeral-diatonic{background-color:#50fa7b;color:#303846;font-weight:700}.cmTheme-dark3 .cmRomanNumeral-borrowed{background-color:rgba(80,250,123,.7);color:#303846}.cmTheme-dark3 .cmRomanNumeral-unknown{opacity:.8}.cmTheme-text .cmSong{color:#333;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-text .cmSong p{margin:0}.cmTheme-print{background-color:#fff}.cmTheme-print .cmSong{color:#333;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;font-size:12px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-print .cmSong p{margin:0}.cmTheme-print .cmSectionLabel{font-weight:700;text-decoration:underline}.cmTheme-print .cmSectionMultiplier{font-weight:400;text-decoration:unset}.cmTheme-print .cmKeyDeclaration,.cmTheme-print .cmTimeSignature{font-weight:700}.cmTheme-print .cmBarSeparator{opacity:.5}.cmTheme-print .cmChordDuration{opacity:.7}.cmTheme-print .cmSubBeatGroupCloser,.cmTheme-print .cmSubBeatGroupOpener{font-weight:700;opacity:.8}.cmSong--fontSize-5 .cmLine{font-size:.5em;line-height:1.15em}.cmSong--fontSize-4 .cmLine{font-size:.6em;line-height:1.25em}.cmSong--fontSize-3 .cmLine{font-size:.7em;line-height:1.35em}.cmSong--fontSize-2 .cmLine{font-size:.8em;line-height:1.45em}.cmSong--fontSize-1 .cmLine{font-size:.9em;line-height:1.55em}.cmSong--fontSize1 .cmLine{font-size:1.1em;line-height:1.75em}.cmSong--fontSize2 .cmLine{font-size:1.2em;line-height:1.85em}.cmSong--fontSize3 .cmLine{font-size:1.3em;line-height:1.95em}.cmSong--fontSize4 .cmLine{font-size:1.4em;line-height:2.05em}.cmSong--fontSize5 .cmLine{font-size:1.5em;line-height:2.15em}.cmTheme-print2{background-color:#fff}.cmTheme-print2 .cmSong{color:#333;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:Menlo,Courier New,Courier,monospace;font-size:13px;font-size:14px;line-height:1.65em;line-height:1.4em;padding:10px;white-space:pre-wrap}.cmTheme-print2 .cmSong p{margin:0}.cmTheme-print2 .cmSection{border:1px solid #000;border-radius:8px;break-inside:avoid;margin:.2em 0;padding:.4em}.cmTheme-print2 .cmSection-Chorus{background-color:#ededed}.cmTheme-print2 .cmSectionLabel{font-size:.85em;font-weight:700;text-transform:uppercase}.cmTheme-print2 .cmSectionMultiplier{font-size:.95em;text-decoration:unset}.cmTheme-print2 .cmKeyDeclaration,.cmTheme-print2 .cmTimeSignature{font-weight:700}.cmTheme-print2 .cmEmptyLine{display:none}.cmTheme-print2 .cmChordLine{font-weight:bolder}.cmTheme-print2 .cmBarSeparator{opacity:.5}.cmTheme-print2 .cmChordDuration{opacity:.7}.cmTheme-print2 .cmSubBeatGroupCloser,.cmTheme-print2 .cmSubBeatGroupOpener{font-weight:700;opacity:.8}.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;max-width:250px;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;max-width:250px;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;overflow:hidden;padding:.5rem 1rem;text-align:center}.rightBar-content{flex:1 1 auto;overflow-y:scroll}.rightBar-isCollapsed .rightBar-content{cursor:pointer;overflow:hidden;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:3px solid}.theme-dark .appLayout-header{background-color:#303846;border-bottom:3px solid #fabf2b;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{box-sizing:border-box;padding:1.5rem 0 1rem;width:100%}.leftBar-isCollapsed .logo-isExpanded{display:none}.logo-img{margin:0 auto;width:70%}.logo-img svg{fill:#fff;aspect-ratio:1.25/1;display:block;margin:5px auto 10px;width:80%}.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}.mainNavEntry.mainNavEntry-isDisabled{user-select:none}.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}.versions-isExpanded a{color:inherit}.versions-isExpanded a:hover{opacity:.7}.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;user-select:none}.fileManagerAction-icon .icon{font-size:1.4rem}.fileManager-entriesList{list-style:none;padding-left:0}.fileManagerEntry{cursor:pointer;padding:.1rem 0}.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:0 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-headers{display:flex;font-size:1.2rem;height:20px;padding:3px 0;text-align:center;text-transform:uppercase}.theme-dark .songEditor-headers{background-color:#404c4e;color:hsla(0,0%,96%,.7)}.songEditor-previewHeader,.songEditor-sourceHeader{flex:0 1 50%}.songEditor{display:flex;flex-direction:row;flex-wrap:nowrap;height:calc(100% - 26px);width:100%}.songEditor-source{display:flex;flex:0 1 50%;overflow-y:scroll}.theme-dark .songEditor-source{background-color:#1e2324}.songEditor-preview{flex:0 1 50%;overflow-y:scroll}.editorPreview{box-sizing:border-box;min-height:100%;padding:.5rem}.cmTheme-fadeRepeats .cmLine--isFromAutoRepeatChords,.cmTheme-fadeRepeats .cmLine--isFromChordLineRepeater,.cmTheme-fadeRepeats .cmLine--isFromSectionCopy,.cmTheme-fadeRepeats .cmLine--isFromSectionMultiply{opacity:.5}.prosemirrorWrapper{flex:1 1 auto;padding:15px 0}.ProseMirror{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;height:100%;line-height:1.65em;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{box-sizing:border-box;min-height:100%;padding:1rem}.theme-dark .exportPreview{background-color:#293132;color:#f4f4f4}.exp-SongRenderer{color:#333;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:15px;white-space:pre-wrap}.exp-SongRenderer p{margin:0}.exp-SongRenderer .txtLine{display:block}.theme-dark .exp-SongRenderer{color:#f4f4f4!important}.playRendererWrapper1{height:100%;overflow-y:scroll;position:relative}.playRendererWrapper2{bottom:0;left:0;position:absolute;right:0;top:0}.playRenderer{box-sizing:border-box;min-height:100%}.playRenderer .cmSong{padding:0!important}.playRenderer--columns-1{column-count:1;padding:1rem}.playRenderer--columns-2{column-count:2;column-fill:auto;height:100%;padding:1rem}.playRenderer--columns-3{column-count:3;column-fill:auto;height:100%;padding:1rem}.playRenderer--columns-4{column-count:4;column-fill:auto;height:100%;padding:1rem}.printPreview{min-height:100%;overflow:hidden}.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-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;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}.cmTheme-print .cmSong{padding:0!important}.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{font-size:1.4rem;font-weight:700;padding:.5rem 1rem .5rem .5rem;user-select:none}.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-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}.sb-optionSelect.sb-optionSelect-isNotInteractable{user-select:none}.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}.sb-optionSlider.sb-optionSlider-isNotInteractable{user-select:none}.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}.sb-optionToggle.sb-optionToggle-isNotInteractable{user-select:none}.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.3a60932e92db6c837452.css.map*/ \ No newline at end of file diff --git a/packages/chord-chart-studio/build/css/main.3a60932e92db6c837452.css.map b/packages/chord-chart-studio/build/css/main.3a60932e92db6c837452.css.map new file mode 100644 index 00000000..7421397c --- /dev/null +++ b/packages/chord-chart-studio/build/css/main.3a60932e92db6c837452.css.map @@ -0,0 +1 @@ +{"version":3,"file":"css/main.3a60932e92db6c837452.css","mappings":"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","sources":["webpack://chord-chart-studio/./node_modules/normalize.css/normalize.css","webpack://chord-chart-studio/./scss/_base.scss","webpack://chord-chart-studio/./scss/abstract/_typography.scss","webpack://chord-chart-studio/./scss/abstract/mixins/_fontSize.scss","webpack://chord-chart-studio/./scss/abstract/mixins/_themify.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/dark1.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/abstract/_colors.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/abstract/_mixins.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/abstract/_variables.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/dark2.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/dark3.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/text.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/print.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/_common.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/print2.scss","webpack://chord-chart-studio/./src/ui/_components/ErrorBoundary.scss","webpack://chord-chart-studio/./scss/abstract/_spacings.scss","webpack://chord-chart-studio/./src/ui/layout/app/_components/App.scss","webpack://chord-chart-studio/./src/ui/sideBar/_components/Logo.scss","webpack://chord-chart-studio/./src/ui/layout/app/_components/Nav.scss","webpack://chord-chart-studio/./src/ui/_components/Icon.scss","webpack://chord-chart-studio/./src/ui/sideBar/_components/UserGuide.scss","webpack://chord-chart-studio/./src/ui/_components/Button.scss","webpack://chord-chart-studio/./src/ui/sideBar/_components/Versions.scss","webpack://chord-chart-studio/./src/songImporter/_components/SongImporter.scss","webpack://chord-chart-studio/./src/ui/_components/Modal.scss","webpack://chord-chart-studio/./src/fileManager/_components/FileManager.scss","webpack://chord-chart-studio/./src/editor/songEditor/_components/EditorLayout.scss","webpack://chord-chart-studio/./src/songRenderers/editorPreview/_components/EditorPreview.scss","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/ProsemirrorEditorView.scss","webpack://chord-chart-studio/./node_modules/prosemirror-view/style/prosemirror.css","webpack://chord-chart-studio/./src/songRenderers/exportPreview/_components/ExportPreview.scss","webpack://chord-chart-studio/./src/songRenderers/playRenderer/_components/PlayRenderer.scss","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/PrintPreview.scss","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/getDimensionsFromDom.scss","webpack://chord-chart-studio/./src/optionsPanels/rendering/_components/Rendering.scss","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/OptionsGroup.scss","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Select.scss","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Slider.scss","webpack://chord-chart-studio/./scss/abstract/mixins/_inputRange.scss","webpack://chord-chart-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 'abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\t// links\n\t\tlink1: cv(dark-accent),\n\t\tlink1-hover: cv(dark-accent, light10),\n\t\tlink1-active: cv(dark-accent, light20),\n\t\t// scrollbars\n\t\tscrollbar-bg: cv(dark-secondary),\n\t\tscrollbar-thumb: cv(dark-foreground, dark30),\n\t\tscrollbar-hover: cv(dark-foreground, dark20),\n\t),\n);\n\nhtml {\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\n.link1 {\n\t@include themify($themes) {\n\t\tcolor: themed('link1');\n\t}\n\n\t&:hover {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('link1-hover');\n\t\t}\n\t}\n\n\t&:active {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('link1-active');\n\t\t}\n\t}\n}\n\n// scrollbars\n::-webkit-scrollbar {\n\twidth: 10px;\n\theight: 10px;\n\t@include themify($themes) {\n\t\tbackground-color: red;\n\t}\n}\n\n::-webkit-scrollbar-track,\n::-webkit-scrollbar-corner {\n\t@include themify($themes) {\n\t\tbackground-color: themed('scrollbar-bg');\n\t}\n}\n\n::-webkit-scrollbar-thumb {\n\t@include themify($themes) {\n\t\tbackground-color: themed('scrollbar-thumb');\n\t\tborder: 3px solid themed('scrollbar-bg');\n\t}\n\tborder-radius: 100vw;\n}\n\n::-webkit-scrollbar-thumb:hover {\n\t@include themify($themes) {\n\t\tbackground-color: themed('scrollbar-hover');\n\t}\n}\n\n@supports (scrollbar-color: white black) {\n\t* {\n\t\t@include themify($themes) {\n\t\t\tscrollbar-color: themed('scrollbar-thumb') themed('scrollbar-bg');\n\t\t}\n\t\tscrollbar-width: thin;\n\t}\n}\n","@use 'sass:math';\n\n// ChordMark\n\n$cmFontStack: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n\t'Courier New', monospace;\n$cmFontSize: 13px;\n$cmLineHeight: 1.65em;\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","// 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","@import '../abstract';\n@import './common';\n\n$green: rgb(167, 255, 123);\n$blue: rgb(103, 211, 255);\n$pink: rgb(237, 123, 255);\n\n.cmTheme-dark1 {\n\tbackground-color: $ccs-secondary;\n\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: $ccs-foreground;\n\t}\n\n\t// Sections\n\t.cmSectionLabel {\n\t\tcolor: $blue;\n\t\tfont-weight: bold;\n\t}\n\t.cmSectionMultiplier {\n\t\tcolor: $pink;\n\t}\n\n\t// Time signature\n\t.cmTimeSignature {\n\t\tcolor: $green;\n\t\tfont-weight: bold;\n\t}\n\n\t// Key declaration\n\t.cmKeyDeclaration {\n\t\tcolor: $green;\n\t\tfont-weight: bold;\n\t}\n\n\t// Chordline\n\t.cmChordLine {\n\t\tcolor: $ccs-accent;\n\t}\n\n\t.cmBarSeparator {\n\t\topacity: 0.5;\n\t}\n\n\t.cmChordDuration {\n\t\topacity: 0.7;\n\t}\n\n\t.cmSubBeatGroupOpener,\n\t.cmSubBeatGroupCloser {\n\t\topacity: 0.8;\n\t\tfont-weight: bold;\n\t}\n\n\t.cmChordLine-romanNumeral,\n\t.cmRomanNumeral {\n\t\tcolor: $ccs-accent;\n\t}\n\n\t.cmRomanNumeral-diatonic {\n\t\tfont-weight: bold;\n\t\tcolor: $ccs-background;\n\t\tbackground-color: $ccs-accent;\n\t}\n\n\t.cmRomanNumeral-borrowed {\n\t\tcolor: $ccs-background;\n\t\tbackground-color: rgba($ccs-accent, 0.7);\n\t}\n\n\t.cmRomanNumeral-unknown {\n\t\topacity: 0.8;\n\t}\n}\n","// Dracula theme\n$dracula-background: #282a36;\n$dracula-selection: #44475a;\n$dracula-foreground: #f8f8f2;\n$dracula-comment: #6272a4;\n$dracula-cyan: #8be9fd;\n$dracula-green: #50fa7b;\n$dracula-orange: #ffb86c;\n$dracula-pink: #ff79c6;\n$dracula-purple: #bd93f9;\n$dracula-red: #ff5555;\n$dracula-yellow: #f1fa8c;\n\n// Chord Chart Studio\n$whiteSmoke: rgba(244, 244, 244, 1);\n$onyx: rgba(48, 56, 70, 1);\n$charcoal: rgba(46, 64, 82, 1);\n$gunMetal: rgba(41, 49, 50, 1);\n$saffron: rgba(250, 191, 43, 1);\n$bitterSweet: rgba(255, 112, 96, 1);\n$screamingGreen: rgba(116, 241, 78, 1);\n\n$ccs-foreground: $whiteSmoke;\n$ccs-background: $onyx;\n$ccs-accent: $saffron;\n$ccs-primary: $charcoal;\n$ccs-secondary: $gunMetal;\n$ccs-red: $bitterSweet;\n$ccs-yellow: $saffron;\n$ccs-green: $screamingGreen;\n","@mixin base {\n\tfont-family: $font-stack;\n\tfont-size: 13px;\n\tline-height: 1.65em;\n\tpadding: 10px;\n\twhite-space: pre-wrap;\n\n\tp {\n\t\tmargin: 0;\n\t}\n}\n","$font-stack: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n\t'Courier New', monospace;\n","@import '../abstract';\n@import './common';\n\n.cmTheme-dark2 {\n\tbackground-color: $dracula-background;\n\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: $dracula-foreground;\n\t}\n\n\t// Sections\n\t.cmSectionLabel {\n\t\tcolor: $dracula-orange;\n\t\tfont-weight: bold;\n\t}\n\t.cmSectionMultiplier {\n\t\tcolor: $dracula-yellow;\n\t}\n\n\t// Time signature\n\t.cmTimeSignature {\n\t\tcolor: $dracula-yellow;\n\t\tfont-weight: bold;\n\t}\n\n\t// Key declaration\n\t.cmKeyDeclaration {\n\t\tcolor: $dracula-yellow;\n\t\tfont-weight: bold;\n\t}\n\n\t// Chordline\n\t.cmChordLine {\n\t\tcolor: $dracula-cyan;\n\t}\n\n\t.cmBarSeparator {\n\t\topacity: 0.5;\n\t}\n\n\t.cmChordDuration {\n\t\topacity: 0.7;\n\t}\n\n\t.cmSubBeatGroupOpener,\n\t.cmSubBeatGroupCloser {\n\t\topacity: 0.8;\n\t\tfont-weight: bold;\n\t}\n\n\t.cmChordLine-romanNumeral,\n\t.cmRomanNumeral {\n\t\tcolor: $dracula-cyan;\n\t}\n\n\t.cmRomanNumeral-diatonic {\n\t\tfont-weight: bold;\n\t\tcolor: $ccs-background;\n\t\tbackground-color: $dracula-cyan;\n\t}\n\n\t.cmRomanNumeral-borrowed {\n\t\tcolor: $ccs-background;\n\t\tbackground-color: rgba($dracula-cyan, 0.7);\n\t}\n\n\t.cmRomanNumeral-unknown {\n\t\topacity: 0.8;\n\t}\n}\n","@import '../abstract';\n@import './common';\n\n.cmTheme-dark3 {\n\tbackground-color: $dracula-background;\n\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: $dracula-foreground;\n\t}\n\n\t// Sections\n\t.cmSectionLabel {\n\t\tcolor: $dracula-red;\n\t\tfont-weight: bold;\n\t}\n\t.cmSectionMultiplier {\n\t\tcolor: $dracula-yellow;\n\t}\n\n\t// Time signature\n\t.cmTimeSignature {\n\t\tcolor: $dracula-cyan;\n\t\tfont-weight: bold;\n\t}\n\n\t// Key declaration\n\t.cmKeyDeclaration {\n\t\tcolor: $dracula-cyan;\n\t\tfont-weight: bold;\n\t}\n\n\t// Chordline\n\t.cmChordLine {\n\t\tcolor: $dracula-green;\n\t}\n\n\t.cmBarSeparator {\n\t\topacity: 0.5;\n\t}\n\n\t.cmChordDuration {\n\t\topacity: 0.7;\n\t}\n\n\t.cmSubBeatGroupOpener,\n\t.cmSubBeatGroupCloser {\n\t\topacity: 0.8;\n\t\tfont-weight: bold;\n\t}\n\n\t.cmChordLine-romanNumeral,\n\t.cmRomanNumeral {\n\t\tcolor: $dracula-green;\n\t}\n\n\t.cmRomanNumeral-diatonic {\n\t\tfont-weight: bold;\n\t\tcolor: $ccs-background;\n\t\tbackground-color: $dracula-green;\n\t}\n\n\t.cmRomanNumeral-borrowed {\n\t\tcolor: $ccs-background;\n\t\tbackground-color: rgba($dracula-green, 0.7);\n\t}\n\n\t.cmRomanNumeral-unknown {\n\t\topacity: 0.8;\n\t}\n}\n","@import '../abstract';\n@import './common';\n\n.cmTheme-text {\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: #333;\n\t}\n}\n","@import '../abstract';\n@import './common';\n\n.cmTheme-print {\n\tbackground-color: white;\n\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: #333;\n\t\tfont-size: 12px;\n\t}\n\n\t// Sections\n\t.cmSectionLabel {\n\t\tfont-weight: bold;\n\t\ttext-decoration: underline;\n\t}\n\t.cmSectionMultiplier {\n\t\tfont-weight: normal;\n\t\ttext-decoration: unset;\n\t}\n\n\t// Time signature\n\t.cmTimeSignature {\n\t\tfont-weight: bold;\n\t}\n\n\t// Key declaration\n\t.cmKeyDeclaration {\n\t\tfont-weight: bold;\n\t}\n\n\t// Chordline\n\t.cmChordLine {\n\t}\n\n\t.cmBarSeparator {\n\t\topacity: 0.5;\n\t}\n\n\t.cmChordDuration {\n\t\topacity: 0.7;\n\t}\n\n\t.cmSubBeatGroupOpener,\n\t.cmSubBeatGroupCloser {\n\t\topacity: 0.8;\n\t\tfont-weight: bold;\n\t}\n}\n",".cmLine {\n\t.cmSong--fontSize-5 & {\n\t\tfont-size: 0.5em;\n\t\tline-height: 1.15em;\n\t}\n\t.cmSong--fontSize-4 & {\n\t\tfont-size: 0.6em;\n\t\tline-height: 1.25em;\n\t}\n\t.cmSong--fontSize-3 & {\n\t\tfont-size: 0.7em;\n\t\tline-height: 1.35em;\n\t}\n\t.cmSong--fontSize-2 & {\n\t\tfont-size: 0.8em;\n\t\tline-height: 1.45em;\n\t}\n\t.cmSong--fontSize-1 & {\n\t\tfont-size: 0.9em;\n\t\tline-height: 1.55em;\n\t}\n\t.cmSong--fontSize1 & {\n\t\tfont-size: 1.1em;\n\t\tline-height: 1.75em;\n\t}\n\t.cmSong--fontSize2 & {\n\t\tfont-size: 1.2em;\n\t\tline-height: 1.85em;\n\t}\n\t.cmSong--fontSize3 & {\n\t\tfont-size: 1.3em;\n\t\tline-height: 1.95em;\n\t}\n\t.cmSong--fontSize4 & {\n\t\tfont-size: 1.4em;\n\t\tline-height: 2.05em;\n\t}\n\t.cmSong--fontSize5 & {\n\t\tfont-size: 1.5em;\n\t\tline-height: 2.15em;\n\t}\n}\n","@import '../abstract';\n@import './common';\n\n.cmTheme-print2 {\n\tbackground-color: white;\n\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: #333;\n\t\tfont-size: 14px;\n\t\tline-height: 1.4em;\n\t\tfont-family: 'Menlo', 'Courier New', Courier, monospace;\n\t}\n\n\t// Sections\n\t.cmSection {\n\t\tborder: 1px solid black;\n\t\tborder-radius: 8px;\n\t\tpadding: 0.4em;\n\t\tmargin: 0.2em 0 0.2em 0;\n\t\t// below line only needed for wkhtmltopdf\n\t\tbreak-inside: avoid;\n\t}\n\n\t.cmSection-Chorus {\n\t\tbackground-color: #ededed;\n\t}\n\n\t.cmSectionLabel {\n\t\tfont-weight: bold;\n\t\tfont-size: 0.85em;\n\t\ttext-transform: uppercase;\n\t}\n\t.cmSectionMultiplier {\n\t\ttext-decoration: unset;\n\t\tfont-size: 0.95em;\n\t}\n\n\t// Time signature\n\t.cmTimeSignature {\n\t\tfont-weight: bold;\n\t}\n\n\t// Key declaration\n\t.cmKeyDeclaration {\n\t\tfont-weight: bold;\n\t}\n\n\t// Empty Lines - Hide to save print space\n\t.cmEmptyLine {\n\t\tdisplay: none;\n\t}\n\n\t// Chordline\n\t.cmChordLine {\n\t\tfont-weight: bolder;\n\t}\n\n\t.cmBarSeparator {\n\t\topacity: 0.5;\n\t}\n\n\t.cmChordDuration {\n\t\topacity: 0.7;\n\t}\n\n\t.cmSubBeatGroupOpener,\n\t.cmSubBeatGroupCloser {\n\t\topacity: 0.8;\n\t\tfont-weight: bold;\n\t}\n}\n","@import '../../../scss/abstract';\n\n.ErrorBoundary {\n\tpadding: $spacer-medium;\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@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\tmax-width: 250px;\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\tmax-width: 250px;\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\toverflow: hidden;\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\toverflow: hidden;\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: 3px 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\tbox-sizing: border-box;\n\tpadding: $spacer-small-plus 0 $spacer-small;\n\twidth: 100%;\n\n\t.leftBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.logo-img {\n\tmargin: 0 auto;\n\twidth: 70%;\n\tsvg {\n\t\tfill: #fff;\n\t\taspect-ratio: 1.25 / 1;\n\t\twidth: 80%;\n\t\tmargin: 5px auto 10px auto;\n\t\tdisplay: block;\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\tuser-select: none;\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\ta {\n\t\tcolor: inherit;\n\t\t&:hover {\n\t\t\topacity: 0.7;\n\t\t}\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\tuser-select: none;\n\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\tpadding: 0.1rem 0;\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: 0 $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, dark5),\n\t\tinputHeader-txt: cv(dark-foreground, fade),\n\t\tinputHeader-bg: cv(dark-secondary, light10),\n\t\tinputHeader-gutter: cv(dark-secondary, dark5),\n\t),\n);\n\n$headerVPadding: 3px;\n$headerHeight: 20px;\n\n.songEditor-headers {\n\tdisplay: flex;\n\n\theight: $headerHeight;\n\ttext-transform: uppercase;\n\tpadding: $headerVPadding 0;\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.songEditor-sourceHeader {\n\tflex: 0 1 50%;\n}\n\n.songEditor-previewHeader {\n\tflex: 0 1 50%;\n}\n\n.songEditor {\n\twidth: 100%;\n\theight: calc(100% - #{$headerHeight + $headerVPadding * 2});\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\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\toverflow-y: scroll;\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\tbox-sizing: border-box;\n\tpadding: $spacer-tiny;\n\tmin-height: 100%;\n}\n\n.cmTheme-fadeRepeats {\n\t.cmLine--isFromAutoRepeatChords,\n\t.cmLine--isFromChordLineRepeater,\n\t.cmLine--isFromSectionCopy,\n\t.cmLine--isFromSectionMultiply {\n\t\topacity: 0.5;\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: 15px 0;\n}\n\n.ProseMirror {\n\theight: 100%;\n\toutline: none;\n\n\tfont-family: $cmFontStack;\n\tfont-size: $cmFontSize;\n\tline-height: $cmLineHeight;\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-foreground),\n\t\tsong-bg: cv(dark-secondary),\n\t),\n);\n\n.exportPreview {\n\tbox-sizing: border-box;\n\tmin-height: 100%;\n\tpadding: $spacer-small;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('song-bg');\n\t\tcolor: themed('song-txt');\n\t}\n}\n\n.exp-SongRenderer {\n\tfont-family: $cmFontStack;\n\tfont-size: $cmFontSize;\n\tline-height: $cmLineHeight;\n\n\tpadding: 15px;\n\twhite-space: pre-wrap;\n\tcolor: #333;\n\n\tp {\n\t\tmargin: 0;\n\t}\n\n\t.txtLine {\n\t\tdisplay: block;\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('song-txt') !important;\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tplayRenderer-bg: cv(dark-secondary),\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\n.playRendererWrapper2 {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n}\n\n.playRenderer {\n\tbox-sizing: border-box;\n\tmin-height: 100%;\n\n\t.cmSong {\n\t\tpadding: 0 !important;\n\t}\n}\n\n.playRenderer--columns-1 {\n\tcolumn-count: 1;\n\tpadding: $spacer-small;\n}\n.playRenderer--columns-2 {\n\tcolumn-count: 2;\n\tcolumn-fill: auto;\n\theight: 100%;\n\tpadding: $spacer-small;\n}\n.playRenderer--columns-3 {\n\tcolumn-count: 3;\n\tcolumn-fill: auto;\n\theight: 100%;\n\tpadding: $spacer-small;\n}\n.playRenderer--columns-4 {\n\tcolumn-count: 4;\n\tcolumn-fill: auto;\n\theight: 100%;\n\tpadding: $spacer-small;\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: hidden;\n\tmin-height: 100%;\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\tfont-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',\n\t\tHelvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\n\t\t'Segoe UI Symbol';\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.cmTheme-print {\n\t.cmSong {\n\t\tpadding: 0 !important;\n\t}\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\tuser-select: none;\n\n\tpadding: $spacer-tiny $spacer-small $spacer-tiny $spacer-tiny;\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\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\tuser-select: none;\n\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\tuser-select: none;\n\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\tuser-select: none;\n\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-chart-studio/build/css/main.6c2b09763d09b4b4339a.css b/packages/chord-chart-studio/build/css/main.6c2b09763d09b4b4339a.css deleted file mode 100644 index 282ef142..00000000 --- a/packages/chord-chart-studio/build/css/main.6c2b09763d09b4b4339a.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}.theme-dark .link1{color:#fabf2b}.theme-dark .link1:hover{color:#fbce5d}.theme-dark .link1:active{color:#fcdd8f}::-webkit-scrollbar{height:10px;width:10px}.theme-dark ::-webkit-scrollbar,.theme-light ::-webkit-scrollbar{background-color:red}.theme-dark ::-webkit-scrollbar-corner,.theme-dark ::-webkit-scrollbar-track{background-color:#293132}::-webkit-scrollbar-thumb{border-radius:100vw}.theme-light ::-webkit-scrollbar-thumb{border:3px solid}.theme-dark ::-webkit-scrollbar-thumb{background-color:#a8a8a8;border:3px solid #293132}.theme-dark ::-webkit-scrollbar-thumb:hover{background-color:#c1c1c1}@supports(scrollbar-color:white black){*{scrollbar-width:thin}.theme-dark *{scrollbar-color:#a8a8a8 #293132}}.cmTheme-dark1{background-color:#293132}.cmTheme-dark1 .cmSong{color:#f4f4f4;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-dark1 .cmSong p{margin:0}.cmTheme-dark1 .cmSectionLabel{color:#67d3ff;font-weight:700}.cmTheme-dark1 .cmSectionMultiplier{color:#ed7bff}.cmTheme-dark1 .cmTimeSignature{color:#a7ff7b;font-weight:700}.cmTheme-dark1 .cmChordLine{color:#fabf2b}.cmTheme-dark1 .cmBarSeparator{opacity:.5}.cmTheme-dark1 .cmChordDuration{opacity:.7}.cmTheme-dark2{background-color:#282a36}.cmTheme-dark2 .cmSong{color:#f8f8f2;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-dark2 .cmSong p{margin:0}.cmTheme-dark2 .cmSectionLabel{color:#ffb86c;font-weight:700}.cmTheme-dark2 .cmSectionMultiplier{color:#f1fa8c}.cmTheme-dark2 .cmTimeSignature{color:#f1fa8c;font-weight:700}.cmTheme-dark2 .cmChordLine{color:#8be9fd}.cmTheme-dark2 .cmBarSeparator{opacity:.5}.cmTheme-dark2 .cmChordDuration{opacity:.7}.cmTheme-dark3{background-color:#282a36}.cmTheme-dark3 .cmSong{color:#f8f8f2;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-dark3 .cmSong p{margin:0}.cmTheme-dark3 .cmSectionLabel{color:#f55;font-weight:700}.cmTheme-dark3 .cmSectionMultiplier{color:#f1fa8c}.cmTheme-dark3 .cmTimeSignature{color:#8be9fd;font-weight:700}.cmTheme-dark3 .cmChordLine{color:#50fa7b}.cmTheme-dark3 .cmBarSeparator{opacity:.5}.cmTheme-dark3 .cmChordDuration{opacity:.7}.cmTheme-text .cmSong{color:#333;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-text .cmSong p{margin:0}.cmSong--fontSize-5 .cmLine{font-size:.5em;line-height:1.15em}.cmSong--fontSize-4 .cmLine{font-size:.6em;line-height:1.25em}.cmSong--fontSize-3 .cmLine{font-size:.7em;line-height:1.35em}.cmSong--fontSize-2 .cmLine{font-size:.8em;line-height:1.45em}.cmSong--fontSize-1 .cmLine{font-size:.9em;line-height:1.55em}.cmSong--fontSize1 .cmLine{font-size:1.1em;line-height:1.75em}.cmSong--fontSize2 .cmLine{font-size:1.2em;line-height:1.85em}.cmSong--fontSize3 .cmLine{font-size:1.3em;line-height:1.95em}.cmSong--fontSize4 .cmLine{font-size:1.4em;line-height:2.05em}.cmSong--fontSize5 .cmLine{font-size:1.5em;line-height:2.15em}.cmTheme-print{background-color:#fff}.cmTheme-print .cmSong{color:#333;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;font-size:12px;line-height:1.65em;padding:10px;white-space:pre-wrap}.cmTheme-print .cmSong p{margin:0}.cmTheme-print .cmSectionLabel{font-weight:700;text-decoration:underline}.cmTheme-print .cmSectionMultiplier{font-weight:400;text-decoration:unset}.cmTheme-print .cmTimeSignature{font-weight:700}.cmTheme-print .cmBarSeparator{opacity:.5}.cmTheme-print .cmChordDuration{opacity:.7}.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;max-width:250px;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;max-width:250px;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;overflow:hidden;padding:.5rem 1rem;text-align:center}.rightBar-content{flex:1 1 auto;overflow-y:scroll}.rightBar-isCollapsed .rightBar-content{cursor:pointer;overflow:hidden;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:3px solid}.theme-dark .appLayout-header{background-color:#303846;border-bottom:3px solid #fabf2b;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{box-sizing:border-box;padding:1.5rem 0 1rem;width:100%}.leftBar-isCollapsed .logo-isExpanded{display:none}.logo-img{margin:0 auto;width:70%}.logo-img svg{fill:#fff;aspect-ratio:1.25/1;display:block;margin:5px auto 10px;width:80%}.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}.mainNavEntry.mainNavEntry-isDisabled{user-select:none}.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}.versions-isExpanded a{color:inherit}.versions-isExpanded a:hover{opacity:.7}.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;user-select:none}.fileManagerAction-icon .icon{font-size:1.4rem}.fileManager-entriesList{list-style:none;padding-left:0}.fileManagerEntry{cursor:pointer;padding:.1rem 0}.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:0 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-headers{display:flex;font-size:1.2rem;height:20px;padding:3px 0;text-align:center;text-transform:uppercase}.theme-dark .songEditor-headers{background-color:#404c4e;color:hsla(0,0%,96%,.7)}.songEditor-previewHeader,.songEditor-sourceHeader{flex:0 1 50%}.songEditor{display:flex;flex-direction:row;flex-wrap:nowrap;height:calc(100% - 26px);width:100%}.songEditor-source{display:flex;flex:0 1 50%;overflow-y:scroll}.theme-dark .songEditor-source{background-color:#1e2324}.songEditor-preview{flex:0 1 50%;overflow-y:scroll}.editorPreview{box-sizing:border-box;min-height:100%;padding:.5rem}.cmTheme-fadeRepeats .cmLine--isFromAutoRepeatChords,.cmTheme-fadeRepeats .cmLine--isFromChordLineRepeater,.cmTheme-fadeRepeats .cmLine--isFromSectionCopy,.cmTheme-fadeRepeats .cmLine--isFromSectionMultiply{opacity:.5}.prosemirrorWrapper{flex:1 1 auto;padding:15px 0}.ProseMirror{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;height:100%;line-height:1.65em;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{box-sizing:border-box;min-height:100%;padding:1rem}.theme-dark .exportPreview{background-color:#293132;color:#f4f4f4}.exp-SongRenderer{color:#333;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13px;line-height:1.65em;padding:15px;white-space:pre-wrap}.exp-SongRenderer p{margin:0}.exp-SongRenderer .txtLine{display:block}.theme-dark .exp-SongRenderer{color:#f4f4f4!important}.playRendererWrapper1{height:100%;overflow-y:scroll;position:relative}.playRendererWrapper2{bottom:0;left:0;position:absolute;right:0;top:0}.playRenderer{box-sizing:border-box;min-height:100%}.playRenderer .cmSong{padding:0!important}.playRenderer--columns-1{column-count:1;padding:1rem}.playRenderer--columns-2{column-count:2;column-fill:auto;height:100%;padding:1rem}.playRenderer--columns-3{column-count:3;column-fill:auto;height:100%;padding:1rem}.playRenderer--columns-4{column-count:4;column-fill:auto;height:100%;padding:1rem}.printPreview{min-height:100%;overflow:hidden}.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-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;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}.cmTheme-print .cmSong{padding:0!important}.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{font-size:1.4rem;font-weight:700;padding:.5rem 1rem .5rem .5rem;user-select:none}.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-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}.sb-optionSelect.sb-optionSelect-isNotInteractable{user-select:none}.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}.sb-optionSlider.sb-optionSlider-isNotInteractable{user-select:none}.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}.sb-optionToggle.sb-optionToggle-isNotInteractable{user-select:none}.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.6c2b09763d09b4b4339a.css.map*/ \ No newline at end of file diff --git a/packages/chord-chart-studio/build/css/main.6c2b09763d09b4b4339a.css.map b/packages/chord-chart-studio/build/css/main.6c2b09763d09b4b4339a.css.map deleted file mode 100644 index 4ddb6796..00000000 --- a/packages/chord-chart-studio/build/css/main.6c2b09763d09b4b4339a.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"css/main.6c2b09763d09b4b4339a.css","mappings":"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","sources":["webpack://chord-chart-studio/./node_modules/normalize.css/normalize.css","webpack://chord-chart-studio/./scss/_base.scss","webpack://chord-chart-studio/./scss/abstract/_typography.scss","webpack://chord-chart-studio/./scss/abstract/mixins/_fontSize.scss","webpack://chord-chart-studio/./scss/abstract/mixins/_themify.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/dark1.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/abstract/_colors.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/abstract/_mixins.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/abstract/_variables.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/dark2.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/dark3.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/text.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/_common.scss","webpack://chord-chart-studio/./node_modules/chord-mark-themes/scss/themes/print.scss","webpack://chord-chart-studio/./src/ui/_components/ErrorBoundary.scss","webpack://chord-chart-studio/./scss/abstract/_spacings.scss","webpack://chord-chart-studio/./src/ui/layout/app/_components/App.scss","webpack://chord-chart-studio/./src/ui/sideBar/_components/Logo.scss","webpack://chord-chart-studio/./src/ui/layout/app/_components/Nav.scss","webpack://chord-chart-studio/./src/ui/_components/Icon.scss","webpack://chord-chart-studio/./src/ui/sideBar/_components/UserGuide.scss","webpack://chord-chart-studio/./src/ui/_components/Button.scss","webpack://chord-chart-studio/./src/ui/sideBar/_components/Versions.scss","webpack://chord-chart-studio/./src/songImporter/_components/SongImporter.scss","webpack://chord-chart-studio/./src/ui/_components/Modal.scss","webpack://chord-chart-studio/./src/fileManager/_components/FileManager.scss","webpack://chord-chart-studio/./src/editor/songEditor/_components/EditorLayout.scss","webpack://chord-chart-studio/./src/songRenderers/editorPreview/_components/EditorPreview.scss","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/ProsemirrorEditorView.scss","webpack://chord-chart-studio/./node_modules/prosemirror-view/style/prosemirror.css","webpack://chord-chart-studio/./src/songRenderers/exportPreview/_components/ExportPreview.scss","webpack://chord-chart-studio/./src/songRenderers/playRenderer/_components/PlayRenderer.scss","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/PrintPreview.scss","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/getDimensionsFromDom.scss","webpack://chord-chart-studio/./src/optionsPanels/rendering/_components/Rendering.scss","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/OptionsGroup.scss","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Select.scss","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Slider.scss","webpack://chord-chart-studio/./scss/abstract/mixins/_inputRange.scss","webpack://chord-chart-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 'abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\t// links\n\t\tlink1: cv(dark-accent),\n\t\tlink1-hover: cv(dark-accent, light10),\n\t\tlink1-active: cv(dark-accent, light20),\n\t\t// scrollbars\n\t\tscrollbar-bg: cv(dark-secondary),\n\t\tscrollbar-thumb: cv(dark-foreground, dark30),\n\t\tscrollbar-hover: cv(dark-foreground, dark20),\n\t),\n);\n\nhtml {\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\n.link1 {\n\t@include themify($themes) {\n\t\tcolor: themed('link1');\n\t}\n\n\t&:hover {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('link1-hover');\n\t\t}\n\t}\n\n\t&:active {\n\t\t@include themify($themes) {\n\t\t\tcolor: themed('link1-active');\n\t\t}\n\t}\n}\n\n// scrollbars\n::-webkit-scrollbar {\n\twidth: 10px;\n\theight: 10px;\n\t@include themify($themes) {\n\t\tbackground-color: red;\n\t}\n}\n\n::-webkit-scrollbar-track,\n::-webkit-scrollbar-corner {\n\t@include themify($themes) {\n\t\tbackground-color: themed('scrollbar-bg');\n\t}\n}\n\n::-webkit-scrollbar-thumb {\n\t@include themify($themes) {\n\t\tbackground-color: themed('scrollbar-thumb');\n\t\tborder: 3px solid themed('scrollbar-bg');\n\t}\n\tborder-radius: 100vw;\n}\n\n::-webkit-scrollbar-thumb:hover {\n\t@include themify($themes) {\n\t\tbackground-color: themed('scrollbar-hover');\n\t}\n}\n\n@supports (scrollbar-color: white black) {\n\t* {\n\t\t@include themify($themes) {\n\t\t\tscrollbar-color: themed('scrollbar-thumb') themed('scrollbar-bg');\n\t\t}\n\t\tscrollbar-width: thin;\n\t}\n}\n","@use 'sass:math';\n\n// ChordMark\n\n$cmFontStack: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n\t'Courier New', monospace;\n$cmFontSize: 13px;\n$cmLineHeight: 1.65em;\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","// 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","@import '../abstract';\n@import './common';\n\n$green: rgb(167, 255, 123);\n$blue: rgb(103, 211, 255);\n$pink: rgb(237, 123, 255);\n\n.cmTheme-dark1 {\n\tbackground-color: $ccs-secondary;\n\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: $ccs-foreground;\n\t}\n\n\t// Sections\n\t.cmSectionLabel {\n\t\tcolor: $blue;\n\t\tfont-weight: bold;\n\t}\n\t.cmSectionMultiplier {\n\t\tcolor: $pink;\n\t}\n\n\t// Time signature\n\t.cmTimeSignature {\n\t\tcolor: $green;\n\t\tfont-weight: bold;\n\t}\n\n\t// Chordline\n\t.cmChordLine {\n\t\tcolor: $ccs-accent;\n\t}\n\n\t.cmBarSeparator {\n\t\topacity: 0.5;\n\t}\n\n\t.cmChordDuration {\n\t\topacity: 0.7;\n\t}\n}\n","// Dracula theme\n$dracula-background: #282a36;\n$dracula-selection: #44475a;\n$dracula-foreground: #f8f8f2;\n$dracula-comment: #6272a4;\n$dracula-cyan: #8be9fd;\n$dracula-green: #50fa7b;\n$dracula-orange: #ffb86c;\n$dracula-pink: #ff79c6;\n$dracula-purple: #bd93f9;\n$dracula-red: #ff5555;\n$dracula-yellow: #f1fa8c;\n\n// Chord Chart Studio\n$whiteSmoke: rgba(244, 244, 244, 1);\n$onyx: rgba(48, 56, 70, 1);\n$charcoal: rgba(46, 64, 82, 1);\n$gunMetal: rgba(41, 49, 50, 1);\n$saffron: rgba(250, 191, 43, 1);\n$bitterSweet: rgba(255, 112, 96, 1);\n$screamingGreen: rgba(116, 241, 78, 1);\n\n$ccs-foreground: $whiteSmoke;\n$ccs-background: $onyx;\n$ccs-accent: $saffron;\n$ccs-primary: $charcoal;\n$ccs-secondary: $gunMetal;\n$ccs-red: $bitterSweet;\n$ccs-yellow: $saffron;\n$ccs-green: $screamingGreen;\n","@mixin base {\n\tfont-family: $font-stack;\n\tfont-size: 13px;\n\tline-height: 1.65em;\n\tpadding: 10px;\n\twhite-space: pre-wrap;\n\n\tp {\n\t\tmargin: 0;\n\t}\n}\n","$font-stack: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n\t'Courier New', monospace;\n","@import '../abstract';\n@import './common';\n\n.cmTheme-dark2 {\n\tbackground-color: $dracula-background;\n\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: $dracula-foreground;\n\t}\n\n\t// Sections\n\t.cmSectionLabel {\n\t\tcolor: $dracula-orange;\n\t\tfont-weight: bold;\n\t}\n\t.cmSectionMultiplier {\n\t\tcolor: $dracula-yellow;\n\t}\n\n\t// Time signature\n\t.cmTimeSignature {\n\t\tcolor: $dracula-yellow;\n\t\tfont-weight: bold;\n\t}\n\n\t// Chordline\n\t.cmChordLine {\n\t\tcolor: $dracula-cyan;\n\t}\n\n\t.cmBarSeparator {\n\t\topacity: 0.5;\n\t}\n\n\t.cmChordDuration {\n\t\topacity: 0.7;\n\t}\n}\n","@import '../abstract';\n@import './common';\n\n.cmTheme-dark3 {\n\tbackground-color: $dracula-background;\n\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: $dracula-foreground;\n\t}\n\n\t// Sections\n\t.cmSectionLabel {\n\t\tcolor: $dracula-red;\n\t\tfont-weight: bold;\n\t}\n\t.cmSectionMultiplier {\n\t\tcolor: $dracula-yellow;\n\t}\n\n\t// Time signature\n\t.cmTimeSignature {\n\t\tcolor: $dracula-cyan;\n\t\tfont-weight: bold;\n\t}\n\n\t// Chordline\n\t.cmChordLine {\n\t\tcolor: $dracula-green;\n\t}\n\n\t.cmBarSeparator {\n\t\topacity: 0.5;\n\t}\n\n\t.cmChordDuration {\n\t\topacity: 0.7;\n\t}\n}\n","@import '../abstract';\n@import './common';\n\n.cmTheme-text {\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: #333;\n\t}\n}\n",".cmLine {\n\t.cmSong--fontSize-5 & {\n\t\tfont-size: 0.5em;\n\t\tline-height: 1.15em;\n\t}\n\t.cmSong--fontSize-4 & {\n\t\tfont-size: 0.6em;\n\t\tline-height: 1.25em;\n\t}\n\t.cmSong--fontSize-3 & {\n\t\tfont-size: 0.7em;\n\t\tline-height: 1.35em;\n\t}\n\t.cmSong--fontSize-2 & {\n\t\tfont-size: 0.8em;\n\t\tline-height: 1.45em;\n\t}\n\t.cmSong--fontSize-1 & {\n\t\tfont-size: 0.9em;\n\t\tline-height: 1.55em;\n\t}\n\t.cmSong--fontSize1 & {\n\t\tfont-size: 1.1em;\n\t\tline-height: 1.75em;\n\t}\n\t.cmSong--fontSize2 & {\n\t\tfont-size: 1.2em;\n\t\tline-height: 1.85em;\n\t}\n\t.cmSong--fontSize3 & {\n\t\tfont-size: 1.3em;\n\t\tline-height: 1.95em;\n\t}\n\t.cmSong--fontSize4 & {\n\t\tfont-size: 1.4em;\n\t\tline-height: 2.05em;\n\t}\n\t.cmSong--fontSize5 & {\n\t\tfont-size: 1.5em;\n\t\tline-height: 2.15em;\n\t}\n}\n","@import '../abstract';\n@import './common';\n\n.cmTheme-print {\n\tbackground-color: white;\n\n\t.cmSong {\n\t\t@include base;\n\t\tcolor: #333;\n\t\tfont-size: 12px;\n\t}\n\n\t// Sections\n\t.cmSectionLabel {\n\t\tfont-weight: bold;\n\t\ttext-decoration: underline;\n\t}\n\t.cmSectionMultiplier {\n\t\tfont-weight: normal;\n\t\ttext-decoration: unset;\n\t}\n\n\t// Time signature\n\t.cmTimeSignature {\n\t\tfont-weight: bold;\n\t}\n\n\t// Chordline\n\t.cmChordLine {\n\t}\n\n\t.cmBarSeparator {\n\t\topacity: 0.5;\n\t}\n\n\t.cmChordDuration {\n\t\topacity: 0.7;\n\t}\n}\n","@import '../../../scss/abstract';\n\n.ErrorBoundary {\n\tpadding: $spacer-medium;\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@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\tmax-width: 250px;\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\tmax-width: 250px;\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\toverflow: hidden;\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\toverflow: hidden;\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: 3px 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\tbox-sizing: border-box;\n\tpadding: $spacer-small-plus 0 $spacer-small;\n\twidth: 100%;\n\n\t.leftBar-isCollapsed & {\n\t\tdisplay: none;\n\t}\n}\n\n.logo-img {\n\tmargin: 0 auto;\n\twidth: 70%;\n\tsvg {\n\t\tfill: #fff;\n\t\taspect-ratio: 1.25 / 1;\n\t\twidth: 80%;\n\t\tmargin: 5px auto 10px auto;\n\t\tdisplay: block;\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\tuser-select: none;\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\ta {\n\t\tcolor: inherit;\n\t\t&:hover {\n\t\t\topacity: 0.7;\n\t\t}\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\tuser-select: none;\n\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\tpadding: 0.1rem 0;\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: 0 $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, dark5),\n\t\tinputHeader-txt: cv(dark-foreground, fade),\n\t\tinputHeader-bg: cv(dark-secondary, light10),\n\t\tinputHeader-gutter: cv(dark-secondary, dark5),\n\t),\n);\n\n$headerVPadding: 3px;\n$headerHeight: 20px;\n\n.songEditor-headers {\n\tdisplay: flex;\n\n\theight: $headerHeight;\n\ttext-transform: uppercase;\n\tpadding: $headerVPadding 0;\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.songEditor-sourceHeader {\n\tflex: 0 1 50%;\n}\n\n.songEditor-previewHeader {\n\tflex: 0 1 50%;\n}\n\n.songEditor {\n\twidth: 100%;\n\theight: calc(100% - #{$headerHeight + $headerVPadding * 2});\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\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\toverflow-y: scroll;\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\tbox-sizing: border-box;\n\tpadding: $spacer-tiny;\n\tmin-height: 100%;\n}\n\n.cmTheme-fadeRepeats {\n\t.cmLine--isFromAutoRepeatChords,\n\t.cmLine--isFromChordLineRepeater,\n\t.cmLine--isFromSectionCopy,\n\t.cmLine--isFromSectionMultiply {\n\t\topacity: 0.5;\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: 15px 0;\n}\n\n.ProseMirror {\n\theight: 100%;\n\toutline: none;\n\n\tfont-family: $cmFontStack;\n\tfont-size: $cmFontSize;\n\tline-height: $cmLineHeight;\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-foreground),\n\t\tsong-bg: cv(dark-secondary),\n\t),\n);\n\n.exportPreview {\n\tbox-sizing: border-box;\n\tmin-height: 100%;\n\tpadding: $spacer-small;\n\n\t@include themify($themes) {\n\t\tbackground-color: themed('song-bg');\n\t\tcolor: themed('song-txt');\n\t}\n}\n\n.exp-SongRenderer {\n\tfont-family: $cmFontStack;\n\tfont-size: $cmFontSize;\n\tline-height: $cmLineHeight;\n\n\tpadding: 15px;\n\twhite-space: pre-wrap;\n\tcolor: #333;\n\n\tp {\n\t\tmargin: 0;\n\t}\n\n\t.txtLine {\n\t\tdisplay: block;\n\t}\n\n\t@include themify($themes) {\n\t\tcolor: themed('song-txt') !important;\n\t}\n}\n","@import '../../../../scss/abstract';\n\n$themes: (\n\tlight: (),\n\tdark: (\n\t\tplayRenderer-bg: cv(dark-secondary),\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\n.playRendererWrapper2 {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n}\n\n.playRenderer {\n\tbox-sizing: border-box;\n\tmin-height: 100%;\n\n\t.cmSong {\n\t\tpadding: 0 !important;\n\t}\n}\n\n.playRenderer--columns-1 {\n\tcolumn-count: 1;\n\tpadding: $spacer-small;\n}\n.playRenderer--columns-2 {\n\tcolumn-count: 2;\n\tcolumn-fill: auto;\n\theight: 100%;\n\tpadding: $spacer-small;\n}\n.playRenderer--columns-3 {\n\tcolumn-count: 3;\n\tcolumn-fill: auto;\n\theight: 100%;\n\tpadding: $spacer-small;\n}\n.playRenderer--columns-4 {\n\tcolumn-count: 4;\n\tcolumn-fill: auto;\n\theight: 100%;\n\tpadding: $spacer-small;\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: hidden;\n\tmin-height: 100%;\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\tfont-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',\n\t\tHelvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\n\t\t'Segoe UI Symbol';\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.cmTheme-print {\n\t.cmSong {\n\t\tpadding: 0 !important;\n\t}\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\tuser-select: none;\n\n\tpadding: $spacer-tiny $spacer-small $spacer-tiny $spacer-tiny;\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\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\tuser-select: none;\n\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\tuser-select: none;\n\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\tuser-select: none;\n\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-chart-studio/build/index.html b/packages/chord-chart-studio/build/index.html index 45424983..1bca5f82 100644 --- a/packages/chord-chart-studio/build/index.html +++ b/packages/chord-chart-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-chart-studio/build/main.3a60932e92db6c837452.js b/packages/chord-chart-studio/build/main.3a60932e92db6c837452.js new file mode 100644 index 00000000..3b509aa1 --- /dev/null +++ b/packages/chord-chart-studio/build/main.3a60932e92db6c837452.js @@ -0,0 +1,3 @@ +/*! For license information please see main.3a60932e92db6c837452.js.LICENSE.txt */ +(()=>{"use strict";var e,t={TBfH:(e,t,r)=>{var n=r("P4Tr"),o=r.n(n),i=r("8NJ8"),a=r("5HXA"),c=r("sINF"),l=function(){try{var e=localStorage.getItem("state");if(!e)return;return JSON.parse(e)}catch(e){return}},u=function(e){try{var t=JSON.stringify(e);localStorage.setItem("state",t)}catch(e){}},s=r("R0vF"),p=(r("yq1k"),r("tkto"),r("gXIK"),r("7+zs"),r("pNMO"),r("4Brf"),r("07d7"),r("qePV"),r("TeQF"),r("5DmW"),r("FZtP"),r("27RR"),r("0oug"),r("4mDm"),r("PKPk"),r("3bBZ"),r("JZM8")),f=r.n(p);function d(){return Date.now()}var m="db/files/Create",y="db/files/Delete",h="db/files/Import",g="db/files/Update",v="db/options/setOptionValue",b="ui/layout/app/setEditorMode",w="ui/layout/app/toggleLeftBar",E="ui/layout/app/toggleRightBar",O=function(e){return e.ui.layout.app.isLeftBarCollapsed},S=function(e){return e.ui.layout.app.isRightBarCollapsed},C=function(e){return e.ui.layout.app.editorMode},j=function(e){return e.fileManager.selected},P=function(e){return e.fileManager.renamed},R=function(e){return e.fileManager.defaultTitle},F=(r("ToJy"),r("zKZe"),r("3WF5")),x=r.n(F),N=r("BkRI"),T=r.n(N),k=r("Y+p1"),L=r.n(k),_=r("xweI"),q=r.n(_),I=r("G4qV"),M=r("EsgF");function A(e){return A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A(e)}function B(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function D(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:J,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};switch(t.type){case m:case h:return function(e,t){var r=t.payload,n=r.id,o=r.title,i=r.content,a=Y({},e.allFiles);return a[n]={id:n,title:o,content:i},Y(Y({},e),{},{allFiles:a})}(e,t);case g:return function(e,t){var r=t.payload,n=r.id,o=r.title,i=r.content;if(!o&&void 0===i||!e.allFiles[n])return e;var a=Y({},e.allFiles);return a[n]=Y({},a[n]),o&&(a[n].title=o),void 0!==i&&(a[n].content=i),Y(Y({},e),{},{allFiles:a})}(e,t);case y:return function(e,t){var r=t.payload.id;if(!r||!e.allFiles[r])return e;var n=Y({},e.allFiles);return delete n[r],Y(Y({},e),{},{allFiles:n})}(e,t);case v:return X(e,t,r);case b:return function(e,t,r){var n=j(r),o=t.payload.mode;if(!H(r,n,o)){var i=f()(V(r,n)||{},K[o]);if(Object.keys(i).length){i.updatedAt=d();var a=Y({},e.allFiles);return a[n]=Y(Y({},a[n]),{},{options:Y(Y({},a[n].options),{},U({},o,i))}),Y(Y({},e),{},{allFiles:a})}}return e}(e,t,r)}return e},options:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ce,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};switch(t.type){case v:return function(e,t){var r=t.payload,n=r.context,o=r.key,i=r.value;if(!e[n]||!e[n].values||void 0===e[n].values[o])return e;var a=ie(ie({},e),{},ae({},n,ie(ie({},e[n]),{},{values:ie({},e[n].values)})));return a[n].values[o]=i,a}(e,t);case b:return function(e,t,r){var n=le(r,j(r),t.payload.mode);return ie(ie({},e),{},{songFormatting:ie(ie({},e.songFormatting),{},{values:ie({},n)})})}(e,t,r);case Q:return function(e,t,r){var n=t.payload.id,o=le(r,n,C(r)),i=H(r,n,"preferences")||{};delete i.updatedAt;var a=re(r,"songPreferences"),c=Object.assign(a,i);return ie(ie({},e),{},{songPreferences:ie(ie({},e.songPreferences),{},{values:ie({},c)}),songFormatting:ie(ie({},e.songFormatting),{},{values:ie({},o)})})}(e,t,r)}return e}});function se(e){return se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},se(e)}function pe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function fe(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:Te,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case w:return xe(xe({},e),{},{isLeftBarCollapsed:!e.isLeftBarCollapsed});case E:return xe(xe({},e),{},{isRightBarCollapsed:!e.isRightBarCollapsed});case b:var r=t.payload.mode;return xe(xe({},e),{},{editorMode:r});case y:case m:case h:return xe(xe({},e),{},{editorMode:"edit"})}return e}}),Le=(0,s.Z)({layout:ke}),_e=(0,s.Z)({db:ue,fileManager:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:me,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case m:var r=t.payload.id;return fe(fe({},e),{},{selected:r,renamed:r});case h:var n=t.payload.id;return fe(fe({},e),{},{selected:n,renamed:""});case g:return fe(fe({},e),{},{renamed:""});case y:return fe(fe({},e),{},{selected:"",renamed:""});case Q:var o=t.payload.id;return fe(fe({},e),{},{selected:o,renamed:o===e.renamed?o:""});case ee:var i=t.payload.id;return fe(fe({},e),{},{renamed:i})}return e},songImporter:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Pe,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case ge:var r=t.payload,n=r.content,o=r.title,i=void 0===o?"":o;return Ce(Ce({},e),{},{content:Ee(n),title:i?Ee(i):e.title});case ve:var a=t.payload.inputFormat;return Ce(Ce({},e),{},{inputFormat:a});case h:case ye:return Ce(Ce({},e),{},{content:"",title:"",isImporting:!1});case he:var c=t.payload,l=c.content,u=c.inputFormat,s=c.title,p=c.isFromWeb;return Ce(Ce({},e),{},{isImporting:!0,content:l?Ee(l):"",title:s?Ee(s):"",inputFormat:u||e.inputFormat,isFromWeb:p})}return e},ui:Le}),qe={db:{options:{editorPreferences:{values:{theme:"dark1",chartFormat:"chordmark"},defaults:{theme:"dark1",chartFormat:"chordmark"}},songPreferences:{values:{transposeValue:0,preferredAccidentals:"auto",symbolType:"chord"},defaults:{transposeValue:0,preferredAccidentals:"auto",symbolType:"chord"}},songFormatting:{values:{chartType:"all",alignChordsWithLyrics:!0,alignBars:!0,autoRepeatChords:!0,expandSectionCopy:!0,fontSize:0,columnsCount:1,columnBreakOnSection:!0,documentMargins:3},defaults:{chartType:"all",alignChordsWithLyrics:!0,alignBars:!0,autoRepeatChords:!0,expandSectionCopy:!0,fontSize:0,columnsCount:1,columnBreakOnSection:!0,documentMargins:3}}}}};var Ie;function Me(){return Ie}function Ae(e,t){if(!e)throw new TypeError("Cannot create an action without an action type");return{type:e,payload:t}}var Be={"@CCS/IMPORT_TAB":function(e){var t=Me(),r=De(e.title,e.artist);t.dispatch(function(e,t,r){return Ae(he,{content:t,inputFormat:e,title:r,isFromWeb:!0})}(e.inputFormat,e.chordChart,r))}},De=function(e,t){var r=e;return t&&(r+=" - "+t),r};function We(e){return We="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},We(e)}function Ge(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ze(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==We(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==We(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===We(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var He=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 r={id:(0,Ot.Z)(),title:e,content:t};return Ae(h,r)},Ct=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.title,n=t.content;if(!e)throw new TypeError("Cannot update a file without an id");return Ae(g,{id:e,title:r,content:n})},jt=function(e){return e.songImporter.content},Pt=function(e){return e.songImporter.inputFormat},Rt=function(e){return e.songImporter.title},Ft=function(e){return e.songImporter.isImporting},xt=function(e){return e.songImporter.isFromWeb},Nt=r("N58N");function Tt(e){var t=e.children,r=e.closeModal;return(0,Ke.useEffect)((function(){var e=function(e){"Escape"===e.key&&r()};return window.addEventListener("keyup",e),function(){window.removeEventListener("keyup",e)}})),Ke.createElement("section",{className:"mod-ModalContainer"},Ke.createElement("div",{className:"mod-Overlay",onClick:r,"data-testid":"modal-overlay"}),Ke.createElement("div",{className:"mod-ContentContainer"},t))}Tt.propTypes={children:Ue().element.isRequired,closeModal:Ue().func.isRequired};const kt=Tt;var Lt=function(e){var t=e.cancelImport,r=e.chordMarkContent,n=e.importFile,o=e.title,i=e.content,a=e.error,c=o?'Import "'+o+'"':"Import song";return Ke.createElement("div",{className:"sim-Header_Container"},Ke.createElement("div",{className:"sim-Header_Title"},c),Ke.createElement("div",{className:"sim-Header_Actions"},Ke.createElement(ht,{onClick:t,buttonName:"cancel",type:"secondary"},"CANCEL"),Ke.createElement(ht,{onClick:function(){n(o||"[untitled]",r)},buttonName:"import",type:"primary",isDisabled:""===i||""!==a},"IMPORT")))};Lt.propTypes={cancelImport:Ue().func.isRequired,chordMarkContent:Ue().string,content:Ue().string,error:Ue().string,importFile:Ue().func.isRequired,title:Ue().string};const _t=Lt;r("5s+n"),r("sMBO");var qt=r("Ck5k"),It=function(e){return e.name.substr(0,e.name.lastIndexOf("."))},Mt=function(e){return e.size>51200},At=function(e){return 0===e.type.indexOf("text")||0===e.type.length},Bt=function(e){return"The selected file is too big: "+(0,qt.G)(e,{round:0})+" (maximum allowed file size is "+(0,qt.G)(51200,{round:0})+")."},Dt=function(e){return"Cannot import file of type "+e.type+"."},Wt=function(){return"No file selected."};const Gt=function(e){return new Promise((function(t,r){if(e.length){var n=e[0];Mt(n)?r(Bt(n.size)):At(n)?n.text().then((function(e){t({content:e,title:It(n)})})).catch((function(e){r(e)})):r(Dt(n))}else r(Wt())}))};var zt=function(e){var t=e.setContent;return Ke.createElement("div",null,Ke.createElement("label",{htmlFor:"importSong-Input",className:"Button Button-primary"},"Select File"),Ke.createElement("input",{id:"importSong-Input",name:"importSong-Input",type:"file",className:"sim-InputFile_Input",onChange:function(e){Gt(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"}))};zt.propTypes={setContent:Ue().func.isRequired};const Ht=zt;function Vt(e){var t=e.content,r=e.setContent,n=e.isDisabled,o=["sim-Input_Textarea"];return n&&o.push("sim-Input_Textarea-Disabled"),Ke.createElement(Ke.Fragment,null,Ke.createElement("div",{className:"sim-Input_Header"},Ke.createElement(ut,{iconName:"arrow_drop_down"}),"Copy/paste below",Ke.createElement(ut,{iconName:"arrow_drop_down"})),Ke.createElement("textarea",{className:o.join(" "),onChange:function(e){r(e.target.value)},value:t,disabled:n,"data-testid":"sim-input"}))}Vt.propTypes={content:Ue().string.isRequired,isDisabled:Ue().bool.isRequired,setContent:Ue().func.isRequired},Vt.defaultProps={};const Kt=Vt;function $t(e){var t=e.inputFormat,r=e.error;return Ke.createElement("div",{className:"sim-Preview_Error"},Ke.createElement("p",null,"There was an error when trying to parse the song in the specified input format (",t,").",Ke.createElement("br",null),"Please correct the input or try another format.",Ke.createElement("br",null),"The error was:"),Ke.createElement("p",null,'"',r,'"'),Ke.createElement("p",null,'Hint: most of the time, this is related to an unclosed "[" or "{" or an unsupported ChordPro directive'))}$t.propTypes={error:Ue().string,inputFormat:Ue().string.isRequired},$t.defaultProps={};const Zt=$t;function Yt(e){var t=e.setInputFormat,r=e.inputFormat,n=e.id,o=e.label,i=e.isDisabled,a=["sim-InputFormat_Entry"],c=["sim-InputFormat_Label"];return i&&(a.push("sim-InputFormat_Entry-Disabled"),c.push("sim-InputFormat_Label-Disabled")),Ke.createElement(Ke.Fragment,null,Ke.createElement("input",{className:a.join(" "),type:"radio",name:"inputFormat",id:n,value:n,onChange:function(e){i||t(e.target.value)},checked:r===n}),Ke.createElement("label",{className:c.join(" "),htmlFor:n},o))}Yt.propTypes={setInputFormat:Ue().func.isRequired,inputFormat:Ue().string.isRequired,id:Ue().string.isRequired,label:Ue().string.isRequired,isDisabled:Ue().bool.isRequired},Yt.defaultProps={};const Ut=Yt;var Jt=[{id:"auto",label:"Detect"},{id:"chordPro",label:"Bracketed chords (ChordPro)"},{id:"chordsOverLyrics",label:"Chords over lyrics (Ultimate Guitar...)"}];function Xt(e){var t=e.setInputFormat,r=e.inputFormat,n=e.disableAll,o=Jt.map((function(e){return Ke.createElement(Ut,{setInputFormat:t,id:e.id,key:e.id,label:e.label,inputFormat:r,isDisabled:n})}));return Ke.createElement("div",{className:"sim-InputFormat"},"Input format:",o)}Xt.propTypes={disableAll:Ue().bool.isRequired,setInputFormat:Ue().func.isRequired,inputFormat:Ue().string.isRequired},Xt.defaultProps={};const Qt=Xt;function er(e){var t=e.cancelImport,r=e.content,n=e.importFile,o=e.isFromWeb,i=e.isImporting,a=e.setContent,c=e.setInputFormat,l=e.inputFormat,u=e.title;if(!i)return null;var s="",p="";try{s=(0,Nt.cl)(r,{inputFormat:l})}catch(e){p=e.message}return Ke.createElement(kt,{closeModal:t},Ke.createElement("div",{className:"sim-SongImporterModal_Container","data-testid":"song-importer"},Ke.createElement(_t,{cancelImport:t,chordMarkContent:s,content:r,error:p,importFile:n,title:u}),Ke.createElement("div",{className:"sim-TwoColumns_Container"},Ke.createElement("div",{className:"sim-Column_Container"},Ke.createElement(Ht,{setContent:a})),Ke.createElement("div",{className:"sim-Column_Container"},Ke.createElement(Qt,{inputFormat:l,setInputFormat:c,disableAll:!0===o}))),Ke.createElement("div",{className:"sim-TwoColumns_Container sim-TwoColumns_Container-autoHeight"},Ke.createElement("div",{className:"sim-Column_Container"},Ke.createElement(Kt,{content:r,setContent:a,isDisabled:o})),Ke.createElement("div",{className:"sim-Column_Container"},Ke.createElement("div",{className:"sim-Input_Header"},Ke.createElement(ut,{iconName:"arrow_drop_down"}),"ChordMark preview",Ke.createElement(ut,{iconName:"arrow_drop_down"})),Ke.createElement("div",{className:"sim-Preview_Container","data-testid":"sim-preview"},p?Ke.createElement(Zt,{inputFormat:l,error:p}):s)))))}er.propTypes={cancelImport:Ue().func.isRequired,content:Ue().string.isRequired,importFile:Ue().func.isRequired,isFromWeb:Ue().bool.isRequired,isImporting:Ue().bool.isRequired,setContent:Ue().func.isRequired,setInputFormat:Ue().func.isRequired,inputFormat:Ue().string.isRequired,title:Ue().string},er.defaultProps={};const tr=er,rr=(0,Ze.$j)((function(e){return{content:jt(e),isFromWeb:xt(e),isImporting:Ft(e),inputFormat:Pt(e),title:Rt(e)}}),{setContent:function(e,t){return Ae(ge,{content:e,title:t})},setInputFormat:function(e){return Ae(ve,{inputFormat:e})},cancelImport:function(){return Ae(ye)},importFile:St})(tr),nr=[{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 or(e){var t=e.editorMode,r=e.isLeftBarCollapsed,n=e.isRightBarCollapsed,o=e.toggleLeftBar,i=e.toggleRightBar,a=e.setEditorMode,c=e.selectedId,l=e.leftBar,u=e.rightBar,s=["leftBar"];r&&s.push("leftBar-isCollapsed");var p=["rightBar"];return n&&p.push("rightBar-isCollapsed"),Ke.createElement("div",{className:"appLayout-wrapper"},Ke.createElement(rr,null),Ke.createElement("section",{className:s.join(" ")},Ke.createElement("div",{className:"leftBar-content",onClick:r?o:null},Ke.createElement(ct,null),l),Ke.createElement("div",{className:"leftBar-collapser",onClick:o,"data-testid":"leftBar-collapser"},Ke.createElement("span",{className:"leftBar-collapserIcon"},Ke.createElement(ut,{iconName:"keyboard_arrow_left"})))),Ke.createElement("section",{className:"appLayout-main"},Ke.createElement("section",{className:"appLayout-header"},Ke.createElement(mt,{allEntries:nr,currentMode:t,setEditorMode:a,selectedId:c})),Ke.createElement("section",{className:"appLayout-content"},e.children)),Ke.createElement("section",{className:p.join(" ")},Ke.createElement("div",{className:"rightBar-collapser",onClick:i,"data-testid":"rightBar-collapser"},Ke.createElement("span",{className:"rightBar-collapserIcon"},Ke.createElement(ut,{iconName:"keyboard_arrow_right"}))),Ke.createElement("div",{className:"rightBar-content",onClick:n?i:null},Ke.createElement(vt,null),u,Ke.createElement(Et,null))))}or.propTypes={children:Ue().element,isLeftBarCollapsed:Ue().bool,isRightBarCollapsed:Ue().bool,selectedId:Ue().string,toggleLeftBar:Ue().func.isRequired,toggleRightBar:Ue().func.isRequired,editorMode:Ue().string.isRequired,setEditorMode:Ue().func.isRequired,leftBar:Ue().element.isRequired,rightBar:Ue().element.isRequired},or.defaultProps={isLeftBarCollapsed:!1,isRightBarCollapsed:!1};const ir=or,ar=(0,Ze.$j)((function(e){return{editorMode:C(e),isLeftBarCollapsed:O(e),isRightBarCollapsed:S(e),selectedId:j(e)}}),{toggleLeftBar:function(){return Ae(w)},toggleRightBar:function(){return Ae(E)},setEditorMode:ot})(ir);r("+2oP"),r("pjDv"),r("rB9j"),r("ma9I");var cr=r("Iab2"),lr=(r("Rm1S"),r("3ml5")),ur=r("YHmY"),sr=r("UFjr");function pr(e){return pr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pr(e)}function fr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function dr(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]&&arguments[2],"html")}function hr(e,t,r,n){if(r)switch(t.chartFormat){case"chordmarkSrc":return"html"===n?vr(e):e;case"chordpro":t.customRenderer=(0,Nt.n1)();var o=gr(e,t);return"html"===n?vr(o):o;case"ultimateGuitar":t.customRenderer=(0,Nt.eE)();var i=gr(e,dr(dr({},t),{},{customRenderer:(0,Nt.eE)(),printBarSeparators:"grids",printChordsDuration:"never",printSubBeatDelimiters:!1,printInlineTimeSignatures:!1,chordSymbolRenderer:(0,ur.v)(dr({customFilters:[(0,sr.Z)()],useShortNamings:!0,accidentalsType:"auto"===t.accidentalsType?"original":t.accidentalsType},t))}))+"\n\nCreated with Chord Chart Studio (https://chord-chart-studio.netlify.app)";return"html"===n?vr(i):i}var a=gr(e,t);return"html"===n?a:a.match(/(.*?<\/p>)/gm).map((function(e){return Ee(e)})).map((function(e){return" "===e?"":e})).join("\n")}function gr(e,t){try{var r=(0,lr.TG)(e);return(0,lr.II)(r,dr({},t))}catch(e){return e.message}}function vr(e){return e.split("\n").map((function(e){return""===e?" ":e})).map((function(e){return''.concat(e,"")})).join("")}function br(){var e=Me().getState(),t=j(e),r=z(e,t),n={chartFormat:te(e,"editorPreferences","chartFormat"),transposeValue:te(e,"songPreferences","transposeValue"),accidentalsType:te(e,"songPreferences","accidentalsType"),symbolType:te(e,"songPreferences","symbolType"),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")},o=function(e){return hr(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]&&arguments[2],"text")}(r.content,n,!0),i="chordpro"===n.chartFormat?"cho":"txt",a="".concat(r.title,".").concat(i),c=new Blob([o],{type:"text/plain;charset=utf-8",endings:"native"});(0,cr.saveAs)(c,a)}function wr(e){var t=e.confirmAction,r=e.confirmTitle,n=void 0===r?"OK":r,o=e.cancelAction,i=e.cancelTitle,a=void 0===i?"CANCEL":i,c=e.children;return Ke.createElement(kt,{closeModal:o},Ke.createElement("section",{className:"mod-ModalConfirmContainer"},Ke.createElement("div",{className:"mod-ModalConfirmMessage"},c),Ke.createElement("div",{className:"mod-ModalConfirmButtons"},Ke.createElement(ht,{onClick:o,type:"secondary",buttonName:"cancel"},a),Ke.createElement(ht,{onClick:t,type:"primary",buttonName:"confirm"},n))))}wr.propTypes={confirmAction:Ue().func.isRequired,confirmTitle:Ue().string,cancelAction:Ue().func.isRequired,cancelTitle:Ue().string,children:Ue().node.isRequired};const Er=wr;function Or(e){var t=e.selected,r=e.deleteFile,n=e.isDeleting,o=e.setIsDeleting;if(!n)return null;return Ke.createElement(Er,{confirmAction:function(){o(!1),r(t)},confirmTitle:"DELETE",cancelAction:function(){return o(!1)}},"Are you sure you want to delete this file?",Ke.createElement("br",null),"This action cannot be undone.")}Or.propTypes={deleteFile:Ue().func.isRequired,isDeleting:Ue().bool.isRequired,selected:Ue().string.isRequired,setIsDeleting:Ue().func.isRequired};const Sr=Or;function Cr(e){var t=e.icon,r=e.text,n=e.action,o=e.isDisabled,i=["fileManagerAction"];o&&i.push("fileManagerAction-isDisabled");return Ke.createElement("span",{className:i.join(" "),onClick:function(){o||n()}},Ke.createElement("span",{className:"fileManagerAction-icon"},Ke.createElement(ut,{iconName:t})," ",r))}Cr.propTypes={icon:Ue().string.isRequired,text:Ue().string.isRequired,action:Ue().func.isRequired,isDisabled:Ue().bool.isRequired};const jr=Ke.memo(Cr);function Pr(){return Pr=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:"";if(!e)throw new TypeError("Cannot create a file without title");var r={id:(0,Ot.Z)(),title:e,content:t};return Ae(m,r)},deleteFile:function(e){return Ae(y,{id:e})},updateFile:Ct,enableRename:function(e){return Ae(ee,{id:e})},setEditorMode:ot,startImport:function(){return Ae(he,{isFromWeb:!1})}})(Ir);var Ar=r("awlu");function Br(e){return we().sanitize(e)}function Dr(e){var t=e.content,r=e.useChartFormat,n=yr(t,f()(e,["chartFormat","transposeValue","accidentalsType","symbolType","chartType","alignChordsWithLyrics","alignBars","autoRepeatChords","expandSectionCopy"]),r);return Ke.createElement("div",{className:"songRenderer"},Ke.createElement("div",{dangerouslySetInnerHTML:{__html:Br(n)}}))}Dr.propTypes={useChartFormat:Ue().bool.isRequired,chartFormat:Ue().string.isRequired,content:Ue().string},Dr.defaultProps={content:"",useChartFormat:!1};const Wr=Dr,Gr=(0,Ze.$j)((function(e){return{transposeValue:te(e,"songPreferences","transposeValue"),accidentalsType:te(e,"songPreferences","preferredAccidentals"),symbolType:te(e,"songPreferences","symbolType"),chartFormat:te(e,"editorPreferences","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")}}))(Wr);function zr(e){var t=e.selectedFile;return Ke.createElement("div",{className:["editorPreview"].join(" ")},Ke.createElement(Gr,{content:t.content}))}zr.propTypes={selectedFile:Ue().object.isRequired};const Hr=zr;var Vr=r("kdCK"),Kr=r("sgpa"),$r=r("EseL"),Zr=r("Q63i"),Yr=r("jAO3"),Ur=r("7yqC");const Jr=new $r.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"}}});r("vxnP");function Xr(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 Qr(e){return we().sanitize(e,{ALLOWED_TAGS:["p","#text"],KEEP_CONTENT:!1})}r("ylZy");function en(e){var t,r,n=e.selectedFileId,o=e.editorContent,i=e.updateFile,a=(0,Ke.useRef)(),c=(0,Ke.useRef)(),l=(t=n,r=(0,Ke.useRef)(),(0,Ke.useEffect)((function(){r.current=t})),r.current);function u(){return a.current&&a.current.dom.parentNode}function s(){a.current.dom.parentNode.removeChild(a.current.dom)}return(0,Ke.useEffect)((function(){if(!n||a.current&&l===n)u()&&!n&&s();else{u()&&s();var e=function(e){return Vr.yy.create({doc:$r.aw.fromSchema(Jr).parse((t=e,r=Qr(t).split("\n").map((function(e){return"

".concat(e,"

")})).join(""),n=document.createElement("div"),n.innerHTML=Qr(r),n),{preserveWhitespace:"full"}),plugins:[(0,Ur.m8)(),(0,Zr.h)({"Mod-z":Ur.Yw,"Mod-y":Ur.KX}),(0,Zr.h)(Yr.YR)]});var t,r,n}(o);a.current=function(e,t,r){return new Kr.tk(null,{state:e,dispatchTransaction:function(e){var n=this.state.applyTransaction(e),o=n.state,i=n.transactions;this.updateState(o),i.some((function(e){return e.docChanged}))&&t(r,{content:Xr(o)})}})}(e,i,n),c.current.appendChild(a.current.dom),en.editorView=a.current}})),Ke.createElement("div",{className:"prosemirrorWrapper",ref:c})}en.defaultProps={selectedFileId:"",editorContent:""},en.propTypes={selectedFileId:Ue().string,editorContent:Ue().string,updateFile:Ue().func.isRequired};const tn=en;function rn(e){var t=e.selectedFile,r=e.updateFile,n=["songEditor-preview","cmTheme-"+e.theme,"cmTheme-fadeRepeats"];return Ke.createElement(Ke.Fragment,null,Ke.createElement("div",{className:"songEditor-headers"},Ke.createElement("div",{className:"songEditor-sourceHeader"},Ke.createElement(ut,{iconName:"arrow_drop_down"}),"ChordMark source (",Ke.createElement("a",{href:"https://chordmark.netlify.app/docs/getting-started",target:"_blank",rel:"noreferrer",className:"link1"},"tutorial"),")",Ke.createElement(ut,{iconName:"arrow_drop_down"})),Ke.createElement("div",{className:"songEditor-previewHeader"},Ke.createElement(ut,{iconName:"arrow_drop_down"}),"Result preview",Ke.createElement(ut,{iconName:"arrow_drop_down"}))),Ke.createElement(Ar.E,null,Ke.createElement("div",{className:"songEditor"},Ke.createElement(Ar.z,{group:"a"},Ke.createElement("div",{className:"songEditor-source"},Ke.createElement(tn,{editorContent:t.content,updateFile:r,selectedFileId:t.id}))),Ke.createElement(Ar.z,{group:"a"},Ke.createElement("div",{className:n.join(" ")},Ke.createElement(Hr,{selectedFile:t}))))))}rn.propTypes={selectedFile:Ue().object,theme:Ue().string.isRequired,updateFile:Ue().func.isRequired};const nn=rn,on=(0,Ze.$j)((function(e){return{theme:te(e,"editorPreferences","theme")}}))(nn);function an(e){var t=e.selectedFile,r=Ke.createRef(),n=function(e){(e.metaKey||e.ctrlKey)&&"a"===e.key.toLowerCase()&&(e.preventDefault(),window.getSelection().selectAllChildren(r.current))};return(0,Ke.useEffect)((function(){return window.addEventListener("keydown",n),function(){window.removeEventListener("keydown",n)}})),Ke.createElement("div",{className:"exportPreview exp-SongRenderer",ref:r},Ke.createElement(Gr,{content:t.content,useChartFormat:!0}))}an.propTypes={selectedFile:Ue().object.isRequired};const cn=an;function ln(e){var t=e.theme,r=e.selectedFile,n=e.fontSize,o=e.columnsCount,i=["playRendererWrapper1"];i.push("cmTheme-"+t),i.push("cmSong--fontSize"+n);var a=["playRenderer"];return a.push("playRenderer--columns-"+o),Ke.createElement("div",{className:i.join(" "),"data-testid":"playRendererWrapper1"},Ke.createElement("div",{className:"playRendererWrapper2"},Ke.createElement("div",{className:a.join(" "),"data-testid":"playRenderer"},Ke.createElement(Gr,{content:r.content}))))}ln.propTypes={theme:Ue().string.isRequired,fontSize:Ue().number.isRequired,selectedFile:Ue().object.isRequired,columnsCount:Ue().number.isRequired};const un=ln,sn=(0,Ze.$j)((function(e){return{theme:te(e,"editorPreferences","theme"),fontSize:te(e,"songFormatting","fontSize"),columnsCount:te(e,"songFormatting","columnsCount")}}))(un);r("tjZM"),r("lEou"),r("DEfu"),r("I9xj");function pn(e){var t=e.pageHeader,r=e.allColumnsLines,n=e.documentSize,o=e.documentMargins,i=e.fontSize,a=r.map((function(e,t){var r=e.join("");return Ke.createElement("div",{key:t,className:"printPreview-pageColumn","data-testid":"printPreview-pageColumn",dangerouslySetInnerHTML:{__html:Br(r)}})})),c=["printPreview-page"];c.push("printPreview-page--"+n),c.push("cmSong--fontSize"+i),c.push("cmSong");var l=["printPreview-pageContentWrapper"];return l.push("printPreview-pageContentWrapper--padding"+o),Ke.createElement("div",{className:c.join(" "),"data-testid":"printPreview-page"},Ke.createElement("div",{className:l.join(" "),"data-testid":"printPreview-pageContentWrapper"},Ke.createElement("div",{className:"printPreview-pageContent"},t,Ke.createElement("div",{className:"printPreview-pageColumnWrapper"},a))))}pn.defaultProps={allColumnsLines:[]},pn.propTypes={pageHeader:Ue().element,allColumnsLines:Ue().arrayOf(Ue().arrayOf(Ue().string)),documentSize:Ue().string.isRequired,documentMargins:Ue().number.isRequired,fontSize:Ue().number.isRequired};const fn=Ke.memo(pn);function dn(e){var t=e.title;return Ke.createElement("div",{className:"printPreview-pageHeader"},t)}dn.defaultProps={allColumnsLines:[]},dn.propTypes={title:Ue().string.isRequired};const mn=Ke.memo(dn);var yn={emptyLine:"cmEmptyLine",chordLine:"cmChordLine",textLine:"cmLyricLine"};function hn(e,t){var r=t.columnsCount,n=t.firstPageHeight,o=t.normalPageHeight,i=t.columnBreakOnSection,a=t.noEmptyLinesOnColumnStart,c=void 0===a||a,l=t.noOrphanTextLine,u=void 0===l||l,s=function(e){var t=e.firstPageHeight,r=e.normalPageHeight,n=e.columnsCount,o=[],i=0,a=0,c=s(),l=0;function u(e){e.forEach((function(e){p(l+e.height)&&f(),o[i][a].push(e.content),l+=e.height}))}function s(){return 0===i&&t?t:r}function p(e){return e>c}function f(){d()?(i++,o[i]=[],a=0):a++,o[i][a]=[],l=0,c=s()}function d(){return a===n-1}return o[i]=[],o[i][a]=[],{insert:function(e){u(e)},insertOnNextColumn:function(e){f(),u(e)},fitsOnCurrentColumn:function(e){return l+e<=c},fitsOnNextColumn:function(e){return e<=(0===i&&a0&&e.forEach((function(t,r){(function(e,t,r,n){return!(gn(t)&&!e.fitsOnCurrentColumn(t.height)&&0===r.length&&!0===n)})(s,t,p,c)&&(p.push(t),f+=t.height),p.length>0&&function(e,t,r){var n=r.noOrphanTextLine,o=r.columnBreakOnSection;if(gn(e)||!t)return!0;var i=function(e){return vn(e.content,yn.chordLine)}(e)&&function(e){return vn(e.content,yn.textLine)}(t);if(!0===n&&i)return!1;var a=gn(t);if(!0===o&&!a)return!1;return!0}(t,e[r+1],{noOrphanTextLine:u,columnBreakOnSection:i})&&(s.fitsOnCurrentColumn(f)?s.insert(p):s.fitsOnNextColumn(f)?s.insertOnNextColumn(p):s.insert(p),p=[],f=0)})),s.get()}function gn(e){return vn(e.content,yn.emptyLine)}function vn(e,t){return e.indexOf(t)>-1}function bn(e,t){var r=document.createElement("div");r.classList.add("measuring-node"),document.body.appendChild(r);var n=(0,$e.s)(r);return new Promise((function(o){var i=function(){return(0,Ke.useLayoutEffect)((function(){var e=t(r);o(e)})),Ke.createElement("div",null,e)};n.render(Ke.createElement(i,null))})).then((function(e){return n.unmount(),r.parentNode.removeChild(r),e}))}function wn(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=t.length||0;r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;C(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},e}function Cn(e,t,r,n,o,i,a){try{var c=e[i](a),l=c.value}catch(e){return void r(e)}c.done?t(l):Promise.resolve(l).then(n,o)}var jn={line:".cmLine"};function Pn(e,t){return Rn.apply(this,arguments)}function Rn(){var e;return e=Sn().mark((function e(t,r){var n,o,i,a,c,l;return Sn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.columnsCount,o=r.documentSize,i=r.documentMargins,a=r.fontSize,c=Ke.createElement("div",{className:"printPreview cmTheme-print"},Ke.createElement(fn,{allColumnsLines:wn(n,[t]),columnsCount:n,documentSize:o,documentMargins:i,fontSize:a})),l=function(e){var t=[];return e.querySelectorAll(jn.line).forEach((function(e){t.push(e.offsetHeight)})),t},e.next=5,bn(c,l);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})),Rn=function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){Cn(i,n,o,a,c,"next",e)}function c(e){Cn(i,n,o,a,c,"throw",e)}a(void 0)}))},Rn.apply(this,arguments)}function Fn(e){return Fn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fn(e)}function xn(){xn=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function u(e,t,r,o){var i=t&&t.prototype instanceof f?t:f,a=Object.create(i.prototype),c=new j(o||[]);return n(a,"_invoke",{value:E(e,r,c)}),a}function s(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var p={};function f(){}function d(){}function m(){}var y={};l(y,i,(function(){return this}));var h=Object.getPrototypeOf,g=h&&h(h(P([])));g&&g!==t&&r.call(g,i)&&(y=g);var v=m.prototype=f.prototype=Object.create(y);function b(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(n,i,a,c){var l=s(e[n],e,i);if("throw"!==l.type){var u=l.arg,p=u.value;return p&&"object"==Fn(p)&&r.call(p,"__await")?t.resolve(p.__await).then((function(e){o("next",e,a,c)}),(function(e){o("throw",e,a,c)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return o("throw",e,a,c)}))}c(l.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){o(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function E(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return R()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=O(a,r);if(c){if(c===p)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=s(e,t,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===p)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;var o=s(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,p;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;C(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},e}function Nn(e,t,r,n,o,i,a){try{var c=e[i](a),l=c.value}catch(e){return void r(e)}c.done?t(l):Promise.resolve(l).then(n,o)}function Tn(e,t){return kn.apply(this,arguments)}function kn(){var e;return e=xn().mark((function e(t,r){var n,o,i,a,c,l;return xn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.columnsCount,o=r.documentSize,i=r.documentMargins,a=r.fontSize,c=Ke.createElement(fn,{pageHeader:Ke.createElement(mn,{title:t}),allColumnsLines:wn(n),documentSize:o,documentMargins:i,fontSize:a}),l=function(e){var t=e.querySelector(".printPreview-pageContent");return{firstPageHeight:En(e.querySelector(".printPreview-pageColumnWrapper")),normalPageHeight:En(t)}},e.next=5,bn(c,l);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})),kn=function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){Nn(i,n,o,a,c,"next",e)}function c(e){Nn(i,n,o,a,c,"throw",e)}a(void 0)}))},kn.apply(this,arguments)}function Ln(e){return Ln="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ln(e)}function _n(){_n=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function u(e,t,r,o){var i=t&&t.prototype instanceof f?t:f,a=Object.create(i.prototype),c=new j(o||[]);return n(a,"_invoke",{value:E(e,r,c)}),a}function s(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var p={};function f(){}function d(){}function m(){}var y={};l(y,i,(function(){return this}));var h=Object.getPrototypeOf,g=h&&h(h(P([])));g&&g!==t&&r.call(g,i)&&(y=g);var v=m.prototype=f.prototype=Object.create(y);function b(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(n,i,a,c){var l=s(e[n],e,i);if("throw"!==l.type){var u=l.arg,p=u.value;return p&&"object"==Ln(p)&&r.call(p,"__await")?t.resolve(p.__await).then((function(e){o("next",e,a,c)}),(function(e){o("throw",e,a,c)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return o("throw",e,a,c)}))}c(l.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){o(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function E(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return R()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=O(a,r);if(c){if(c===p)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=s(e,t,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===p)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;var o=s(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,p;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function P(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),C(r),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;C(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:P(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},e}function qn(e,t,r,n,o,i,a){try{var c=e[i](a),l=c.value}catch(e){return void r(e)}c.done?t(l):Promise.resolve(l).then(n,o)}function In(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){u=!0,o=e}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Mn(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Mn(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 Mn(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r.*?<\/p>)/gm);return Ke.createElement("div",{className:["printPreview","cmTheme-print"].join(" "),"data-testid":"printPreview"},Ke.createElement(Bn,{title:t.title||"",allLines:o,columnsCount:e.columnsCount,columnBreakOnSection:e.columnBreakOnSection,documentSize:e.documentSize||"a4",documentMargins:e.documentMargins,fontSize:e.fontSize}))}zn.propTypes={chartType:Ue().string.isRequired,selectedFile:Ue().object.isRequired,columnsCount:Ue().number.isRequired,columnBreakOnSection:Ue().bool.isRequired,documentSize:Ue().string,documentMargins:Ue().number.isRequired,fontSize:Ue().number.isRequired};const Hn=zn,Vn=(0,Ze.$j)((function(e){return{accidentalsType:te(e,"songPreferences","preferredAccidentals"),transposeValue:te(e,"songPreferences","transposeValue"),symbolType:te(e,"songPreferences","symbolType"),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"),columnsCount:te(e,"songFormatting","columnsCount"),columnBreakOnSection:te(e,"songFormatting","columnBreakOnSection"),documentMargins:te(e,"songFormatting","documentMargins"),fontSize:te(e,"songFormatting","fontSize")}}))(Hn);function Kn(e){switch(e.editorMode){case"edit":return Ke.createElement(on,e);case"play":return Ke.createElement(sn,e);case"print":return Ke.createElement(Vn,e);case"export":return Ke.createElement(cn,e)}}Kn.propTypes={editorMode:Ue().string.isRequired};const $n=Kn,Zn=(0,Ze.$j)((function(e){return{selectedFile:z(e,j(e))||{},editorMode:C(e)}}),{updateFile:Ct})($n);r("JTJg");function Yn(){return Yn=Object.assign?Object.assign.bind():function(e){for(var t=1;t0||o.push("sb-optionsGroup-isNotInteractable"),Ke.createElement("div",{className:o.join(" ")},Ke.createElement("div",{className:"sb-optionsGroup-title"},Ke.createElement("span",{className:"sb-optionsGroup-iconTitle"},Ke.createElement(ut,{iconName:r}))," ",n),Ke.createElement("div",{className:"sb-optionsGroup-content"},e.children))}Xn.propTypes={isInteractable:Ue().bool.isRequired,icon:Ue().string.isRequired,label:Ue().string.isRequired,children:Ue().arrayOf(Ue().element)},Xn.defaultProps={};const Qn=Xn;r("fbCW");function eo(e){var t,r=e.isSelected,n=e.isInteractable,o=e.label,i=e.onClick,a=["sb-optionSelectChoice"];return r&&(a.push("sb-optionSelectChoice-isSelected"),t=Ke.createElement("span",{className:"sb-optionSelectChoice-checkIcon"},Ke.createElement(ut,{iconName:"check"}))),n||a.push("sb-optionSelectChoice-isNotInteractable"),Ke.createElement("div",{className:a.join(" "),onClick:function(){n&&i()}},Ke.createElement("div",{className:"sb-optionSelectChoice-check"},r&&t),Ke.createElement("div",{className:"sb-optionSelectChoice-label"},o))}eo.propTypes={isSelected:Ue().bool.isRequired,isInteractable:Ue().bool.isRequired,label:Ue().string.isRequired,onClick:Ue().func.isRequired};const to=Ke.memo(eo);function ro(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){u=!0,o=e}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return no(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return no(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 no(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&i?"+"+l:l;return Ke.createElement("div",{className:s.join(" ")},Ke.createElement("div",{className:"sb-optionSlider-desc"},r),Ke.createElement("div",{className:"sb-optionSlider-value"},p),Ke.createElement("div",{className:"sb-optionSlider-range"},Ke.createElement("input",{min:n,max:o,value:l,type:"range",onChange:t?function(e){u(a,c,Number.parseInt(e.target.value))}:null,disabled:!t})))}ao.propTypes={isInteractable:Ue().bool.isRequired,label:Ue().string.isRequired,min:Ue().number.isRequired,max:Ue().number.isRequired,showPlusSymbol:Ue().bool,optionContext:Ue().string.isRequired,optionKey:Ue().string.isRequired,optionValue:Ue().number.isRequired,setOption:Ue().func.isRequired},ao.defaultProps={showPlusSymbol:!0};const co=Ke.memo(ao);function lo(e){var t=e.isInteractable,r=e.label,n=e.optionContext,o=e.optionKey,i=e.optionValue,a=e.setOption,c=["sb-optionToggle"];return c.push(!0===i?"sb-optionToggle-isOn":"sb-optionToggle-isOff"),t||c.push("sb-optionToggle-isNotInteractable"),Ke.createElement("div",{className:c.join(" "),onClick:t?function(){a(n,o,!i)}:null},Ke.createElement("div",{className:"sb-optionToggle-desc"},r),Ke.createElement("div",{className:"sb-optionToggle-icon"},Ke.createElement("span",{className:"sb-optionToggle-icon"},Ke.createElement(ut,{iconName:!0===i?"toggle_on":"toggle_off"}))))}lo.propTypes={isInteractable:Ue().bool.isRequired,label:Ue().string.isRequired,optionContext:Ue().string.isRequired,optionKey:Ue().string.isRequired,optionValue:Ue().bool.isRequired,setOption:Ue().func.isRequired};const uo=Ke.memo(lo);function so(){return so=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r{if(!r){var a=1/0;for(s=0;s=i)&&Object.keys(n.O).every((e=>n.O[e](r[l])))?r.splice(l--,1):(c=!1,i0&&e[s-1][2]>i;s--)e[s]=e[s-1];e[s]=[r,o,i]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={179:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var o,i,[a,c,l]=r,u=0;if(a.some((t=>0!==e[t]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);if(l)var s=l(n)}for(t&&t(r);un("TBfH")));o=n.O(o)})(); +//# sourceMappingURL=main.3a60932e92db6c837452.js.map \ No newline at end of file diff --git a/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.LICENSE.txt b/packages/chord-chart-studio/build/main.3a60932e92db6c837452.js.LICENSE.txt similarity index 100% rename from packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.LICENSE.txt rename to packages/chord-chart-studio/build/main.3a60932e92db6c837452.js.LICENSE.txt diff --git a/packages/chord-chart-studio/build/main.3a60932e92db6c837452.js.map b/packages/chord-chart-studio/build/main.3a60932e92db6c837452.js.map new file mode 100644 index 00000000..2b76fab1 --- /dev/null +++ b/packages/chord-chart-studio/build/main.3a60932e92db6c837452.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.3a60932e92db6c837452.js","mappings":"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","sources":["webpack://chord-chart-studio/webpack/runtime/chunk loaded","webpack://chord-chart-studio/./src/state/localStorage.js","webpack://chord-chart-studio/./src/core/clock.js","webpack://chord-chart-studio/./src/db/files/actionsTypes.js","webpack://chord-chart-studio/./src/db/options/actionsTypes.js","webpack://chord-chart-studio/./src/ui/layout/app/_state/actionsTypes.js","webpack://chord-chart-studio/./src/ui/layout/app/_state/selectors.js","webpack://chord-chart-studio/./src/fileManager/_state/selectors.js","webpack://chord-chart-studio/./src/db/files/selectors.js","webpack://chord-chart-studio/./src/db/options/editorModeOptions.js","webpack://chord-chart-studio/./src/db/files/reducers.js","webpack://chord-chart-studio/./src/fileManager/_state/actionsTypes.js","webpack://chord-chart-studio/./src/db/options/selectors.js","webpack://chord-chart-studio/./src/db/options/reducers.js","webpack://chord-chart-studio/./src/db/reducers.js","webpack://chord-chart-studio/./src/fileManager/_state/reducers.js","webpack://chord-chart-studio/./src/songImporter/_state/actionsTypes.js","webpack://chord-chart-studio/./src/core/stripTags.js","webpack://chord-chart-studio/./src/songImporter/_state/reducers.js","webpack://chord-chart-studio/./src/ui/layout/app/_state/reducers.js","webpack://chord-chart-studio/./src/ui/layout/reducers.js","webpack://chord-chart-studio/./src/ui/reducers.js","webpack://chord-chart-studio/./src/state/reducers.js","webpack://chord-chart-studio/./src/state/seed.js","webpack://chord-chart-studio/./src/db/seed.js","webpack://chord-chart-studio/./src/db/options/seed.js","webpack://chord-chart-studio/./src/state/store.js","webpack://chord-chart-studio/./src/core/createAction.js","webpack://chord-chart-studio/./src/songImporter/_state/actions.js","webpack://chord-chart-studio/./src/songImporter/getMessageHandlers.js","webpack://chord-chart-studio/./src/registerHandlers.js","webpack://chord-chart-studio/./src/ui/_components/ErrorBoundary.js","webpack://chord-chart-studio/./src/ui/layout/app/_state/actions.js","webpack://chord-chart-studio/./src/ui/sideBar/_components/Logo.js","webpack://chord-chart-studio/./src/ui/_components/Icon.js","webpack://chord-chart-studio/./src/ui/layout/app/_components/NavEntry.js","webpack://chord-chart-studio/./src/ui/layout/app/_components/Nav.js","webpack://chord-chart-studio/./src/ui/_components/Button.js","webpack://chord-chart-studio/./src/ui/sideBar/_components/UserGuide.js","webpack://chord-chart-studio/./src/core/getVersions.js","webpack://chord-chart-studio/./src/ui/sideBar/_components/Versions.js","webpack://chord-chart-studio/./src/db/files/actions.js","webpack://chord-chart-studio/./src/songImporter/_state/selectors.js","webpack://chord-chart-studio/./src/ui/_components/Modal.js","webpack://chord-chart-studio/./src/songImporter/_components/Header.js","webpack://chord-chart-studio/./src/songImporter/getUploadedFile.js","webpack://chord-chart-studio/./src/songImporter/_components/FilePicker.js","webpack://chord-chart-studio/./src/songImporter/_components/Input.js","webpack://chord-chart-studio/./src/songImporter/_components/PreviewError.js","webpack://chord-chart-studio/./src/songImporter/_components/InputFormatEntry.js","webpack://chord-chart-studio/./src/songImporter/_components/InputFormatSelector.js","webpack://chord-chart-studio/./src/songImporter/_components/SongImporter.js","webpack://chord-chart-studio/./src/songImporter/_containers/SongImporter.js","webpack://chord-chart-studio/./src/ui/layout/app/allNavEntries.js","webpack://chord-chart-studio/./src/ui/layout/app/_components/App.js","webpack://chord-chart-studio/./src/ui/layout/app/_containers/App.js","webpack://chord-chart-studio/./src/fileManager/_state/actions.js","webpack://chord-chart-studio/./src/core/renderSong.js","webpack://chord-chart-studio/./src/fileManager/exportSelectedFileAsText.js","webpack://chord-chart-studio/./src/ui/_components/ModalConfirm.js","webpack://chord-chart-studio/./src/fileManager/_components/DeleteConfirmModal.js","webpack://chord-chart-studio/./src/fileManager/_components/FileActionEntry.js","webpack://chord-chart-studio/./src/fileManager/_components/FileActions.js","webpack://chord-chart-studio/./src/fileManager/_components/FileEntry.js","webpack://chord-chart-studio/./src/fileManager/_components/FileManager.js","webpack://chord-chart-studio/./src/fileManager/_containers/FileManager.js","webpack://chord-chart-studio/./src/core/escapeHTML.js","webpack://chord-chart-studio/./src/songRenderers/_components/SongRenderer.js","webpack://chord-chart-studio/./src/songRenderers/_containers/SongRenderer.js","webpack://chord-chart-studio/./src/songRenderers/editorPreview/_components/EditorPreview.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/schema.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/converters/stateToText.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/converters/toSafeHtml.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/ProsemirrorEditorView.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/converters/textToDom.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/getPlugins.js","webpack://chord-chart-studio/./src/editor/songEditor/_components/EditorLayout.js","webpack://chord-chart-studio/./src/editor/songEditor/_containers/EditorLayout.js","webpack://chord-chart-studio/./src/songRenderers/exportPreview/_components/ExportPreview.js","webpack://chord-chart-studio/./src/songRenderers/playRenderer/_components/PlayRenderer.js","webpack://chord-chart-studio/./src/songRenderers/playRenderer/_containers/PlayRenderer.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/Page.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/PageHeader.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/mapLinesToColumns.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/getDimensionsFromDom.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/padColumns.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/element.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/getAllLinesHeight.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/getPagesHeight.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/AllPages.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/PrintPreview.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_containers/PrintPreview.js","webpack://chord-chart-studio/./src/editor/_components/Editor.js","webpack://chord-chart-studio/./src/editor/_containers/Editor.js","webpack://chord-chart-studio/./src/optionsPanels/_components/OptionsPanel.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/OptionsGroup.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/SelectChoice.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Select.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Slider.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Toggle.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/SidebarOptionsPanel.js","webpack://chord-chart-studio/./src/db/options/actions.js","webpack://chord-chart-studio/./src/optionsPanels/rendering/_containers/Rendering.js","webpack://chord-chart-studio/./src/optionsPanels/_containers/OptionsPanelFactory.js","webpack://chord-chart-studio/./src/optionsPanels/rendering/allWidgets.js","webpack://chord-chart-studio/./src/optionsPanels/rendering/_state/selectors.js","webpack://chord-chart-studio/./src/optionsPanels/rendering/_components/Rendering.js","webpack://chord-chart-studio/./src/controllers/Editor.js","webpack://chord-chart-studio/./src/router.js","webpack://chord-chart-studio/./src/renderController.js","webpack://chord-chart-studio/./src/app.js","webpack://chord-chart-studio/./src/addSampleContent.js","webpack://chord-chart-studio/webpack/bootstrap","webpack://chord-chart-studio/webpack/runtime/compat get default export","webpack://chord-chart-studio/webpack/runtime/define property getters","webpack://chord-chart-studio/webpack/runtime/global","webpack://chord-chart-studio/webpack/runtime/hasOwnProperty shorthand","webpack://chord-chart-studio/webpack/runtime/node module decorator","webpack://chord-chart-studio/webpack/runtime/publicPath","webpack://chord-chart-studio/webpack/runtime/jsonp chunk loading","webpack://chord-chart-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};","// @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 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: ['theme', 'transposeValue', 'preferredAccidentals', 'symbolType'],\n\tplay: [\n\t\t'theme',\n\n\t\t'transposeValue',\n\t\t'preferredAccidentals',\n\t\t'symbolType',\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],\n\tprint: [\n\t\t'transposeValue',\n\t\t'preferredAccidentals',\n\t\t'symbolType',\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'columnBreakOnSection',\n\t\t'documentMargins',\n\n\t\t'fontSize',\n\t],\n\texport: [\n\t\t'chartFormat',\n\n\t\t'transposeValue',\n\t\t'preferredAccidentals',\n\t\t'symbolType',\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\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: 'auto',\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// editorPreferences are identical for all songs\n\teditorPreferences: {\n\t\tvalues: {\n\t\t\ttheme: 'dark1',\n\t\t\tchartFormat: 'chordmark',\n\t\t},\n\t\tdefaults: {\n\t\t\ttheme: 'dark1',\n\t\t\tchartFormat: 'chordmark',\n\t\t},\n\t\t//userDefaults: {},\n\t},\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\tpreferredAccidentals: 'auto',\n\t\t\tsymbolType: 'chord',\n\t\t},\n\t\tdefaults: {\n\t\t\ttransposeValue: 0,\n\t\t\tpreferredAccidentals: 'auto',\n\t\t\tsymbolType: 'chord',\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\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\tfontSize: 0,\n\t\t\tcolumnsCount: 1,\n\t\t\tcolumnBreakOnSection: true,\n\t\t\tdocumentMargins: 3,\n\t\t},\n\t\tdefaults: {\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\tfontSize: 0,\n\t\t\tcolumnsCount: 1,\n\t\t\tcolumnBreakOnSection: true,\n\t\t\tdocumentMargins: 3,\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","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 {('chordPro|ChordOverLyrics')} inputFormat - format to pass to chord-mark-converter\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.inputFormat, 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 logoSvg from '../../../../../../logo/media/logo.svg';\n\nfunction Logo() {\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\tChord Chart Studio\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\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 = 'https://chord-chart-studio.netlify.app';\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","export default () => ({'chord-chart-studio':'v0.13.0','chord-symbol':'v4.0.0','chord-mark':'v0.13.0'});","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\tChord Chart Studio {versions['chord-chart-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\tLogo by{' '}\n\t\t\t\t\n\t\t\t\t\tDieter Raber\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n}\n\nexport default React.memo(Versions);\n","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: 'auto',\n\t\tlabel: 'Detect',\n\t},\n\t{\n\t\tid: 'chordPro',\n\t\tlabel: 'Bracketed chords (ChordPro)',\n\t},\n\t{\n\t\tid: 'chordsOverLyrics',\n\t\tlabel: 'Chords over lyrics (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 './SongImporter.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { convert2ChordMark } from 'chord-mark-converters';\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 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 = convert2ChordMark(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 {\n\tchordMark2ChordPro,\n\tchordMark2UltimateGuitar,\n} from 'chord-mark-converters';\nimport { chordRendererFactory } from 'chord-symbol';\nimport chordSymbolUltimateGuitar from 'chord-symbol-ultimateguitar';\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) {\n\t\tswitch (renderOptions.chartFormat) {\n\t\t\tcase 'chordmarkSrc':\n\t\t\t\treturn outputFormat === 'html' ? toHtml(songTxt) : songTxt;\n\t\t\tcase 'chordpro': {\n\t\t\t\trenderOptions.customRenderer = chordMark2ChordPro();\n\t\t\t\tconst cpTxt = renderSong(songTxt, renderOptions);\n\t\t\t\treturn outputFormat === 'html' ? toHtml(cpTxt) : cpTxt;\n\t\t\t}\n\t\t\tcase 'ultimateGuitar': {\n\t\t\t\trenderOptions.customRenderer = chordMark2UltimateGuitar();\n\t\t\t\tconst ugTxt =\n\t\t\t\t\trenderSong(songTxt, {\n\t\t\t\t\t\t...renderOptions,\n\t\t\t\t\t\tcustomRenderer: chordMark2UltimateGuitar(),\n\t\t\t\t\t\tprintBarSeparators: 'grids',\n\t\t\t\t\t\tprintChordsDuration: 'never',\n\t\t\t\t\t\tprintSubBeatDelimiters: false,\n\t\t\t\t\t\tprintInlineTimeSignatures: false,\n\t\t\t\t\t\tchordSymbolRenderer: chordRendererFactory({\n\t\t\t\t\t\t\tcustomFilters: [chordSymbolUltimateGuitar()],\n\t\t\t\t\t\t\tuseShortNamings: true,\n\t\t\t\t\t\t\taccidentalsType:\n\t\t\t\t\t\t\t\trenderOptions.accidentalsType === 'auto'\n\t\t\t\t\t\t\t\t\t? 'original'\n\t\t\t\t\t\t\t\t\t: renderOptions.accidentalsType,\n\t\t\t\t\t\t\t...renderOptions, // duh!\n\t\t\t\t\t\t}),\n\t\t\t\t\t}) +\n\t\t\t\t\t'\\n\\nCreated with Chord Chart Studio (https://chord-chart-studio.netlify.app)';\n\t\t\t\treturn outputFormat === 'html' ? toHtml(ugTxt) : ugTxt;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst chordMarkHtml = renderSong(songTxt, renderOptions);\n\treturn outputFormat === 'html' ? chordMarkHtml : toText(chordMarkHtml);\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\nfunction toText(html) {\n\tconst allLines = html.match(/(.*?<\\/p>)/gm);\n\n\treturn allLines\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\tchartFormat: getOptionValue(state, 'editorPreferences', 'chartFormat'),\n\n\t\ttransposeValue: getOptionValue(\n\t\t\tstate,\n\t\t\t'songPreferences',\n\t\t\t'transposeValue'\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\t\tsymbolType: getOptionValue(state, 'songPreferences', 'symbolType'),\n\n\t\tchartType: getOptionValue(state, 'songFormatting', 'chartType'),\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'chartFormat',\n\n\t\t'transposeValue',\n\t\t'accidentalsType',\n\t\t'symbolType',\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 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\taccidentalsType: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'preferredAccidentals'\n\t),\n\tsymbolType: getOptionValue(state, 'songPreferences', 'symbolType'),\n\n\t// songFormatting\n\tchartFormat: getOptionValue(state, 'editorPreferences', '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 { 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/_components/EditorPreview';\nimport ProseMirrorEditorView from '../prosemirror/ProsemirrorEditorView';\nimport Icon from '../../../ui/_components/Icon';\n\nfunction EditorLayout(props) {\n\tconst { selectedFile, updateFile, theme } = props;\n\n\tconst previewClassNames = [\n\t\t'songEditor-preview',\n\t\t'cmTheme-' + theme,\n\t\t'cmTheme-fadeRepeats',\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\tChordMark source (\n\t\t\t\t\t\n\t\t\t\t\t\ttutorial\n\t\t\t\t\t\n\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\tResult preview\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\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\t\n\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\nEditorLayout.propTypes = {\n\tselectedFile: PropTypes.object,\n\ttheme: PropTypes.string.isRequired,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default EditorLayout;\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../../db/options/selectors';\n\nimport EditorLayout from '../_components/EditorLayout';\n\nexport default connect((state) => ({\n\ttheme: getOptionValue(state, 'editorPreferences', 'theme'),\n}))(EditorLayout);\n","import './ExportPreview.scss';\n\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction ExportPreview(props) {\n\tconst { selectedFile } = props;\n\n\tconst exportPreviewRef = React.createRef();\n\n\tconst selectAll = (e) => {\n\t\tif ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'a') {\n\t\t\te.preventDefault();\n\t\t\twindow.getSelection().selectAllChildren(exportPreviewRef.current);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\twindow.addEventListener('keydown', selectAll);\n\t\treturn () => {\n\t\t\twindow.removeEventListener('keydown', selectAll);\n\t\t};\n\t});\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 { theme, selectedFile, fontSize, columnsCount } = props;\n\n\tconst wrapperClassNames = ['playRendererWrapper1'];\n\twrapperClassNames.push('cmTheme-' + theme);\n\twrapperClassNames.push('cmSong--fontSize' + fontSize);\n\n\tconst classNames = ['playRenderer'];\n\tclassNames.push('playRenderer--columns-' + columnsCount);\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\ttheme: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tselectedFile: PropTypes.object.isRequired,\n\tcolumnsCount: PropTypes.number.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\ttheme: getOptionValue(state, 'editorPreferences', 'theme'),\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\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('cmSong--fontSize' + fontSize);\n\tpageClasses.push('cmSong');\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: 'cmLyricLine',\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} columnBreakOnSection\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\tcolumnBreakOnSection,\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\tcolumnBreakOnSection,\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, columnBreakOnSection }\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 (columnBreakOnSection === 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, { useLayoutEffect } from 'react';\nimport { createRoot } from 'react-dom/client';\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\tconst root = createRoot(container);\n\n\treturn new Promise((resolve) => {\n\t\tconst MeasuringComponent = () => {\n\t\t\tuseLayoutEffect(() => {\n\t\t\t\tconst measure = measuringFn(container);\n\t\t\t\tresolve(measure);\n\t\t\t});\n\n\t\t\treturn
    {component}
    ;\n\t\t};\n\n\t\troot.render();\n\t}).then((measure) => {\n\t\troot.unmount();\n\t\tcontainer.parentNode.removeChild(container);\n\n\t\treturn measure;\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\tcolumnBreakOnSection,\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\tcolumnBreakOnSection,\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\tcolumnBreakOnSection,\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\tcolumnBreakOnSection: 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 } = props;\n\n\tconst renderOptions = _pick(props, [\n\t\t'transposeValue',\n\t\t'accidentalsType',\n\t\t'symbolType',\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 rendered = renderAsHtml(selectedFile.content || '', {\n\t\t...renderOptions,\n\t});\n\tconst allLines = rendered.match(/(.*?<\\/p>)/gm);\n\n\tconst classNames = ['printPreview', 'cmTheme-print'];\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\tcolumnBreakOnSection: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.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\taccidentalsType: getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'preferredAccidentals'\n\t),\n\ttransposeValue: getOptionValue(state, 'songPreferences', 'transposeValue'),\n\tsymbolType: getOptionValue(state, 'songPreferences', 'symbolType'),\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\tcolumnBreakOnSection: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'columnBreakOnSection'\n\t),\n\tdocumentMargins: getOptionValue(state, 'songFormatting', 'documentMargins'),\n\n\tfontSize: getOptionValue(state, 'songFormatting', 'fontSize'),\n}))(PrintPreview);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport EditorLayout from '../songEditor/_containers/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\tif (renderedGroupWidgets.length === 0) {\n\t\t\t\t\treturn null;\n\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 from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction OptionsGroup(props) {\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\tfunction shouldBeInteractable() {\n\t\treturn isInteractable && props.children && props.children.length > 0;\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\t{label}\n\t\t\t
    \n\t\t\t
    {props.children}
    \n\t\t
    \n\t);\n}\n\nOptionsGroup.propTypes = {\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\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: ['editorPreferences', 'key', 'preferences', 'layout'],\n\n\tallWidgets: {\n\t\teditorPreferences: {\n\t\t\tlabel: 'Editor preferences',\n\t\t\ttype: 'optionsGroup',\n\t\t\ticon: 'tune',\n\n\t\t\tgroupWidgetsOrder: ['theme', 'chartFormat'],\n\t\t\tallGroupWidgets: {\n\t\t\t\ttheme: {\n\t\t\t\t\tlabel: 'Theme',\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: 'themeDark1',\n\t\t\t\t\t\t\t\tlabel: 'Dark 1 (default)',\n\t\t\t\t\t\t\t\tvalue: 'dark1',\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: 'themeDark2',\n\t\t\t\t\t\t\t\tlabel: 'Dark 2',\n\t\t\t\t\t\t\t\tvalue: 'dark2',\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: 'themeDark3',\n\t\t\t\t\t\t\t\tlabel: 'Dark 3',\n\t\t\t\t\t\t\t\tvalue: 'dark3',\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: 'editorPreferences',\n\t\t\t\t\t\tkey: 'theme',\n\t\t\t\t\t},\n\t\t\t\t},\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\t{\n\t\t\t\t\t\t\t\tid: 'formatUG',\n\t\t\t\t\t\t\t\tlabel: 'UltimateGuitar',\n\t\t\t\t\t\t\t\tvalue: 'ultimateGuitar',\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: 'editorPreferences',\n\t\t\t\t\t\tkey: 'chartFormat',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\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'preferredAccidentals',\n\t\t\t\t'symbolType',\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\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\n\t\t\t\tsymbolType: {\n\t\t\t\t\tlabel: 'Symbols 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: 'symbolTypeChord',\n\t\t\t\t\t\t\t\tlabel: 'Chord symbols',\n\t\t\t\t\t\t\t\tvalue: 'chord',\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: 'symbolTypeRoman',\n\t\t\t\t\t\t\t\tlabel: 'Roman numerals',\n\t\t\t\t\t\t\t\tvalue: 'roman',\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: 'symbolType',\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: 'Chart settings',\n\t\t\ttype: 'optionsGroup',\n\t\t\ticon: 'tune',\n\n\t\t\tgroupWidgetsOrder: [\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\tchartType: {\n\t\t\t\t\tlabel: '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: 'Show everything',\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'fontSize',\n\t\t\t\t'columnsCount',\n\t\t\t\t'columnBreakOnSection',\n\t\t\t\t'documentMargins',\n\t\t\t],\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\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\tcolumnBreakOnSection: {\n\t\t\t\t\tlabel: 'Column Break on section',\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: 'columnBreakOnSection',\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\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 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(\n\t\tstate,\n\t\t'editorPreferences',\n\t\t'chartFormat'\n\t);\n\tconst editorMode = getEditorMode(state);\n\n\tif (editorMode === 'export') {\n\t\tif (chartFormat === 'chordmarkSrc') {\n\t\t\tnonInteractableWidgets.push('chartType');\n\t\t\tnonInteractableWidgets.push('alignChordsWithLyrics');\n\t\t\tnonInteractableWidgets.push('alignBars');\n\t\t\tnonInteractableWidgets.push('autoRepeatChords');\n\t\t\tnonInteractableWidgets.push('expandSectionCopy');\n\t\t}\n\t}\n\n\treturn nonInteractableWidgets;\n};\n\nexport const getHiddenWidgets = (state) => {\n\tconst hiddenWidgets = [];\n\n\tconst allOptions = Object.keys({\n\t\t...getOptionsDefaults(state, 'editorPreferences'),\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\thiddenWidgets.push(...nonInteractableOptions);\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 { createRoot } from 'react-dom/client';\n\nimport { Provider } from 'react-redux';\nimport { getStore } from './state/store';\n\nimport ErrorBoundary from './ui/_components/ErrorBoundary';\n\nexport default function renderController(Controller) {\n\tconst container = document.getElementById('app');\n\tconst root = createRoot(container);\n\n\troot.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);\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[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkchord_chart_studio\"] = self[\"webpackChunkchord_chart_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__(\"TBfH\")))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadState","serializedState","localStorage","getItem","JSON","parse","err","saveState","state","stringify","setItem","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","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","updateFileOption","action","fullState","payload","context","key","value","includes","optionCategory","fileState","addOption","FILE_MANAGER_SELECT_FILE","FILE_MANAGER_ENABLE_RENAME","getOptionValue","values","getOptionsDefaults","defaults","getModeOptions","fileId","mode","defaultOptions","editorModeOptions","_pick","allEditorModeOptions","combineSectionReducers","type","actionTypes","content","createFile","updateFile","deleteFile","nextMode","previousModeOptions","setEditorMode","newState","setOptionValue","newOptions","songFormatting","songPreferences","defaultPreferences","newPreferences","selectFile","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","editorPreferences","theme","chartFormat","transposeValue","preferredAccidentals","symbolType","chartType","alignChordsWithLyrics","alignBars","autoRepeatChords","expandSectionCopy","fontSize","columnsCount","columnBreakOnSection","documentMargins","store","getStore","createAction","TypeError","songImporterHandlers","message","buildTitle","artist","dispatch","actionsTypes","startImportFromWeb","chordChart","songTitle","_handleMessage","e","allHandlers","source","window","origin","location","data","ErrorBoundary","props","error","errorInfo","this","setState","className","style","whiteSpace","open","toString","componentStack","children","React","propTypes","PropTypes","Logo","href","logoSvg","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","getVersions","target","rel","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","accept","Input","allClasses","PreviewError","InputFormatEntry","setInputFormat","allInputClasses","allLabelClasses","checked","InputFormatSelector","disableAll","rendered","SongImporter","convert2ChordMark","connect","App","toggleLeftBar","toggleRightBar","leftBar","rightBar","leftBarClassNames","rightBarClassNames","allNavEntries","renderAsHtml","songTxt","render","renderOptions","useChartFormat","outputFormat","toHtml","customRenderer","chordMark2ChordPro","cpTxt","renderSong","chordMark2UltimateGuitar","ugTxt","printBarSeparators","printChordsDuration","printSubBeatDelimiters","printInlineTimeSignatures","chordSymbolRenderer","chordRendererFactory","customFilters","chordSymbolUltimateGuitar","useShortNamings","accidentalsType","chordMarkHtml","match","line","parsed","parseSong","renderSongCm","split","exportSelectedFileAsText","getState","selectedFile","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","paragraph","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","some","tr","docChanged","createEditorView","appendChild","EditorLayout","previewClassNames","ExportPreview","exportPreviewRef","selectAll","metaKey","ctrlKey","selectAllChildren","PlayRenderer","wrapperClassNames","Page","pageHeader","allColumnsLines","documentSize","allSectionsRendered","columnLines","index","columnLinesTxt","pageClasses","pageContentWrapperClasses","PageHeader","cssClasses","emptyLine","chordLine","textLine","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","root","createRoot","MeasuringComponent","useLayoutEffect","measure","unmount","padColumns","columnCount","allColumns","i","getClientHeight","element","clientHeight","cssSelectors","getAllLinesHeight","allLines","allLinesHeight","querySelectorAll","offsetHeight","pageContent","querySelector","AllPages","setAllPagesColumns","getDimensions","pageOptions","getPagesHeight","mapped","allPagesRendered","pageColumns","PrintPreview","Editor","OptionsPanel","widget","groupWidget","WidgetComponent","GroupComponent","isGroupInteractable","isGroupWidgetInteractable","renderedGroupWidgets","allWidgets","nonInteractableWidgets","hiddenWidgets","setOption","getEntryComponent","renderedWidgets","widgetsOrder","filter","widgetId","groupWidgetsOrder","groupWidgetId","allGroupWidgets","renderWidget","isInteractable","localWidget","optionContext","option","optionKey","optionValue","typeOptions","OptionsGroup","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","navigateTo","controller","Controller","getElementById","storeEnhancers","composeWithDevTools","applyMiddleware","thunkMiddleware","persistedState","rendering","_defaultsDeep","seed","createReduxStore","allReducers","subscribe","createStore","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","src","scripts","getElementsByTagName","Error","replace","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js b/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js deleted file mode 100644 index 290e8804..00000000 --- a/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see main.6c2b09763d09b4b4339a.js.LICENSE.txt */ -(()=>{"use strict";var e,t={TBfH:(e,t,r)=>{var n=r("P4Tr"),o=r.n(n),i=r("m14p"),a=r("5HXA"),c=r("sINF"),l=r("R0vF"),s=(r("yq1k"),r("tkto"),r("pNMO"),r("TeQF"),r("07d7"),r("5DmW"),r("FZtP"),r("27RR"),r("JZM8")),u=r.n(s);function p(){return Date.now()}var d="db/files/Create",f="db/files/Delete",m="db/files/Import",h="db/files/Update",y="db/options/setOptionValue",g="ui/layout/app/setEditorMode",v="ui/layout/app/toggleLeftBar",b="ui/layout/app/toggleRightBar",w=function(e){return e.ui.layout.app.isLeftBarCollapsed},E=function(e){return e.ui.layout.app.isRightBarCollapsed},O=function(e){return e.ui.layout.app.editorMode},C=function(e){return e.fileManager.selected},j=function(e){return e.fileManager.renamed},S=function(e){return e.fileManager.defaultTitle},P=(r("ToJy"),r("zKZe"),r("3WF5")),R=r.n(P),F=r("BkRI"),x=r.n(F),N=r("Y+p1"),k=r.n(N),L=r("xweI"),T=r.n(L),_=r("G4qV"),q=r("EsgF");function I(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function A(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:$,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};switch(t.type){case d:case m:return Z(e,t);case h:return U(e,t);case f:return Y(e,t);case y:return J(e,t,r);case g:return X(e,t,r)}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]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};switch(t.type){case y:return ce(e,t);case g:return le(e,t,r);case Q:return ue(e,t,r)}return e}});function de(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function fe(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:Ne,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case v:return Fe(Fe({},e),{},{isLeftBarCollapsed:!e.isLeftBarCollapsed});case b:return Fe(Fe({},e),{},{isRightBarCollapsed:!e.isRightBarCollapsed});case g:var r=t.payload.mode;return Fe(Fe({},e),{},{editorMode:r});case f:case d:case m:return Fe(Fe({},e),{},{editorMode:"edit"})}return e}}),Le=(0,l.Z)({layout:ke}),Te=(0,l.Z)({db:pe,fileManager:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:he,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case d:var r=t.payload.id;return fe(fe({},e),{},{selected:r,renamed:r});case m:var n=t.payload.id;return fe(fe({},e),{},{selected:n,renamed:""});case h:return fe(fe({},e),{},{renamed:""});case f:return fe(fe({},e),{},{selected:"",renamed:""});case Q:var o=t.payload.id;return fe(fe({},e),{},{selected:o,renamed:o===e.renamed?o:""});case ee:var i=t.payload.id;return fe(fe({},e),{},{renamed:i})}return e},songImporter:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Pe,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case ve:var r=t.payload,n=r.content,o=r.title,i=void 0===o?"":o;return je(je({},e),{},{content:Oe(n),title:i?Oe(i):e.title});case be:var a=t.payload.inputFormat;return je(je({},e),{},{inputFormat:a});case m:case ye:return je(je({},e),{},{content:"",title:"",isImporting:!1});case ge:var c=t.payload,l=c.content,s=c.inputFormat,u=c.title,p=c.isFromWeb;return je(je({},e),{},{isImporting:!0,content:l?Oe(l):"",title:u?Oe(u):"",inputFormat:s||e.inputFormat,isFromWeb:p})}return e},ui:Le}),_e={db:{options:{editorPreferences:{values:{theme:"dark1",chartFormat:"chordmark"},defaults:{theme:"dark1",chartFormat:"chordmark"}},songPreferences:{values:{transposeValue:0,harmonizeAccidentals:!0,preferredAccidentals:"auto"},defaults:{transposeValue:0,harmonizeAccidentals:!0,preferredAccidentals:"auto"}},songFormatting:{values:{chartType:"all",alignChordsWithLyrics:!0,alignBars:!0,autoRepeatChords:!0,expandSectionCopy:!0,fontSize:0,columnsCount:1,columnBreakOnSection:!0,documentMargins:3},defaults:{chartType:"all",alignChordsWithLyrics:!0,alignBars:!0,autoRepeatChords:!0,expandSectionCopy:!0,fontSize:0,columnsCount:1,columnBreakOnSection:!0,documentMargins:3}}}}};var qe;function Ie(){var e=(0,a.Uo)((0,i.md)(c.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 r=o()(t,_e);(qe=(0,i.MT)(Te,r,e)).subscribe((function(){!function(e){try{var t=JSON.stringify(e);localStorage.setItem("state",t)}catch(e){}}(qe.getState())}))}function Ae(){return qe}function Me(e,t){if(!e)throw new TypeError("Cannot create an action without an action type");return{type:e,payload:t}}var Be={"@CCS/IMPORT_TAB":function(e){var t=Ae(),r=De(e.title,e.artist);t.dispatch(function(e,t,r){return Me(ge,{content:t,inputFormat:e,title:r,isFromWeb:!0})}(e.inputFormat,e.chordChart,r))}},De=function(e,t){var r=e;return t&&(r+=" - "+t),r};function ze(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function We(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,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 r={id:(0,Et.Z)(),title:e,content:t};return Me(m,r)},Ct=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.title,n=t.content;if(!e)throw new TypeError("Cannot update a file without an id");var o={id:e,title:r,content:n};return Me(h,o)},jt=function(e){return e.songImporter.content},St=function(e){return e.songImporter.inputFormat},Pt=function(e){return e.songImporter.title},Rt=function(e){return e.songImporter.isImporting},Ft=function(e){return e.songImporter.isFromWeb},xt=r("sQWp");function Nt(e){var t=e.children,r=e.closeModal;return(0,Ve.useEffect)((function(){var e=function(e){"Escape"===e.key&&r()};return window.addEventListener("keyup",e),function(){window.removeEventListener("keyup",e)}})),Ve.createElement("section",{className:"mod-ModalContainer"},Ve.createElement("div",{className:"mod-Overlay",onClick:r,"data-testid":"modal-overlay"}),Ve.createElement("div",{className:"mod-ContentContainer"},t))}Nt.propTypes={children:Ue().element.isRequired,closeModal:Ue().func.isRequired};const kt=Nt;var Lt=function(e){var t=e.cancelImport,r=e.chordMarkContent,n=e.importFile,o=e.title,i=e.content,a=e.error,c=o?'Import "'+o+'"':"Import song";return Ve.createElement("div",{className:"sim-Header_Container"},Ve.createElement("div",{className:"sim-Header_Title"},c),Ve.createElement("div",{className:"sim-Header_Actions"},Ve.createElement(yt,{onClick:t,buttonName:"cancel",type:"secondary"},"CANCEL"),Ve.createElement(yt,{onClick:function(){n(o||"[untitled]",r)},buttonName:"import",type:"primary",isDisabled:""===i||""!==a},"IMPORT")))};Lt.propTypes={cancelImport:Ue().func.isRequired,chordMarkContent:Ue().string,content:Ue().string,error:Ue().string,importFile:Ue().func.isRequired,title:Ue().string};const Tt=Lt;r("5s+n"),r("sMBO");var _t=r("Ck5k"),qt=function(e){return e.name.substr(0,e.name.lastIndexOf("."))},It=function(e){return e.size>51200},At=function(e){return 0===e.type.indexOf("text")||0===e.type.length},Mt=function(e){return"The selected file is too big: "+(0,_t.G)(e,{round:0})+" (maximum allowed file size is "+(0,_t.G)(51200,{round:0})+")."},Bt=function(e){return"Cannot import file of type "+e.type+"."},Dt=function(){return"No file selected."};const zt=function(e){return new Promise((function(t,r){if(e.length){var n=e[0];It(n)?r(Mt(n.size)):At(n)?n.text().then((function(e){t({content:e,title:qt(n)})})).catch((function(e){r(e)})):r(Bt(n))}else r(Dt())}))};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:Ue().func.isRequired};const Gt=Wt;function Ht(e){var t=e.content,r=e.setContent,n=e.isDisabled,o=["sim-Input_Textarea"];return n&&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){r(e.target.value)},value:t,disabled:n,"data-testid":"sim-input"}))}Ht.propTypes={content:Ue().string.isRequired,isDisabled:Ue().bool.isRequired,setContent:Ue().func.isRequired},Ht.defaultProps={};const Vt=Ht;function Kt(e){var t=e.inputFormat,r=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,'"',r,'"'),Ve.createElement("p",null,'Hint: most of the time, this is related to an unclosed "[" or "{" or an unsupported ChordPro directive'))}Kt.propTypes={error:Ue().string,inputFormat:Ue().string.isRequired},Kt.defaultProps={};const $t=Kt;function Zt(e){var t=e.setInputFormat,r=e.inputFormat,n=e.id,o=e.label,i=e.isDisabled,a=["sim-InputFormat_Entry"],c=["sim-InputFormat_Label"];return i&&(a.push("sim-InputFormat_Entry-Disabled"),c.push("sim-InputFormat_Label-Disabled")),Ve.createElement(Ve.Fragment,null,Ve.createElement("input",{className:a.join(" "),type:"radio",name:"inputFormat",id:n,value:n,onChange:function(e){i||t(e.target.value)},checked:r===n}),Ve.createElement("label",{className:c.join(" "),htmlFor:n},o))}Zt.propTypes={setInputFormat:Ue().func.isRequired,inputFormat:Ue().string.isRequired,id:Ue().string.isRequired,label:Ue().string.isRequired,isDisabled:Ue().bool.isRequired},Zt.defaultProps={};const Ut=Zt;var Yt=[{id:"auto",label:"Detect"},{id:"chordPro",label:"Bracketed chords (ChordPro)"},{id:"chordsOverLyrics",label:"Chords over lyrics (Ultimate Guitar...)"}];function Jt(e){var t=e.setInputFormat,r=e.inputFormat,n=e.disableAll,o=Yt.map((function(e){return Ve.createElement(Ut,{setInputFormat:t,id:e.id,key:e.id,label:e.label,inputFormat:r,isDisabled:n})}));return Ve.createElement("div",{className:"sim-InputFormat"},"Input format:",o)}Jt.propTypes={disableAll:Ue().bool.isRequired,setInputFormat:Ue().func.isRequired,inputFormat:Ue().string.isRequired},Jt.defaultProps={};const Xt=Jt;function Qt(e){var t=e.cancelImport,r=e.content,n=e.importFile,o=e.isFromWeb,i=e.isImporting,a=e.setContent,c=e.setInputFormat,l=e.inputFormat,s=e.title;if(!i)return null;var u="",p="";try{u=(0,xt.convert2ChordMark)(r,{inputFormat:l})}catch(e){p=e.message}return Ve.createElement(kt,{closeModal:t},Ve.createElement("div",{className:"sim-SongImporterModal_Container","data-testid":"song-importer"},Ve.createElement(Tt,{cancelImport:t,chordMarkContent:u,content:r,error:p,importFile:n,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:l,setInputFormat:c,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:r,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($t,{inputFormat:l,error:p}):u)))))}Qt.propTypes={cancelImport:Ue().func.isRequired,content:Ue().string.isRequired,importFile:Ue().func.isRequired,isFromWeb:Ue().bool.isRequired,isImporting:Ue().bool.isRequired,setContent:Ue().func.isRequired,setInputFormat:Ue().func.isRequired,inputFormat:Ue().string.isRequired,title:Ue().string},Qt.defaultProps={};const er=Qt,tr=(0,$e.$j)((function(e){return{content:jt(e),isFromWeb:Ft(e),isImporting:Rt(e),inputFormat:St(e),title:Pt(e)}}),{setContent:function(e,t){return Me(ve,{content:e,title:t})},setInputFormat:function(e){return Me(be,{inputFormat:e})},cancelImport:function(){return Me(ye)},importFile:Ot})(er),rr=[{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 nr(e){var t=e.editorMode,r=e.isLeftBarCollapsed,n=e.isRightBarCollapsed,o=e.toggleLeftBar,i=e.toggleRightBar,a=e.setEditorMode,c=e.selectedId,l=e.leftBar,s=e.rightBar,u=["leftBar"];r&&u.push("leftBar-isCollapsed");var p=["rightBar"];return n&&p.push("rightBar-isCollapsed"),Ve.createElement("div",{className:"appLayout-wrapper"},Ve.createElement(tr,null),Ve.createElement("section",{className:u.join(" ")},Ve.createElement("div",{className:"leftBar-content",onClick:r?o:null},Ve.createElement(ct,null),l),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(mt,{allEntries:rr,currentMode:t,setEditorMode:a,selectedId:c})),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:n?i:null},Ve.createElement(vt,null),s,Ve.createElement(wt,null))))}nr.propTypes={children:Ue().element,isLeftBarCollapsed:Ue().bool,isRightBarCollapsed:Ue().bool,selectedId:Ue().string,toggleLeftBar:Ue().func.isRequired,toggleRightBar:Ue().func.isRequired,editorMode:Ue().string.isRequired,setEditorMode:Ue().func.isRequired,leftBar:Ue().element.isRequired,rightBar:Ue().element.isRequired},nr.defaultProps={isLeftBarCollapsed:!1,isRightBarCollapsed:!1};const or=nr,ir=(0,$e.$j)((function(e){return{editorMode:O(e),isLeftBarCollapsed:w(e),isRightBarCollapsed:E(e),selectedId:C(e)}}),{toggleLeftBar:function(){return Me(v)},toggleRightBar:function(){return Me(b)},setEditorMode:ot})(or);r("+2oP"),r("pjDv"),r("rB9j"),r("ma9I");var ar=r("Iab2"),cr=(r("Rm1S"),r("XHOe")),lr=r("qmfH"),sr=r("HwAp"),ur=r.n(sr);function pr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function dr(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return hr(e,t,r,"html")}function hr(e,t,r,n){if(r)switch(t.chartFormat){case"chordmarkSrc":return"html"===n?gr(e):e;case"chordpro":t.customRenderer=(0,xt.chordMark2ChordPro)();var o=yr(e,t);return"html"===n?gr(o):o;case"ultimateGuitar":t.customRenderer=(0,xt.chordMark2UltimateGuitar)();var i=yr(e,dr(dr({},t),{},{customRenderer:(0,xt.chordMark2UltimateGuitar)(),printBarSeparators:"grids",printChordsDuration:"never",chordSymbolRenderer:(0,lr.chordRendererFactory)(dr({customFilters:[ur()()],useShortNamings:!0,useFlats:"flat"===t.accidentalsType},t))}))+"\n\nCreated with Chord Chart Studio (https://chord-chart-studio.netlify.app)";return"html"===n?gr(i):i}var a=yr(e,t);return"html"===n?a:a.match(/(.*?<\/p>)/gm).map((function(e){return Oe(e)})).map((function(e){return" "===e?"":e})).join("\n")}function yr(e,t){try{var r=(0,cr.parseSong)(e);return(0,cr.renderSong)(r,dr({},t))}catch(e){return e.message}}function gr(e){return e.split("\n").map((function(e){return""===e?" ":e})).map((function(e){return''.concat(e,"")})).join("")}function vr(){var e=Ae().getState(),t=C(e),r=D(e,t),n={chartFormat:te(e,"editorPreferences","chartFormat"),transposeValue:te(e,"songPreferences","transposeValue"),harmonizeAccidentals:te(e,"songPreferences","harmonizeAccidentals"),accidentalsType:te(e,"songPreferences","accidentalsType"),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")},o=function(e){return hr(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]&&arguments[2],"text")}(r.content,n,!0),i="chordpro"===n.chartFormat?"cho":"txt",a="".concat(r.title,".").concat(i),c=new Blob([o],{type:"text/plain;charset=utf-8",endings:"native"});(0,ar.saveAs)(c,a)}function br(e){var t=e.confirmAction,r=e.confirmTitle,n=void 0===r?"OK":r,o=e.cancelAction,i=e.cancelTitle,a=void 0===i?"CANCEL":i,c=e.children;return Ve.createElement(kt,{closeModal:o},Ve.createElement("section",{className:"mod-ModalConfirmContainer"},Ve.createElement("div",{className:"mod-ModalConfirmMessage"},c),Ve.createElement("div",{className:"mod-ModalConfirmButtons"},Ve.createElement(yt,{onClick:o,type:"secondary",buttonName:"cancel"},a),Ve.createElement(yt,{onClick:t,type:"primary",buttonName:"confirm"},n))))}br.propTypes={confirmAction:Ue().func.isRequired,confirmTitle:Ue().string,cancelAction:Ue().func.isRequired,cancelTitle:Ue().string,children:Ue().node.isRequired};const wr=br;function Er(e){var t=e.selected,r=e.deleteFile,n=e.isDeleting,o=e.setIsDeleting;if(!n)return null;return Ve.createElement(wr,{confirmAction:function(){o(!1),r(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.")}Er.propTypes={deleteFile:Ue().func.isRequired,isDeleting:Ue().bool.isRequired,selected:Ue().string.isRequired,setIsDeleting:Ue().func.isRequired};const Or=Er;function Cr(e){var t=e.icon,r=e.text,n=e.action,o=e.isDisabled,i=["fileManagerAction"];o&&i.push("fileManagerAction-isDisabled");return Ve.createElement("span",{className:i.join(" "),onClick:function(){o||n()}},Ve.createElement("span",{className:"fileManagerAction-icon"},Ve.createElement(st,{iconName:t})," ",r))}Cr.propTypes={icon:Ue().string.isRequired,text:Ue().string.isRequired,action:Ue().func.isRequired,isDisabled:Ue().bool.isRequired};const jr=Ve.memo(Cr);function Sr(){return Sr=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:"";if(!e)throw new TypeError("Cannot create a file without title");var r={id:(0,Et.Z)(),title:e,content:t};return Me(d,r)},deleteFile:function(e){return Me(f,{id:e})},updateFile:Ct,enableRename:function(e){return Me(ee,{id:e})},setEditorMode:ot,startImport:function(){return Me(ge,{isFromWeb:!1})}})(qr);var Ar=r("awlu");function Mr(e){return Ee().sanitize(e)}function Br(e){var t=e.content,r=e.useChartFormat,n=mr(t,u()(e,["chartFormat","transposeValue","harmonizeAccidentals","accidentalsType","chartType","alignChordsWithLyrics","alignBars","autoRepeatChords","expandSectionCopy"]),r);return Ve.createElement("div",{className:"songRenderer"},Ve.createElement("div",{dangerouslySetInnerHTML:{__html:Mr(n)}}))}Br.propTypes={useChartFormat:Ue().bool.isRequired,chartFormat:Ue().string.isRequired,content:Ue().string},Br.defaultProps={content:"",useChartFormat:!1};const Dr=Br,zr=(0,$e.$j)((function(e){return{transposeValue:te(e,"songPreferences","transposeValue"),harmonizeAccidentals:te(e,"songPreferences","harmonizeAccidentals"),accidentalsType:te(e,"songPreferences","preferredAccidentals"),chartFormat:te(e,"editorPreferences","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")}}))(Dr);function Wr(e){var t=e.selectedFile;return Ve.createElement("div",{className:["editorPreview"].join(" ")},Ve.createElement(zr,{content:t.content}))}Wr.propTypes={selectedFile:Ue().object.isRequired};const Gr=Wr;var Hr=r("kdCK"),Vr=r("sgpa"),Kr=r("EseL"),$r=r("Q63i"),Zr=r("jAO3"),Ur=r("7yqC");const Yr=new Kr.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"}}});r("vxnP");function Jr(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 Xr(e){return Ee().sanitize(e,{ALLOWED_TAGS:["p","#text"],KEEP_CONTENT:!1})}r("ylZy");function Qr(e){var t,r,n=e.selectedFileId,o=e.editorContent,i=e.updateFile,a=(0,Ve.useRef)(),c=(0,Ve.useRef)(),l=(t=n,r=(0,Ve.useRef)(),(0,Ve.useEffect)((function(){r.current=t})),r.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(!n||a.current&&l===n)s()&&!n&&u();else{s()&&u();var e=function(e){return Hr.yy.create({doc:Kr.aw.fromSchema(Yr).parse((t=e,r=Xr(t).split("\n").map((function(e){return"

    ".concat(e,"

    ")})).join(""),n=document.createElement("div"),n.innerHTML=Xr(r),n),{preserveWhitespace:"full"}),plugins:[(0,Ur.m8)(),(0,$r.h)({"Mod-z":Ur.Yw,"Mod-y":Ur.KX}),(0,$r.h)(Zr.YR)]});var t,r,n}(o);a.current=function(e,t,r){return new Vr.tk(null,{state:e,dispatchTransaction:function(e){var n=this.state.applyTransaction(e),o=n.state,i=n.transactions;this.updateState(o),i.some((function(e){return e.docChanged}))&&t(r,{content:Jr(o)})}})}(e,i,n),c.current.appendChild(a.current.dom),Qr.editorView=a.current}})),Ve.createElement("div",{className:"prosemirrorWrapper",ref:c})}Qr.defaultProps={selectedFileId:"",editorContent:""},Qr.propTypes={selectedFileId:Ue().string,editorContent:Ue().string,updateFile:Ue().func.isRequired};const en=Qr;function tn(e){var t=e.selectedFile,r=e.updateFile,n=["songEditor-preview","cmTheme-"+e.theme,"cmTheme-fadeRepeats"];return Ve.createElement(Ve.Fragment,null,Ve.createElement("div",{className:"songEditor-headers"},Ve.createElement("div",{className:"songEditor-sourceHeader"},Ve.createElement(st,{iconName:"arrow_drop_down"}),"ChordMark source (",Ve.createElement("a",{href:"https://chordmark.netlify.app/docs/getting-started",target:"_blank",rel:"noreferrer",className:"link1"},"tutorial"),")",Ve.createElement(st,{iconName:"arrow_drop_down"})),Ve.createElement("div",{className:"songEditor-previewHeader"},Ve.createElement(st,{iconName:"arrow_drop_down"}),"Result preview",Ve.createElement(st,{iconName:"arrow_drop_down"}))),Ve.createElement(Ar.E,null,Ve.createElement("div",{className:"songEditor"},Ve.createElement(Ar.z,{group:"a"},Ve.createElement("div",{className:"songEditor-source"},Ve.createElement(en,{editorContent:t.content,updateFile:r,selectedFileId:t.id}))),Ve.createElement(Ar.z,{group:"a"},Ve.createElement("div",{className:n.join(" ")},Ve.createElement(Gr,{selectedFile:t}))))))}tn.propTypes={selectedFile:Ue().object,theme:Ue().string.isRequired,updateFile:Ue().func.isRequired};const rn=tn,nn=(0,$e.$j)((function(e){return{theme:te(e,"editorPreferences","theme")}}))(rn);function on(e){var t=e.selectedFile,r=Ve.createRef(),n=function(e){(e.metaKey||e.ctrlKey)&&"a"===e.key.toLowerCase()&&(e.preventDefault(),window.getSelection().selectAllChildren(r.current))};return(0,Ve.useEffect)((function(){return window.addEventListener("keydown",n),function(){window.removeEventListener("keydown",n)}})),Ve.createElement("div",{className:"exportPreview exp-SongRenderer",ref:r},Ve.createElement(zr,{content:t.content,useChartFormat:!0}))}on.propTypes={selectedFile:Ue().object.isRequired};const an=on;function cn(e){var t=e.theme,r=e.selectedFile,n=e.fontSize,o=e.columnsCount,i=["playRendererWrapper1"];i.push("cmTheme-"+t),i.push("cmSong--fontSize"+n);var a=["playRenderer"];return a.push("playRenderer--columns-"+o),Ve.createElement("div",{className:i.join(" "),"data-testid":"playRendererWrapper1"},Ve.createElement("div",{className:"playRendererWrapper2"},Ve.createElement("div",{className:a.join(" "),"data-testid":"playRenderer"},Ve.createElement(zr,{content:r.content}))))}cn.propTypes={theme:Ue().string.isRequired,fontSize:Ue().number.isRequired,selectedFile:Ue().object.isRequired,columnsCount:Ue().number.isRequired};const ln=cn,sn=(0,$e.$j)((function(e){return{theme:te(e,"editorPreferences","theme"),fontSize:te(e,"songFormatting","fontSize"),columnsCount:te(e,"songFormatting","columnsCount")}}))(ln);r("tjZM"),r("lEou"),r("DEfu"),r("I9xj");function un(e){var t=e.pageHeader,r=e.allColumnsLines,n=e.documentSize,o=e.documentMargins,i=e.fontSize,a=r.map((function(e,t){var r=e.join("");return Ve.createElement("div",{key:t,className:"printPreview-pageColumn","data-testid":"printPreview-pageColumn",dangerouslySetInnerHTML:{__html:Mr(r)}})})),c=["printPreview-page"];c.push("printPreview-page--"+n),c.push("cmSong--fontSize"+i),c.push("cmSong");var l=["printPreview-pageContentWrapper"];return l.push("printPreview-pageContentWrapper--padding"+o),Ve.createElement("div",{className:c.join(" "),"data-testid":"printPreview-page"},Ve.createElement("div",{className:l.join(" "),"data-testid":"printPreview-pageContentWrapper"},Ve.createElement("div",{className:"printPreview-pageContent"},t,Ve.createElement("div",{className:"printPreview-pageColumnWrapper"},a))))}un.defaultProps={allColumnsLines:[]},un.propTypes={pageHeader:Ue().element,allColumnsLines:Ue().arrayOf(Ue().arrayOf(Ue().string)),documentSize:Ue().string.isRequired,documentMargins:Ue().number.isRequired,fontSize:Ue().number.isRequired};const pn=Ve.memo(un);function dn(e){var t=e.title;return Ve.createElement("div",{className:"printPreview-pageHeader"},t)}dn.defaultProps={allColumnsLines:[]},dn.propTypes={title:Ue().string.isRequired};const fn=Ve.memo(dn);var mn="cmEmptyLine",hn="cmChordLine",yn="cmLyricLine";function gn(e,t){var r=t.columnsCount,n=t.firstPageHeight,o=t.normalPageHeight,i=t.columnBreakOnSection,a=t.noEmptyLinesOnColumnStart,c=void 0===a||a,l=t.noOrphanTextLine,s=void 0===l||l,u=function(e){var t=e.firstPageHeight,r=e.normalPageHeight,n=e.columnsCount,o=[],i=0,a=0,c=u(),l=0;function s(e){e.forEach((function(e){p(l+e.height)&&d(),o[i][a].push(e.content),l+=e.height}))}function u(){return 0===i&&t?t:r}function p(e){return e>c}function d(){f()?(i++,o[i]=[],a=0):a++,o[i][a]=[],l=0,c=u()}function f(){return a===n-1}return o[i]=[],o[i][a]=[],{insert:function(e){s(e)},insertOnNextColumn:function(e){d(),s(e)},fitsOnCurrentColumn:function(e){return l+e<=c},fitsOnNextColumn:function(e){return e<=(0===i&&a0&&e.forEach((function(t,r){(function(e,t,r,n){return!(vn(t)&&!e.fitsOnCurrentColumn(t.height)&&0===r.length&&!0===n)})(u,t,p,c)&&(p.push(t),d+=t.height),p.length>0&&function(e,t,r){var n=r.noOrphanTextLine,o=r.columnBreakOnSection;if(vn(e)||!t)return!0;var i=function(e){return bn(e.content,hn)}(e)&&function(e){return bn(e.content,yn)}(t);if(!0===n&&i)return!1;var a=vn(t);if(!0===o&&!a)return!1;return!0}(t,e[r+1],{noOrphanTextLine:s,columnBreakOnSection:i})&&(u.fitsOnCurrentColumn(d)?u.insert(p):u.fitsOnNextColumn(d)?u.insertOnNextColumn(p):u.insert(p),p=[],d=0)})),u.get()}function vn(e){return bn(e.content,mn)}function bn(e,t){return e.indexOf(t)>-1}function wn(e,t){var r=document.createElement("div");r.classList.add("measuring-node"),document.body.appendChild(r);var n=(0,Ke.s)(r);return new Promise((function(o){var i=function(){return(0,Ve.useLayoutEffect)((function(){var e=t(r);o(e)})),Ve.createElement("div",null,e)};n.render(Ve.createElement(i,null))})).then((function(e){return n.unmount(),r.parentNode.removeChild(r),e}))}function En(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=t.length||0;r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:j(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}function Pn(e,t,r,n,o,i,a){try{var c=e[i](a),l=c.value}catch(e){return void r(e)}c.done?t(l):Promise.resolve(l).then(n,o)}function Rn(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){Pn(i,n,o,a,c,"next",e)}function c(e){Pn(i,n,o,a,c,"throw",e)}a(void 0)}))}}var Fn=".cmLine";function xn(e,t){return Nn.apply(this,arguments)}function Nn(){return(Nn=Rn(Sn().mark((function e(t,r){var n,o,i,a,c,l;return Sn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.columnsCount,o=r.documentSize,i=r.documentMargins,a=r.fontSize,c=Ve.createElement("div",{className:"printPreview cmTheme-print"},Ve.createElement(pn,{allColumnsLines:En(n,[t]),columnsCount:n,documentSize:o,documentMargins:i,fontSize:a})),l=function(e){var t=[];return e.querySelectorAll(Fn).forEach((function(e){t.push(On(e))})),t},e.next=5,wn(c,l);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function kn(e){return kn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kn(e)}function Ln(){Ln=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function l(e,t,r,n){var o=t&&t.prototype instanceof p?t:p,i=Object.create(o.prototype),a=new C(n||[]);return i._invoke=function(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return S()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=w(a,r);if(c){if(c===u)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=s(e,t,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===u)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}(e,r,a),i}function s(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var u={};function p(){}function d(){}function f(){}var m={};c(m,o,(function(){return this}));var h=Object.getPrototypeOf,y=h&&h(h(j([])));y&&y!==t&&r.call(y,o)&&(m=y);var g=f.prototype=p.prototype=Object.create(m);function v(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function n(o,i,a,c){var l=s(e[o],e,i);if("throw"!==l.type){var u=l.arg,p=u.value;return p&&"object"==kn(p)&&r.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,c)}),(function(e){n("throw",e,a,c)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,c)}))}c(l.arg)}var o;this._invoke=function(e,r){function i(){return new t((function(t,o){n(e,r,t,o)}))}return o=o?o.then(i,i):i()}}function w(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var n=s(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,u;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function C(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function j(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:j(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}function Tn(e,t,r,n,o,i,a){try{var c=e[i](a),l=c.value}catch(e){return void r(e)}c.done?t(l):Promise.resolve(l).then(n,o)}function _n(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){Tn(i,n,o,a,c,"next",e)}function c(e){Tn(i,n,o,a,c,"throw",e)}a(void 0)}))}}function qn(e,t){return In.apply(this,arguments)}function In(){return(In=_n(Ln().mark((function e(t,r){var n,o,i,a,c,l;return Ln().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.columnsCount,o=r.documentSize,i=r.documentMargins,a=r.fontSize,c=Ve.createElement(pn,{pageHeader:Ve.createElement(fn,{title:t}),allColumnsLines:En(n),documentSize:o,documentMargins:i,fontSize:a}),l=function(e){var t=e.querySelector(".printPreview-pageContent");return{firstPageHeight:Cn(e.querySelector(".printPreview-pageColumnWrapper")),normalPageHeight:Cn(t)}},e.next=5,wn(c,l);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function An(e){return An="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},An(e)}function Mn(){Mn=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function l(e,t,r,n){var o=t&&t.prototype instanceof p?t:p,i=Object.create(o.prototype),a=new C(n||[]);return i._invoke=function(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return S()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=w(a,r);if(c){if(c===u)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=s(e,t,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===u)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}(e,r,a),i}function s(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var u={};function p(){}function d(){}function f(){}var m={};c(m,o,(function(){return this}));var h=Object.getPrototypeOf,y=h&&h(h(j([])));y&&y!==t&&r.call(y,o)&&(m=y);var g=f.prototype=p.prototype=Object.create(m);function v(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function n(o,i,a,c){var l=s(e[o],e,i);if("throw"!==l.type){var u=l.arg,p=u.value;return p&&"object"==An(p)&&r.call(p,"__await")?t.resolve(p.__await).then((function(e){n("next",e,a,c)}),(function(e){n("throw",e,a,c)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,c)}))}c(l.arg)}var o;this._invoke=function(e,r){function i(){return new t((function(t,o){n(e,r,t,o)}))}return o=o?o.then(i,i):i()}}function w(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var n=s(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,u;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function C(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function j(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:j(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}function Bn(e,t,r,n,o,i,a){try{var c=e[i](a),l=c.value}catch(e){return void r(e)}c.done?t(l):Promise.resolve(l).then(n,o)}function Dn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return zn(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return zn(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 zn(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r.*?<\/p>)/gm);return Ve.createElement("div",{className:["printPreview","cmTheme-print"].join(" "),"data-testid":"printPreview"},Ve.createElement(Gn,{title:t.title||"",allLines:o,columnsCount:e.columnsCount,columnBreakOnSection:e.columnBreakOnSection,documentSize:e.documentSize||"a4",documentMargins:e.documentMargins,fontSize:e.fontSize}))}Kn.propTypes={chartType:Ue().string.isRequired,selectedFile:Ue().object.isRequired,columnsCount:Ue().number.isRequired,columnBreakOnSection:Ue().bool.isRequired,documentSize:Ue().string,documentMargins:Ue().number.isRequired,fontSize:Ue().number.isRequired};const $n=Kn,Zn=(0,$e.$j)((function(e){return{harmonizeAccidentals:te(e,"songPreferences","harmonizeAccidentals"),accidentalsType:te(e,"songPreferences","preferredAccidentals"),transposeValue:te(e,"songPreferences","transposeValue"),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"),columnsCount:te(e,"songFormatting","columnsCount"),columnBreakOnSection:te(e,"songFormatting","columnBreakOnSection"),documentMargins:te(e,"songFormatting","documentMargins"),fontSize:te(e,"songFormatting","fontSize")}}))($n);function Un(e){switch(e.editorMode){case"edit":return Ve.createElement(nn,e);case"play":return Ve.createElement(sn,e);case"print":return Ve.createElement(Zn,e);case"export":return Ve.createElement(an,e)}}Un.propTypes={editorMode:Ue().string.isRequired};const Yn=Un,Jn=(0,$e.$j)((function(e){return{selectedFile:D(e,C(e))||{},editorMode:O(e)}}),{updateFile:Ct})(Yn);r("JTJg");function Xn(){return Xn=Object.assign?Object.assign.bind():function(e){for(var t=1;t0||o.push("sb-optionsGroup-isNotInteractable"),Ve.createElement("div",{className:o.join(" ")},Ve.createElement("div",{className:"sb-optionsGroup-title"},Ve.createElement("span",{className:"sb-optionsGroup-iconTitle"},Ve.createElement(st,{iconName:r}))," ",n),Ve.createElement("div",{className:"sb-optionsGroup-content"},e.children))}to.propTypes={isInteractable:Ue().bool.isRequired,icon:Ue().string.isRequired,label:Ue().string.isRequired,children:Ue().arrayOf(Ue().element)},to.defaultProps={};const ro=to;r("fbCW");function no(e){var t,r=e.isSelected,n=e.isInteractable,o=e.label,i=e.onClick,a=["sb-optionSelectChoice"];return r&&(a.push("sb-optionSelectChoice-isSelected"),t=Ve.createElement("span",{className:"sb-optionSelectChoice-checkIcon"},Ve.createElement(st,{iconName:"check"}))),n||a.push("sb-optionSelectChoice-isNotInteractable"),Ve.createElement("div",{className:a.join(" "),onClick:function(){n&&i()}},Ve.createElement("div",{className:"sb-optionSelectChoice-check"},r&&t),Ve.createElement("div",{className:"sb-optionSelectChoice-label"},o))}no.propTypes={isSelected:Ue().bool.isRequired,isInteractable:Ue().bool.isRequired,label:Ue().string.isRequired,onClick:Ue().func.isRequired};const oo=Ve.memo(no);function io(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ao(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ao(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 ao(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&i?"+"+l:l;return Ve.createElement("div",{className:u.join(" ")},Ve.createElement("div",{className:"sb-optionSlider-desc"},r),Ve.createElement("div",{className:"sb-optionSlider-value"},p),Ve.createElement("div",{className:"sb-optionSlider-range"},Ve.createElement("input",{min:n,max:o,value:l,type:"range",onChange:t?function(e){s(a,c,Number.parseInt(e.target.value))}:null,disabled:!t})))}so.propTypes={isInteractable:Ue().bool.isRequired,label:Ue().string.isRequired,min:Ue().number.isRequired,max:Ue().number.isRequired,showPlusSymbol:Ue().bool,optionContext:Ue().string.isRequired,optionKey:Ue().string.isRequired,optionValue:Ue().number.isRequired,setOption:Ue().func.isRequired},so.defaultProps={showPlusSymbol:!0};const uo=Ve.memo(so);function po(e){var t=e.isInteractable,r=e.label,n=e.optionContext,o=e.optionKey,i=e.optionValue,a=e.setOption,c=["sb-optionToggle"];return c.push(!0===i?"sb-optionToggle-isOn":"sb-optionToggle-isOff"),t||c.push("sb-optionToggle-isNotInteractable"),Ve.createElement("div",{className:c.join(" "),onClick:t?function(){a(n,o,!i)}:null},Ve.createElement("div",{className:"sb-optionToggle-desc"},r),Ve.createElement("div",{className:"sb-optionToggle-icon"},Ve.createElement("span",{className:"sb-optionToggle-icon"},Ve.createElement(st,{iconName:!0===i?"toggle_on":"toggle_off"}))))}po.propTypes={isInteractable:Ue().bool.isRequired,label:Ue().string.isRequired,optionContext:Ue().string.isRequired,optionKey:Ue().string.isRequired,optionValue:Ue().bool.isRequired,setOption:Ue().func.isRequired};const fo=Ve.memo(po);function mo(){return mo=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r{if(!r){var a=1/0;for(u=0;u=i)&&Object.keys(n.O).every((e=>n.O[e](r[l])))?r.splice(l--,1):(c=!1,i0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[r,o,i]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={179:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var o,i,[a,c,l]=r,s=0;if(a.some((t=>0!==e[t]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);if(l)var u=l(n)}for(t&&t(r);sn("TBfH")));o=n.O(o)})(); -//# sourceMappingURL=main.6c2b09763d09b4b4339a.js.map \ No newline at end of file diff --git a/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.map b/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.map deleted file mode 100644 index 4b629cd1..00000000 --- a/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.6c2b09763d09b4b4339a.js","mappings":"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","sources":["webpack://chord-chart-studio/webpack/runtime/chunk loaded","webpack://chord-chart-studio/./src/core/clock.js","webpack://chord-chart-studio/./src/db/files/actionsTypes.js","webpack://chord-chart-studio/./src/db/options/actionsTypes.js","webpack://chord-chart-studio/./src/ui/layout/app/_state/actionsTypes.js","webpack://chord-chart-studio/./src/ui/layout/app/_state/selectors.js","webpack://chord-chart-studio/./src/fileManager/_state/selectors.js","webpack://chord-chart-studio/./src/db/files/selectors.js","webpack://chord-chart-studio/./src/db/options/editorModeOptions.js","webpack://chord-chart-studio/./src/db/files/reducers.js","webpack://chord-chart-studio/./src/fileManager/_state/actionsTypes.js","webpack://chord-chart-studio/./src/db/options/selectors.js","webpack://chord-chart-studio/./src/db/options/reducers.js","webpack://chord-chart-studio/./src/db/reducers.js","webpack://chord-chart-studio/./src/fileManager/_state/reducers.js","webpack://chord-chart-studio/./src/songImporter/_state/actionsTypes.js","webpack://chord-chart-studio/./src/core/stripTags.js","webpack://chord-chart-studio/./src/songImporter/_state/reducers.js","webpack://chord-chart-studio/./src/ui/layout/app/_state/reducers.js","webpack://chord-chart-studio/./src/ui/layout/reducers.js","webpack://chord-chart-studio/./src/ui/reducers.js","webpack://chord-chart-studio/./src/state/reducers.js","webpack://chord-chart-studio/./src/state/seed.js","webpack://chord-chart-studio/./src/db/seed.js","webpack://chord-chart-studio/./src/db/options/seed.js","webpack://chord-chart-studio/./src/state/store.js","webpack://chord-chart-studio/./src/state/localStorage.js","webpack://chord-chart-studio/./src/core/createAction.js","webpack://chord-chart-studio/./src/songImporter/_state/actions.js","webpack://chord-chart-studio/./src/songImporter/getMessageHandlers.js","webpack://chord-chart-studio/./src/registerHandlers.js","webpack://chord-chart-studio/./src/ui/_components/ErrorBoundary.js","webpack://chord-chart-studio/./src/ui/layout/app/_state/actions.js","webpack://chord-chart-studio/./src/ui/sideBar/_components/Logo.js","webpack://chord-chart-studio/./src/ui/_components/Icon.js","webpack://chord-chart-studio/./src/ui/layout/app/_components/NavEntry.js","webpack://chord-chart-studio/./src/ui/layout/app/_components/Nav.js","webpack://chord-chart-studio/./src/ui/_components/Button.js","webpack://chord-chart-studio/./src/ui/sideBar/_components/UserGuide.js","webpack://chord-chart-studio/./src/ui/sideBar/_components/Versions.js","webpack://chord-chart-studio/./src/core/getVersions.js","webpack://chord-chart-studio/./src/db/files/actions.js","webpack://chord-chart-studio/./src/songImporter/_state/selectors.js","webpack://chord-chart-studio/./src/ui/_components/Modal.js","webpack://chord-chart-studio/./src/songImporter/_components/Header.js","webpack://chord-chart-studio/./src/songImporter/getUploadedFile.js","webpack://chord-chart-studio/./src/songImporter/_components/FilePicker.js","webpack://chord-chart-studio/./src/songImporter/_components/Input.js","webpack://chord-chart-studio/./src/songImporter/_components/PreviewError.js","webpack://chord-chart-studio/./src/songImporter/_components/InputFormatEntry.js","webpack://chord-chart-studio/./src/songImporter/_components/InputFormatSelector.js","webpack://chord-chart-studio/./src/songImporter/_components/SongImporter.js","webpack://chord-chart-studio/./src/songImporter/_containers/SongImporter.js","webpack://chord-chart-studio/./src/ui/layout/app/allNavEntries.js","webpack://chord-chart-studio/./src/ui/layout/app/_components/App.js","webpack://chord-chart-studio/./src/ui/layout/app/_containers/App.js","webpack://chord-chart-studio/./src/fileManager/_state/actions.js","webpack://chord-chart-studio/./src/core/renderSong.js","webpack://chord-chart-studio/./src/fileManager/exportSelectedFileAsText.js","webpack://chord-chart-studio/./src/ui/_components/ModalConfirm.js","webpack://chord-chart-studio/./src/fileManager/_components/DeleteConfirmModal.js","webpack://chord-chart-studio/./src/fileManager/_components/FileActionEntry.js","webpack://chord-chart-studio/./src/fileManager/_components/FileActions.js","webpack://chord-chart-studio/./src/fileManager/_components/FileEntry.js","webpack://chord-chart-studio/./src/fileManager/_components/FileManager.js","webpack://chord-chart-studio/./src/fileManager/_containers/FileManager.js","webpack://chord-chart-studio/./src/core/escapeHTML.js","webpack://chord-chart-studio/./src/songRenderers/_components/SongRenderer.js","webpack://chord-chart-studio/./src/songRenderers/_containers/SongRenderer.js","webpack://chord-chart-studio/./src/songRenderers/editorPreview/_components/EditorPreview.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/schema.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/converters/stateToText.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/converters/toSafeHtml.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/ProsemirrorEditorView.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/converters/textToDom.js","webpack://chord-chart-studio/./src/editor/songEditor/prosemirror/getPlugins.js","webpack://chord-chart-studio/./src/editor/songEditor/_components/EditorLayout.js","webpack://chord-chart-studio/./src/editor/songEditor/_containers/EditorLayout.js","webpack://chord-chart-studio/./src/songRenderers/exportPreview/_components/ExportPreview.js","webpack://chord-chart-studio/./src/songRenderers/playRenderer/_components/PlayRenderer.js","webpack://chord-chart-studio/./src/songRenderers/playRenderer/_containers/PlayRenderer.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/Page.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/PageHeader.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/mapLinesToColumns.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/getDimensionsFromDom.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/padColumns.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/element.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/getAllLinesHeight.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/helpers/getPagesHeight.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/AllPages.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_components/PrintPreview.js","webpack://chord-chart-studio/./src/songRenderers/printPreview/_containers/PrintPreview.js","webpack://chord-chart-studio/./src/editor/_components/Editor.js","webpack://chord-chart-studio/./src/editor/_containers/Editor.js","webpack://chord-chart-studio/./src/optionsPanels/_components/OptionsPanel.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/OptionsGroup.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/SelectChoice.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Select.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Slider.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/Toggle.js","webpack://chord-chart-studio/./src/ui/sideBar/options/_components/SidebarOptionsPanel.js","webpack://chord-chart-studio/./src/db/options/actions.js","webpack://chord-chart-studio/./src/optionsPanels/rendering/_containers/Rendering.js","webpack://chord-chart-studio/./src/optionsPanels/_containers/OptionsPanelFactory.js","webpack://chord-chart-studio/./src/optionsPanels/rendering/allWidgets.js","webpack://chord-chart-studio/./src/optionsPanels/rendering/_state/selectors.js","webpack://chord-chart-studio/./src/optionsPanels/rendering/_components/Rendering.js","webpack://chord-chart-studio/./src/controllers/Editor.js","webpack://chord-chart-studio/./src/router.js","webpack://chord-chart-studio/./src/renderController.js","webpack://chord-chart-studio/./src/app.js","webpack://chord-chart-studio/./src/addSampleContent.js","webpack://chord-chart-studio/webpack/bootstrap","webpack://chord-chart-studio/webpack/runtime/compat get default export","webpack://chord-chart-studio/webpack/runtime/define property getters","webpack://chord-chart-studio/webpack/runtime/global","webpack://chord-chart-studio/webpack/runtime/hasOwnProperty shorthand","webpack://chord-chart-studio/webpack/runtime/node module decorator","webpack://chord-chart-studio/webpack/runtime/publicPath","webpack://chord-chart-studio/webpack/runtime/jsonp chunk loading","webpack://chord-chart-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\t\t'theme',\n\n\t\t'transposeValue',\n\t\t'harmonizeAccidentals',\n\t\t'preferredAccidentals',\n\t],\n\tplay: [\n\t\t'theme',\n\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],\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'columnBreakOnSection',\n\t\t'documentMargins',\n\n\t\t'fontSize',\n\t],\n\texport: [\n\t\t'chartFormat',\n\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\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: 'auto',\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// editorPreferences are identical for all songs\n\teditorPreferences: {\n\t\tvalues: {\n\t\t\ttheme: 'dark1',\n\t\t\tchartFormat: 'chordmark',\n\t\t},\n\t\tdefaults: {\n\t\t\ttheme: 'dark1',\n\t\t\tchartFormat: 'chordmark',\n\t\t},\n\t\t//userDefaults: {},\n\t},\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\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\tfontSize: 0,\n\t\t\tcolumnsCount: 1,\n\t\t\tcolumnBreakOnSection: true,\n\t\t\tdocumentMargins: 3,\n\t\t},\n\t\tdefaults: {\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\tfontSize: 0,\n\t\t\tcolumnsCount: 1,\n\t\t\tcolumnBreakOnSection: true,\n\t\t\tdocumentMargins: 3,\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 {('chordPro|ChordOverLyrics')} inputFormat - format to pass to chord-mark-converter\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.inputFormat, 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 logoSvg from '../../../../../../logo/media/logo.svg';\n\nfunction Logo() {\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\tChord Chart Studio\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\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 = 'https://chord-chart-studio.netlify.app';\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\tChord Chart Studio {versions['chord-chart-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\tLogo by{' '}\n\t\t\t\t\n\t\t\t\t\tDieter Raber\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n}\n\nexport default React.memo(Versions);\n","export default () => ({'chord-chart-studio':'v0.13.0','chord-symbol':'3.0.0','chord-mark':'v0.12.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: 'auto',\n\t\tlabel: 'Detect',\n\t},\n\t{\n\t\tid: 'chordPro',\n\t\tlabel: 'Bracketed chords (ChordPro)',\n\t},\n\t{\n\t\tid: 'chordsOverLyrics',\n\t\tlabel: 'Chords over lyrics (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 './SongImporter.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { convert2ChordMark } from 'chord-mark-converters';\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 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 = convert2ChordMark(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 {\n\tchordMark2ChordPro,\n\tchordMark2UltimateGuitar,\n} from 'chord-mark-converters';\nimport { chordRendererFactory } from 'chord-symbol';\nimport chordSymbolUltimateGuitar from 'chord-symbol-ultimateguitar';\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) {\n\t\tswitch (renderOptions.chartFormat) {\n\t\t\tcase 'chordmarkSrc':\n\t\t\t\treturn outputFormat === 'html' ? toHtml(songTxt) : songTxt;\n\t\t\tcase 'chordpro': {\n\t\t\t\trenderOptions.customRenderer = chordMark2ChordPro();\n\t\t\t\tconst cpTxt = renderSong(songTxt, renderOptions);\n\t\t\t\treturn outputFormat === 'html' ? toHtml(cpTxt) : cpTxt;\n\t\t\t}\n\t\t\tcase 'ultimateGuitar': {\n\t\t\t\trenderOptions.customRenderer = chordMark2UltimateGuitar();\n\t\t\t\tconst ugTxt =\n\t\t\t\t\trenderSong(songTxt, {\n\t\t\t\t\t\t...renderOptions,\n\t\t\t\t\t\tcustomRenderer: chordMark2UltimateGuitar(),\n\t\t\t\t\t\tprintBarSeparators: 'grids',\n\t\t\t\t\t\tprintChordsDuration: 'never',\n\t\t\t\t\t\tchordSymbolRenderer: chordRendererFactory({\n\t\t\t\t\t\t\tcustomFilters: [chordSymbolUltimateGuitar()],\n\t\t\t\t\t\t\tuseShortNamings: true,\n\t\t\t\t\t\t\tuseFlats: renderOptions.accidentalsType === 'flat',\n\t\t\t\t\t\t\t...renderOptions, // duh!\n\t\t\t\t\t\t}),\n\t\t\t\t\t}) +\n\t\t\t\t\t'\\n\\nCreated with Chord Chart Studio (https://chord-chart-studio.netlify.app)';\n\t\t\t\treturn outputFormat === 'html' ? toHtml(ugTxt) : ugTxt;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst chordMarkHtml = renderSong(songTxt, renderOptions);\n\treturn outputFormat === 'html' ? chordMarkHtml : toText(chordMarkHtml);\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\nfunction toText(html) {\n\tconst allLines = html.match(/(.*?<\\/p>)/gm);\n\n\treturn allLines\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\tchartFormat: getOptionValue(state, 'editorPreferences', 'chartFormat'),\n\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\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'chartFormat',\n\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 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, 'editorPreferences', '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 { 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/_components/EditorPreview';\nimport ProseMirrorEditorView from '../prosemirror/ProsemirrorEditorView';\nimport Icon from '../../../ui/_components/Icon';\n\nfunction EditorLayout(props) {\n\tconst { selectedFile, updateFile, theme } = props;\n\n\tconst previewClassNames = [\n\t\t'songEditor-preview',\n\t\t'cmTheme-' + theme,\n\t\t'cmTheme-fadeRepeats',\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\tChordMark source (\n\t\t\t\t\t\n\t\t\t\t\t\ttutorial\n\t\t\t\t\t\n\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\tResult preview\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\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\t\n\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\nEditorLayout.propTypes = {\n\tselectedFile: PropTypes.object,\n\ttheme: PropTypes.string.isRequired,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default EditorLayout;\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../../db/options/selectors';\n\nimport EditorLayout from '../_components/EditorLayout';\n\nexport default connect((state) => ({\n\ttheme: getOptionValue(state, 'editorPreferences', 'theme'),\n}))(EditorLayout);\n","import './ExportPreview.scss';\n\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction ExportPreview(props) {\n\tconst { selectedFile } = props;\n\n\tconst exportPreviewRef = React.createRef();\n\n\tconst selectAll = (e) => {\n\t\tif ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'a') {\n\t\t\te.preventDefault();\n\t\t\twindow.getSelection().selectAllChildren(exportPreviewRef.current);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\twindow.addEventListener('keydown', selectAll);\n\t\treturn () => {\n\t\t\twindow.removeEventListener('keydown', selectAll);\n\t\t};\n\t});\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 { theme, selectedFile, fontSize, columnsCount } = props;\n\n\tconst wrapperClassNames = ['playRendererWrapper1'];\n\twrapperClassNames.push('cmTheme-' + theme);\n\twrapperClassNames.push('cmSong--fontSize' + fontSize);\n\n\tconst classNames = ['playRenderer'];\n\tclassNames.push('playRenderer--columns-' + columnsCount);\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\ttheme: PropTypes.string.isRequired,\n\tfontSize: PropTypes.number.isRequired,\n\tselectedFile: PropTypes.object.isRequired,\n\tcolumnsCount: PropTypes.number.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\ttheme: getOptionValue(state, 'editorPreferences', 'theme'),\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\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('cmSong--fontSize' + fontSize);\n\tpageClasses.push('cmSong');\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: 'cmLyricLine',\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} columnBreakOnSection\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\tcolumnBreakOnSection,\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\tcolumnBreakOnSection,\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, columnBreakOnSection }\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 (columnBreakOnSection === 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, { useLayoutEffect } from 'react';\nimport { createRoot } from 'react-dom/client';\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\tconst root = createRoot(container);\n\n\treturn new Promise((resolve) => {\n\t\tconst MeasuringComponent = () => {\n\t\t\tuseLayoutEffect(() => {\n\t\t\t\tconst measure = measuringFn(container);\n\t\t\t\tresolve(measure);\n\t\t\t});\n\n\t\t\treturn
    {component}
    ;\n\t\t};\n\n\t\troot.render();\n\t}).then((measure) => {\n\t\troot.unmount();\n\t\tcontainer.parentNode.removeChild(container);\n\n\t\treturn measure;\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\tcolumnBreakOnSection,\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\tcolumnBreakOnSection,\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\tcolumnBreakOnSection,\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\tcolumnBreakOnSection: 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 } = 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 rendered = renderAsHtml(selectedFile.content || '', {\n\t\t...renderOptions,\n\t});\n\tconst allLines = rendered.match(/(.*?<\\/p>)/gm);\n\n\tconst classNames = ['printPreview', 'cmTheme-print'];\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\tcolumnBreakOnSection: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tfontSize: PropTypes.number.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\tcolumnBreakOnSection: getOptionValue(\n\t\tstate,\n\t\t'songFormatting',\n\t\t'columnBreakOnSection'\n\t),\n\tdocumentMargins: getOptionValue(state, 'songFormatting', 'documentMargins'),\n\n\tfontSize: getOptionValue(state, 'songFormatting', 'fontSize'),\n}))(PrintPreview);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport EditorLayout from '../songEditor/_containers/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\tif (renderedGroupWidgets.length === 0) {\n\t\t\t\t\treturn null;\n\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 from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction OptionsGroup(props) {\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\tfunction shouldBeInteractable() {\n\t\treturn isInteractable && props.children && props.children.length > 0;\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\t{label}\n\t\t\t
    \n\t\t\t
    {props.children}
    \n\t\t
    \n\t);\n}\n\nOptionsGroup.propTypes = {\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\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: ['editorPreferences', 'key', 'preferences', 'layout'],\n\n\tallWidgets: {\n\t\teditorPreferences: {\n\t\t\tlabel: 'Editor preferences',\n\t\t\ttype: 'optionsGroup',\n\t\t\ticon: 'tune',\n\n\t\t\tgroupWidgetsOrder: ['theme', 'chartFormat'],\n\t\t\tallGroupWidgets: {\n\t\t\t\ttheme: {\n\t\t\t\t\tlabel: 'Theme',\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: 'themeDark1',\n\t\t\t\t\t\t\t\tlabel: 'Dark 1 (default)',\n\t\t\t\t\t\t\t\tvalue: 'dark1',\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: 'themeDark2',\n\t\t\t\t\t\t\t\tlabel: 'Dark 2',\n\t\t\t\t\t\t\t\tvalue: 'dark2',\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: 'themeDark3',\n\t\t\t\t\t\t\t\tlabel: 'Dark 3',\n\t\t\t\t\t\t\t\tvalue: 'dark3',\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: 'editorPreferences',\n\t\t\t\t\t\tkey: 'theme',\n\t\t\t\t\t},\n\t\t\t\t},\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\t{\n\t\t\t\t\t\t\t\tid: 'formatUG',\n\t\t\t\t\t\t\t\tlabel: 'UltimateGuitar',\n\t\t\t\t\t\t\t\tvalue: 'ultimateGuitar',\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: 'editorPreferences',\n\t\t\t\t\t\tkey: 'chartFormat',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\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: 'Chart settings',\n\t\t\ttype: 'optionsGroup',\n\t\t\ticon: 'tune',\n\n\t\t\tgroupWidgetsOrder: [\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\tchartType: {\n\t\t\t\t\tlabel: '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: 'Show everything',\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'fontSize',\n\t\t\t\t'columnsCount',\n\t\t\t\t'columnBreakOnSection',\n\t\t\t\t'documentMargins',\n\t\t\t],\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\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\tcolumnBreakOnSection: {\n\t\t\t\t\tlabel: 'Column Break on section',\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: 'columnBreakOnSection',\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\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 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(\n\t\tstate,\n\t\t'editorPreferences',\n\t\t'chartFormat'\n\t);\n\tconst editorMode = getEditorMode(state);\n\n\tif (editorMode === 'export') {\n\t\tif (chartFormat === 'chordmarkSrc') {\n\t\t\tnonInteractableWidgets.push('chartType');\n\t\t\tnonInteractableWidgets.push('alignChordsWithLyrics');\n\t\t\tnonInteractableWidgets.push('alignBars');\n\t\t\tnonInteractableWidgets.push('autoRepeatChords');\n\t\t\tnonInteractableWidgets.push('expandSectionCopy');\n\t\t}\n\t}\n\n\tconst harmonizeAccidentals = getOptionValue(\n\t\tstate,\n\t\t'songPreferences',\n\t\t'harmonizeAccidentals'\n\t);\n\n\tif (!harmonizeAccidentals) {\n\t\tnonInteractableWidgets.push('preferredAccidentals');\n\t}\n\n\treturn nonInteractableWidgets;\n};\n\nexport const getHiddenWidgets = (state) => {\n\tconst hiddenWidgets = [];\n\n\tconst allOptions = Object.keys({\n\t\t...getOptionsDefaults(state, 'editorPreferences'),\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\thiddenWidgets.push(...nonInteractableOptions);\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 { createRoot } from 'react-dom/client';\n\nimport { Provider } from 'react-redux';\nimport { getStore } from './state/store';\n\nimport ErrorBoundary from './ui/_components/ErrorBoundary';\n\nexport default function renderController(Controller) {\n\tconst container = document.getElementById('app');\n\tconst root = createRoot(container);\n\n\troot.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);\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[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkchord_chart_studio\"] = self[\"webpackChunkchord_chart_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__(\"TBfH\")))\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","editorPreferences","theme","chartFormat","transposeValue","harmonizeAccidentals","preferredAccidentals","chartType","alignChordsWithLyrics","alignBars","autoRepeatChords","expandSectionCopy","fontSize","columnsCount","columnBreakOnSection","documentMargins","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","chordChart","songTitle","_handleMessage","e","allHandlers","source","window","origin","location","data","ErrorBoundary","props","error","errorInfo","this","setState","className","style","whiteSpace","open","toString","componentStack","children","React","propTypes","PropTypes","Logo","href","logoSvg","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","target","rel","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","accept","Input","allClasses","PreviewError","InputFormatEntry","setInputFormat","allInputClasses","allLabelClasses","checked","InputFormatSelector","disableAll","rendered","SongImporter","convert2ChordMark","connect","App","toggleLeftBar","toggleRightBar","leftBar","rightBar","leftBarClassNames","rightBarClassNames","allNavEntries","renderAsHtml","songTxt","renderOptions","useChartFormat","render","outputFormat","toHtml","customRenderer","chordMark2ChordPro","cpTxt","renderSong","chordMark2UltimateGuitar","ugTxt","printBarSeparators","printChordsDuration","chordSymbolRenderer","chordRendererFactory","customFilters","chordSymbolUltimateGuitar","useShortNamings","useFlats","accidentalsType","chordMarkHtml","match","line","parsed","parseSong","renderSongCm","split","exportSelectedFileAsText","selectedFile","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","paragraph","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","some","tr","docChanged","createEditorView","appendChild","EditorLayout","previewClassNames","ExportPreview","exportPreviewRef","selectAll","metaKey","ctrlKey","selectAllChildren","PlayRenderer","wrapperClassNames","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","root","createRoot","MeasuringComponent","useLayoutEffect","measure","unmount","padColumns","columnCount","allColumns","i","getOffsetHeight","element","offsetHeight","getClientHeight","clientHeight","cssSelectors","getAllLinesHeight","allLines","allLinesHeight","querySelectorAll","pageContent","querySelector","AllPages","setAllPagesColumns","getDimensions","pageOptions","getPagesHeight","mapped","allPagesRendered","pageColumns","PrintPreview","Editor","OptionsPanel","widget","groupWidget","WidgetComponent","GroupComponent","isGroupInteractable","isGroupWidgetInteractable","renderedGroupWidgets","allWidgets","nonInteractableWidgets","hiddenWidgets","setOption","getEntryComponent","renderedWidgets","widgetsOrder","filter","widgetId","groupWidgetsOrder","groupWidgetId","allGroupWidgets","renderWidget","isInteractable","localWidget","optionContext","option","optionKey","optionValue","typeOptions","OptionsGroup","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","getElementById","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","src","scripts","getElementsByTagName","Error","replace","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/packages/chord-chart-studio/build/vendors.3a60932e92db6c837452.js b/packages/chord-chart-studio/build/vendors.3a60932e92db6c837452.js new file mode 100644 index 00000000..10ad85a5 --- /dev/null +++ b/packages/chord-chart-studio/build/vendors.3a60932e92db6c837452.js @@ -0,0 +1,3 @@ +/*! For license information please see vendors.3a60932e92db6c837452.js.LICENSE.txt */ +(self.webpackChunkchord_chart_studio=self.webpackChunkchord_chart_studio||[]).push([[216],{ylZy:()=>{},eLFd:function(e){e.exports=function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,n){return t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},t(e,n)}function n(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function r(e,o,i){return r=n()?Reflect.construct:function(e,n,r){var o=[null];o.push.apply(o,n);var i=new(Function.bind.apply(e,o));return r&&t(i,r.prototype),i},r.apply(null,arguments)}function o(e){return i(e)||a(e)||s(e)||u()}function i(e){if(Array.isArray(e))return l(e)}function a(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function s(e,t){if(e){if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?n-1:0),o=1;o/gm),J=g(/\${[\w\W]*}/gm),Q=g(/^data-[\-\w.\u00B7-\uFFFF]/),X=g(/^aria-[\-\w]+$/),Z=g(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ee=g(/^(?:\w+script|data):/i),te=g(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ne=g(/^html$/i),re=function(){return"undefined"==typeof window?null:window},oe=function(t,n){if("object"!==e(t)||"function"!=typeof t.createPolicy)return null;var r=null,o="data-tt-policy-suffix";n.currentScript&&n.currentScript.hasAttribute(o)&&(r=n.currentScript.getAttribute(o));var i="dompurify"+(r?"#"+r:"");try{return t.createPolicy(i,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(e){return console.warn("TrustedTypes policy "+i+" could not be created."),null}};function ie(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:re(),n=function(e){return ie(e)};if(n.version="2.4.4",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,i=t.document,a=t.DocumentFragment,s=t.HTMLTemplateElement,l=t.Node,u=t.Element,c=t.NodeFilter,f=t.NamedNodeMap,d=void 0===f?t.NamedNodeMap||t.MozNamedAttrMap:f,p=t.HTMLFormElement,h=t.DOMParser,g=t.trustedTypes,y=u.prototype,v=L(y,"cloneNode"),b=L(y,"nextSibling"),w=L(y,"childNodes"),R=L(y,"parentNode");if("function"==typeof s){var I=i.createElement("template");I.content&&I.content.ownerDocument&&(i=I.content.ownerDocument)}var ae=oe(g,r),se=ae?ae.createHTML(""):"",le=i,ue=le.implementation,ce=le.createNodeIterator,fe=le.createDocumentFragment,de=le.getElementsByTagName,pe=r.importNode,he={};try{he=P(i).documentMode?i.documentMode:{}}catch(e){}var me={};n.isSupported="function"==typeof R&&ue&&void 0!==ue.createHTMLDocument&&9!==he;var ge,ye,ve=K,be=Y,we=J,Se=Q,xe=X,ke=ee,Ee=te,Ce=Z,Oe=null,Ne=_({},[].concat(o(F),o(z),o(B),o($),o(U))),Te=null,Me=_({},[].concat(o(W),o(H),o(G),o(q))),Ae=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),De=null,Re=null,Ie=!0,_e=!0,Pe=!1,Le=!0,Fe=!1,ze=!1,Be=!1,je=!1,$e=!1,Ve=!1,Ue=!1,We=!0,He=!1,Ge="user-content-",qe=!0,Ke=!1,Ye={},Je=null,Qe=_({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Xe=null,Ze=_({},["audio","video","img","source","image","track"]),et=null,tt=_({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),nt="http://www.w3.org/1998/Math/MathML",rt="http://www.w3.org/2000/svg",ot="http://www.w3.org/1999/xhtml",it=ot,at=!1,st=null,lt=_({},[nt,rt,ot],C),ut=["application/xhtml+xml","text/html"],ct="text/html",ft=null,dt=i.createElement("form"),pt=function(e){return e instanceof RegExp||e instanceof Function},ht=function(t){ft&&ft===t||(t&&"object"===e(t)||(t={}),t=P(t),ge=ge=-1===ut.indexOf(t.PARSER_MEDIA_TYPE)?ct:t.PARSER_MEDIA_TYPE,ye="application/xhtml+xml"===ge?C:E,Oe="ALLOWED_TAGS"in t?_({},t.ALLOWED_TAGS,ye):Ne,Te="ALLOWED_ATTR"in t?_({},t.ALLOWED_ATTR,ye):Me,st="ALLOWED_NAMESPACES"in t?_({},t.ALLOWED_NAMESPACES,C):lt,et="ADD_URI_SAFE_ATTR"in t?_(P(tt),t.ADD_URI_SAFE_ATTR,ye):tt,Xe="ADD_DATA_URI_TAGS"in t?_(P(Ze),t.ADD_DATA_URI_TAGS,ye):Ze,Je="FORBID_CONTENTS"in t?_({},t.FORBID_CONTENTS,ye):Qe,De="FORBID_TAGS"in t?_({},t.FORBID_TAGS,ye):{},Re="FORBID_ATTR"in t?_({},t.FORBID_ATTR,ye):{},Ye="USE_PROFILES"in t&&t.USE_PROFILES,Ie=!1!==t.ALLOW_ARIA_ATTR,_e=!1!==t.ALLOW_DATA_ATTR,Pe=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Le=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Fe=t.SAFE_FOR_TEMPLATES||!1,ze=t.WHOLE_DOCUMENT||!1,$e=t.RETURN_DOM||!1,Ve=t.RETURN_DOM_FRAGMENT||!1,Ue=t.RETURN_TRUSTED_TYPE||!1,je=t.FORCE_BODY||!1,We=!1!==t.SANITIZE_DOM,He=t.SANITIZE_NAMED_PROPS||!1,qe=!1!==t.KEEP_CONTENT,Ke=t.IN_PLACE||!1,Ce=t.ALLOWED_URI_REGEXP||Ce,it=t.NAMESPACE||ot,t.CUSTOM_ELEMENT_HANDLING&&pt(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ae.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&pt(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ae.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ae.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Fe&&(_e=!1),Ve&&($e=!0),Ye&&(Oe=_({},o(U)),Te=[],!0===Ye.html&&(_(Oe,F),_(Te,W)),!0===Ye.svg&&(_(Oe,z),_(Te,H),_(Te,q)),!0===Ye.svgFilters&&(_(Oe,B),_(Te,H),_(Te,q)),!0===Ye.mathMl&&(_(Oe,$),_(Te,G),_(Te,q))),t.ADD_TAGS&&(Oe===Ne&&(Oe=P(Oe)),_(Oe,t.ADD_TAGS,ye)),t.ADD_ATTR&&(Te===Me&&(Te=P(Te)),_(Te,t.ADD_ATTR,ye)),t.ADD_URI_SAFE_ATTR&&_(et,t.ADD_URI_SAFE_ATTR,ye),t.FORBID_CONTENTS&&(Je===Qe&&(Je=P(Je)),_(Je,t.FORBID_CONTENTS,ye)),qe&&(Oe["#text"]=!0),ze&&_(Oe,["html","head","body"]),Oe.table&&(_(Oe,["tbody"]),delete De.tbody),m&&m(t),ft=t)},mt=_({},["mi","mo","mn","ms","mtext"]),gt=_({},["foreignobject","desc","title","annotation-xml"]),yt=_({},["title","style","font","a","script"]),vt=_({},z);_(vt,B),_(vt,j);var bt=_({},$);_(bt,V);var wt=function(e){var t=R(e);t&&t.tagName||(t={namespaceURI:it,tagName:"template"});var n=E(e.tagName),r=E(t.tagName);return!!st[e.namespaceURI]&&(e.namespaceURI===rt?t.namespaceURI===ot?"svg"===n:t.namespaceURI===nt?"svg"===n&&("annotation-xml"===r||mt[r]):Boolean(vt[n]):e.namespaceURI===nt?t.namespaceURI===ot?"math"===n:t.namespaceURI===rt?"math"===n&>[r]:Boolean(bt[n]):e.namespaceURI===ot?!(t.namespaceURI===rt&&!gt[r])&&!(t.namespaceURI===nt&&!mt[r])&&!bt[n]&&(yt[n]||!vt[n]):!("application/xhtml+xml"!==ge||!st[e.namespaceURI]))},St=function(e){k(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=se}catch(t){e.remove()}}},xt=function(e,t){try{k(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){k(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Te[e])if($e||Ve)try{St(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},kt=function(e){var t,n;if(je)e=""+e;else{var r=O(e,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===ge&&it===ot&&(e=''+e+"");var o=ae?ae.createHTML(e):e;if(it===ot)try{t=(new h).parseFromString(o,ge)}catch(e){}if(!t||!t.documentElement){t=ue.createDocument(it,"template",null);try{t.documentElement.innerHTML=at?se:o}catch(e){}}var a=t.body||t.documentElement;return e&&n&&a.insertBefore(i.createTextNode(n),a.childNodes[0]||null),it===ot?de.call(t,ze?"html":"body")[0]:ze?t.documentElement:a},Et=function(e){return ce.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT,null,!1)},Ct=function(e){return e instanceof p&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof d)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Ot=function(t){return"object"===e(l)?t instanceof l:t&&"object"===e(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},Nt=function(e,t,r){me[e]&&S(me[e],(function(e){e.call(n,t,r,ft)}))},Tt=function(e){var t;if(Nt("beforeSanitizeElements",e,null),Ct(e))return St(e),!0;if(A(/[\u0080-\uFFFF]/,e.nodeName))return St(e),!0;var r=ye(e.nodeName);if(Nt("uponSanitizeElement",e,{tagName:r,allowedTags:Oe}),e.hasChildNodes()&&!Ot(e.firstElementChild)&&(!Ot(e.content)||!Ot(e.content.firstElementChild))&&A(/<[/\w]/g,e.innerHTML)&&A(/<[/\w]/g,e.textContent))return St(e),!0;if("select"===r&&A(/