diff --git a/jest.config.base.js b/jest.config.base.js index 45a05a53..7b1c2720 100644 --- a/jest.config.base.js +++ b/jest.config.base.js @@ -18,7 +18,6 @@ module.exports = { transform: { '\\.js$': 'babel-jest', - '\\.hbs$': 'jest-handlebars', '\\.txt': 'jest-text-transformer', '\\.svg': 'jest-text-transformer', }, diff --git a/package.json b/package.json index d6d91f4f..28d09193 100644 --- a/package.json +++ b/package.json @@ -25,11 +25,9 @@ "eslint-plugin-react-hooks": "^4.2.0", "file-loader": "^6.2.0", "generate-changelog": "^1.8.0", - "handlebars-loader": "^1.7.1", "html-webpack-inline-source-plugin": "0.0.10", "html-webpack-plugin": "^5.4.0", "jest": "^29.2.1", - "jest-handlebars": "^1.0.1", "jest-localstorage-mock": "^2.4.14", "lerna": "^6.0.1", "long": "^5.1.0", diff --git a/packages/chord-chart-studio/build/css/main.9eb5f33d21b01935d155.css b/packages/chord-chart-studio/build/css/main.6c2b09763d09b4b4339a.css similarity index 99% rename from packages/chord-chart-studio/build/css/main.9eb5f33d21b01935d155.css rename to packages/chord-chart-studio/build/css/main.6c2b09763d09b4b4339a.css index 372ce3b3..282ef142 100644 --- a/packages/chord-chart-studio/build/css/main.9eb5f33d21b01935d155.css +++ b/packages/chord-chart-studio/build/css/main.6c2b09763d09b4b4339a.css @@ -1,2 +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 .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.9eb5f33d21b01935d155.css.map*/ \ No newline at end of file +/*# 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 new file mode 100644 index 00000000..4ddb6796 --- /dev/null +++ b/packages/chord-chart-studio/build/css/main.6c2b09763d09b4b4339a.css.map @@ -0,0 +1 @@ +{"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/css/main.9eb5f33d21b01935d155.css.map b/packages/chord-chart-studio/build/css/main.9eb5f33d21b01935d155.css.map deleted file mode 100644 index 100828e8..00000000 --- a/packages/chord-chart-studio/build/css/main.9eb5f33d21b01935d155.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"css/main.9eb5f33d21b01935d155.css","mappings":"AAAA,2EAA2E,CAU3E,KAEE,6BAA8B,CAD9B,gBAEF,CASA,KACE,QACF,CAMA,KACE,aACF,CAOA,GACE,aAAc,CACd,cACF,CAUA,GACE,sBAAuB,CACvB,QAAS,CACT,gBACF,CAOA,IACE,+BAAiC,CACjC,aACF,CASA,EACE,4BACF,CAOA,YACE,kBAAmB,CACnB,yBAA0B,CAC1B,gCACF,CAMA,SAEE,kBACF,CAOA,cAGE,+BAAiC,CACjC,aACF,CAMA,MACE,aACF,CAOA,QAEE,aAAc,CACd,aAAc,CACd,iBAAkB,CAClB,uBACF,CAEA,IACE,aACF,CAEA,IACE,SACF,CASA,IACE,iBACF,CAUA,sCAKE,mBAAoB,CACpB,cAAe,CACf,gBAAiB,CACjB,QACF,CAOA,aAEE,gBACF,CAOA,cAEE,mBACF,CAMA,gDAIE,yBACF,CAMA,wHAIE,iBAAkB,CAClB,SACF,CAMA,4GAIE,6BACF,CAMA,SACE,0BACF,CASA,OACE,qBAAsB,CACtB,aAAc,CACd,aAAc,CACd,cAAe,CACf,SAAU,CACV,kBACF,CAMA,SACE,uBACF,CAMA,SACE,aACF,CAOA,6BAEE,qBAAsB,CACtB,SACF,CAMA,kFAEE,WACF,CAOA,cACE,4BAA6B,CAC7B,mBACF,CAMA,yCACE,uBACF,CAOA,6BACE,yBAA0B,CAC1B,YACF,CASA,QACE,aACF,CAMA,QACE,iBACF,CAiBA,kBACE,YACF,CC5UA,KAEC,sBAGA,gBAGA,iBAGD,KAEC,mHCjBkB,CCHlB,gBADO,CFsBP,eCuCkB,CE9DhB,mBH4BD,cG5BC,yBHiCA,cGjCA,0BHuCA,cAMH,oBAEC,YADA,UACA,CG/CE,iEHiDD,qBGjDC,6EHwDD,yBAIF,0BAKC,oBGjEE,uCH+DD,iBG/DC,sCH8DD,yBACA,yBG/DC,4CHsED,yBAIF,uCACC,EAIC,qBG/EC,cH6EA,iCI7EH,eACC,wBCSU,CDPV,uBAEC,cEXD,sFCDY,CDEZ,eACA,mBACA,aACA,oBDSY,CCPZ,yBACC,SFQD,+BACC,aAbK,CAcL,gBAED,oCACC,aAhBK,CAoBN,gCACC,aAvBM,CAwBN,gBAID,4BACC,aCdQ,CDiBT,+BACC,WAGD,gCACC,WIrCF,eACC,wBHHoB,CGKpB,uBAEC,cFPD,sFCDY,CDEZ,eACA,mBACA,aACA,oBDFoB,CCIpB,yBACC,SEID,+BACC,aHNe,CGOf,gBAED,oCACC,aHNe,CGUhB,gCACC,aHXe,CGYf,gBAID,4BACC,aHvBa,CG0Bd,+BACC,WAGD,gCACC,WCjCF,eACC,wBJHoB,CIKpB,uBAEC,cHPD,sFCDY,CDEZ,eACA,mBACA,aACA,oBDFoB,CCIpB,yBACC,SGID,+BACC,UJHY,CIIZ,gBAED,oCACC,aJNe,CIUhB,gCACC,aJjBa,CIkBb,gBAID,4BACC,aJtBc,CIyBf,+BACC,WAGD,gCACC,WChCD,sBAEC,WJLD,sFCDY,CDEZ,eACA,mBACA,aACA,oBICC,CJCD,wBACC,SKPD,4BACC,eACA,mBAED,4BACC,eACA,mBAED,4BACC,eACA,mBAED,4BACC,eACA,mBAED,4BACC,eACA,mBAED,2BACC,gBACA,mBAED,2BACC,gBACA,mBAED,2BACC,gBACA,mBAED,2BACC,gBACA,mBAED,2BACC,gBACA,mBCpCF,eACC,sBAEA,uBAEC,WNPD,sFCDY,CDEZ,eMOC,eNND,mBACA,aACA,oBMIC,CNFD,yBACC,SMKD,+BACC,gBACA,0BAED,oCACC,gBACA,sBAID,gCACC,gBAOD,+BACC,WAGD,gCACC,WClCF,eACC,YCGe,CCHhB,eAGC,YACA,UAGD,mBAEC,YADA,UAKA,CAKD,4BAPC,aACA,mBACA,gBAYA,CAPD,SACC,cAEA,gBADA,SAKA,CAEA,6BACC,WAOA,0CACC,uBZhCA,qBY6BD,yBADA,aACA,CAEA,yCACC,+BAEA,+CACC,yBAKH,aA1BD,SA2BE,cAIF,UAKC,aACA,mBALA,cAMA,iBAJA,gBADA,SAKA,CAEA,+BACC,WAOA,4CACC,sBZ/DA,sBY4DD,yBADA,aACA,CAEA,2CACC,8BAEA,iDACC,yBAKH,aA1BD,UA2BE,cAIF,iBAEC,cADA,iBACA,CAEA,sCAGC,eACA,gBAHA,mBACA,iBAEA,CAIF,kBAEC,cADA,iBACA,CAEA,wCAGC,eACA,gBAHA,mBACA,iBAEA,CAIF,mBAGC,eADA,aADA,aAEA,CAEA,wCACC,aZ1GC,gCY+GD,uBZ/GC,+BY8GD,yBACA,+BAEA,qCACC,yBZlHA,+BYuHD,cAIF,uBAEC,kBADA,cAEA,ednDa,CcqDb,6Bb9HA,gBADO,CaoIR,oBAGC,eADA,aADA,aAEA,CAEA,0CACC,aZ3IC,iCYgJD,sBZhJC,gCY+ID,yBACA,8BAEA,sCACC,yBZnJA,gCYwJD,cAIF,wBAEC,kBADA,cAEA,edpFa,CcsFb,8Bb/JA,gBADO,CauKR,gBAGC,aACA,sBAHA,YAIA,iBAGD,kBACC,cZjLE,+BYsLD,wBZtLC,8BYqLD,yBACA,gCAFA,uBAEA,CAGD,aATD,kBAUE,cAIF,mBAEC,WAAU,CADV,eACA,CAEA,aAJD,mBAKE,oBZnMC,8BYyMD,cAGD,aALD,kBAME,cC3MF,iBACC,sBACA,sBACA,WAEA,sCACC,aAIF,UACC,cACA,UACA,cACC,UACA,oBAGA,cADA,qBADA,SAEA,CCxBF,iBAGC,aAKA,gChBGsB,CgBLtB,gBfDO,CeIP,gBALA,uBAEA,qBALA,SACA,UAQA,sBAGD,cAGC,eAFA,qBAGA,gBAFA,iBAEA,CAEA,gDACC,edhBC,0FcsBA,yBADA,aACA,CdtBA,gDc6BA,yBADA,aACA,CAIF,sCACC,iBdlCC,mDcsCA,mBdtCA,kDcqCA,yBADA,cAEA,mBAMF,yBf1CA,iBe2CC,kBf5CM,CgBNR,MACC,sBCDD,sBACC,gBLCc,CKCd,4CACC,aAIF,uBACC,eAEA,4DACC,aCYF,OAGC,6BAFA,SACA,eACA,CAGD,QACC,qBAEA,gBAEA,wBAHA,kBAEA,yBACA,CAEA,cACC,eAGD,qBACC,ejBrCC,oDiB2CD,yBACA,cjB5CC,0DiBkDA,yBADA,UACA,CjBlDA,2DiByDA,yBADA,aACA,CAKH,kCACC,mBjB/DE,8CiBiED,yBACA,cjBlEC,sDiBwED,yBACA,cjBzEC,4DiB+EA,yBADA,UACA,CjB/EA,6DiBsFA,yBADA,aACA,CAKH,oCACC,mBjB5FE,gDiB8FD,yBACA,cCpGF,qBnBOC,emBNA,cAEA,WADA,cnBIO,CmBCP,2CACC,aAGD,uBACC,cACA,6BACC,WCbH,iCAWC,sBADA,oBAFA,aACA,sBAGA,iBANA,WAHA,SAFA,kBACA,QAEA,+BACA,SAOA,CnBRE,8CmBYD,iBnBZC,6CmBWD,yBACA,yBACA,cAIF,sBAEC,aADA,aACA,CnBnBE,mCmBuBD,wBnBvBC,kCmBsBD,yBACA,gCACA,wBAIF,kBACC,cpB3BA,gBADO,CoB+BP,mBAFA,YAEA,CAGD,oBACC,cACA,eAGD,0BAEC,mBADA,YACA,CAGD,qCACC,cACA,aAGD,sBAEC,mBADA,aAEA,eAEA,kCACC,kBAED,iCACC,iBAIF,kBpB7DC,iBoB8DA,YAEA,YACA,kBAFA,wBpBhEO,CCDL,8BmBuED,yBACA,wBAIF,oBASC,6BACA,SATA,sBAYA,8CrBjFuB,CCNvB,gBADO,CoB+EP,yBAWA,mBAPA,SAHA,6BAMA,aALA,kBAJA,aAKA,YAJA,UAYA,CnB3FE,gCmB8FD,yBACA,cAIF,6BACC,WAGD,uBACC,sBAEA,8CrBlGuB,CCNvB,gBADO,CoB4GP,yBACA,6BACA,kBACA,aAJA,oBAIA,CnBhHE,mCmBmHD,yBAIF,mBACC,anBxHE,+BmB2HD,yBADA,aACA,CAIF,qBAGC,YACA,UACA,gBACA,kBAJA,WAKA,WAGD,iBACC,eAGD,uBACC,qBACA,cAQA,0DACC,eAIF,gEAKC,WAHA,4EACC,mBC3JF,oBACC,YAKA,CAGD,iCAPC,YAIA,MAAK,CAFL,kBACA,MAFA,UAaA,CAPD,aAOC,sBADA,UACA,CAMD,2BAQC,YAHA,SAKA,kBAPA,kBACA,QAEA,+BACA,WANA,YASA,CpBpCE,wCoBwCD,iBpBxCC,uCoBuCD,yBACA,yBACA,cAIF,yBACC,kBClDD,wBtBMC,gBADO,CsBFP,6CACC,aAIF,yBACC,eACA,4DACC,aAIF,yBAEC,aACA,mBACA,eAHA,YAGA,CrBfE,qCqBiBD,yBAIF,mBACC,cAEA,kBV7Ba,CU4Bb,aV5Ba,CU8Bb,mBAEA,yBACC,mBAGD,4DAIC,erBnCC,wEqBiCA,yBAMH,8BAGC,WAFA,gBAEA,CAIA,8BtB5CA,gBADO,CsBkDR,yBAEC,gBADA,cACA,CAGD,kBACC,eACA,gBrB1DE,oCqB8DA,yBrB9DA,0DqBoEA,yBAKH,wBAKC,6BACA,YALA,sBAMA,eACA,aALA,eADA,UAMA,CrBjFE,oCqBmFD,crBnFC,iEqBwFA,cAIF,oDAKC,YrBjGC,gEqB8FA,yBACA,cCvFH,oBACC,avBPA,iBuBSA,WALc,CAOd,cACA,kBAFA,wBvBXO,CCDL,gCsBkBD,yBACA,wBAQF,mDACC,aAGD,YAIC,aACA,mBACA,iBAJA,yBADA,UAKA,CAGD,mBAEC,aADA,aAEA,kBtB3CE,+BsB8CD,yBAIF,oBACC,aACA,kBClDD,eACC,sBAEA,gBADA,aACA,CAIA,+MAIC,WCXF,oBACC,cACA,eAGD,aAIC,sF1Bda,C0Beb,c1BbY,C0BSZ,YAKA,mBAJA,Y1BTc,0B0BgBb,cAGD,eACC,SACA,eC5BF,aAKE,qBAKA,+BAFA,oCACA,4BARA,kBAKA,qBACA,wBANA,CAYF,iBACE,qBAGF,gBACE,kBAGF,8DACA,mEACA,mDAEA,0BACE,uBAKF,4BACE,aAGF,kCAKE,sBADA,YAHA,WAEA,WAGA,oBAJA,kBAEA,mBAEA,CAKF,0BAEE,sBADA,yBAEA,mBCvCF,eACC,sBACA,gBACA,YfTc,CXGZ,2B0BSD,yBACA,cAIF,kBAOC,WANA,sF5BlBa,C4BmBb,c5BjBY,C4BkBZ,kB5BjBc,C4BmBd,aACA,oBACA,CAEA,oBACC,SAGD,2BACC,c1B5BC,8B0BgCD,wBC5BF,sBAEC,YACA,kBAFA,iBAEA,CAGD,sBAIC,SACA,MAAK,CAJL,kBAEA,QADA,KAGA,CAGD,cACC,sBACA,gBAEA,sBACC,oBAIF,yBACC,eACA,YhBhCc,CgBkCf,yBACC,eACA,iBACA,YACA,YhBtCc,CgBwCf,yBACC,eACA,iBACA,YACA,YhB5Cc,CgB8Cf,yBACC,eACA,iBACA,YACA,YhBlDc,CiBOf,cAEC,gBADA,eACA,C5BNE,0B4BSD,yBAGD,aARD,cASE,gCACA,iBAIF,mBAKC,sBADA,iBADA,iBAEA,CAEA,aAPD,mBAQE,SACA,uBAKF,iCAMC,SADA,OAFA,kBAIA,OAAM,CAHN,KAGA,CAID,0BACC,aACA,sBACA,iBAEA,YAGD,yBACC,4I7BlDA,gBADO,C6BuDP,e9BmBa,C8BjBb,kBjB7Dc,CiBiEf,gCAGC,aAFA,OAGA,mBACA,iBAGD,yBACC,WACA,eAEA,uCACC,cAGD,sCACC,eAKF,uBAEC,aADA,WACA,CAGD,gCAEC,aADA,WACA,CAID,2CACC,YAED,2CACC,YAED,2CACC,YAED,2CACC,aAED,2CACC,aAIA,uBACC,oBCxHF,gBAEC,kBADA,kBAEA,WCAA,wDACC,aAIF,mCACC,eAEA,wEACC,aCTF,iBACC,gBpBEe,gCoBCd,cAIF,uBhCFC,gBADO,CgCSP,gBAHA,+BAFA,gBjCsEa,CE3EX,oC+BaD,wB/BbC,mC+BaD,0C/BbC,sE+BkBA,cASF,iChCzBA,gBADO,CgCgCP,kChC/BA,gBADO,CiCLR,iBjCMC,gBADO,CiCFP,gChCCE,8BgCED,yBhCFC,6BgCED,iChCFC,8CgCOA,yBAIF,mDACC,iBhCZC,+DgCeA,cAIF,uBACC,mBAGD,+DACC,ehCxBC,2EgC0BA,yBAKH,uBACC,aAGD,sBACC,cAGD,wBACC,cAIA,4BjC1CA,gBADO,CiCgDR,mCACC,WAGD,uBAEC,aADA,iBACA,CAEA,2EAEC,eADA,yBACA,CAIF,kCACC,elCWa,CkCRd,6BACC,cAIA,uCjCtEA,gBADO,CiC4ER,6BACC,cClFD,iBACC,aACA,elCIA,gBADO,CkCCP,gCjCFE,8BiCKD,yBjCLC,6BiCKD,iCjCLC,8CiCUA,yBAIF,mDACC,iBjCfC,+DiCkBA,cAIF,uBACC,mBAGD,+DACC,ejC3BC,2EiC6BA,yBAKH,sBACC,cAGD,uBACC,clCrCA,iBkCsCA,qBlCvCO,CkC4CR,uBACC,cjC9CE,sDkC8CF,wBAEA,uBADA,UACA,CAEA,4DACC,aAGD,qFAjDA,cAsDC,mBAFA,oBACA,eAtBc,CAhCf,eADA,WAmCe,CApCf,UDkDiB,CCUjB,4EASC,wBAjDD,kBD6BiB,CC/BjB,oBACA,eAMe,CARf,eADA,WAUe,CA8Cd,yBAzDD,UAyDC,CAGD,2FACC,kBD1BgB,CC6BjB,wEA5EA,cAiFC,mBAFA,oBACA,eAjDc,CAhCf,eADA,WAmCe,CApCf,UDkDiB,CCqCjB,wEAnEA,mBAFA,oBACA,eAMe,CARf,eADA,WAUe,CAXf,UDkCiB,CCiDjB,iEA/FA,cAoGC,uBADA,yBADA,oBADA,kBAlGD,eADA,WAmCe,CApCf,UAuGC,CAUD,4IAIC,mBAFA,oBACA,eDlEgB,CCsEjB,iEApGA,mBAFA,oBACA,eAMe,CARf,eADA,WAUe,CAXf,UDkCiB,CCsFjB,wJACC,kBDtFgB,CCyFjB,kKAEC,eAGD,mLAEC,eAGD,oJAEC,elCzJC,qDkC8CF,wBAEA,uBADA,UACA,CAEA,2DACC,aAGD,oFAjDA,cAsDC,mBAFA,oBACA,eAtBc,CAhCf,eADA,WAmCe,CApCf,UDkDiB,CCUjB,2EASC,wBAjDD,kBD6BiB,CC/BjB,oBACA,eAMe,CARf,eADA,WAUe,CA8Cd,yBAzDD,UAyDC,CAGD,0FACC,kBD1BgB,CC6BjB,uEA5EA,cAiFC,mBAFA,oBACA,eAjDc,CAhCf,eADA,WAmCe,CApCf,UDkDiB,CCqCjB,uEAnEA,mBAFA,oBACA,eAMe,CARf,eADA,WAUe,CAXf,UDkCiB,CCiDjB,gEA/FA,cAoGC,uBADA,yBADA,oBADA,kBAlGD,eADA,WAmCe,CApCf,UAuGC,CAUD,0IAIC,mBAFA,oBACA,eDlEgB,CCsEjB,gEApGA,mBAFA,oBACA,eAMe,CARf,eADA,WAUe,CAXf,UDkCiB,CCsFjB,sJACC,kBDtFgB,CCyFjB,gKAEC,eAGD,iLAEC,eAGD,kJAEC,eDjGA,kDAEC,6BADA,WACA,CE9DH,iBACC,apCKA,gBADO,iCCDL,8BmCID,yBnCJC,6BmCID,iCnCJC,8CmCSA,yBAIF,mDACC,iBnCdC,+DmCiBA,cAIF,uBACC,mBAGD,+DACC,enC1BC,2EmC4BA,yBAKH,sBACC,cAGD,sBACC,cnCtCE,yCmC4CA,cAMF,4BpChDA,gBADO,CCDL,+DmCyDC","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 Charts 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 2b2548b3..45424983 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.9eb5f33d21b01935d155.js b/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js similarity index 99% rename from packages/chord-chart-studio/build/main.9eb5f33d21b01935d155.js rename to packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js index c431b874..290e8804 100644 --- a/packages/chord-chart-studio/build/main.9eb5f33d21b01935d155.js +++ b/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js @@ -1,3 +1,3 @@ -/*! For license information please see main.9eb5f33d21b01935d155.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.9eb5f33d21b01935d155.js.map \ No newline at end of file +/*! 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.9eb5f33d21b01935d155.js.LICENSE.txt b/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.LICENSE.txt similarity index 100% rename from packages/chord-chart-studio/build/main.9eb5f33d21b01935d155.js.LICENSE.txt rename to packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.LICENSE.txt diff --git a/packages/chord-chart-studio/build/main.9eb5f33d21b01935d155.js.map b/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.map similarity index 99% rename from packages/chord-chart-studio/build/main.9eb5f33d21b01935d155.js.map rename to packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.map index d7335a99..4b629cd1 100644 --- a/packages/chord-chart-studio/build/main.9eb5f33d21b01935d155.js.map +++ b/packages/chord-chart-studio/build/main.6c2b09763d09b4b4339a.js.map @@ -1 +1 @@ -{"version":3,"file":"main.9eb5f33d21b01935d155.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.11.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 +{"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.6c2b09763d09b4b4339a.js b/packages/chord-chart-studio/build/vendors.6c2b09763d09b4b4339a.js new file mode 100644 index 00000000..d3a4a30b --- /dev/null +++ b/packages/chord-chart-studio/build/vendors.6c2b09763d09b4b4339a.js @@ -0,0 +1,3 @@ +/*! For license information please see vendors.6c2b09763d09b4b4339a.js.LICENSE.txt */ +(self.webpackChunkchord_chart_studio=self.webpackChunkchord_chart_studio||[]).push([[216],{ylZy:()=>{},sQWp:e=>{var t;self,t=()=>(()=>{var e={401:e=>{var t;self,t=function(){return(()=>{var e={1110:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return''+(null!=(i=e.lambda(null!=t?a(t,"barContent"):t,t))?i:"")+""},useData:!0})},3255:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return''+e.escapeExpression("function"==typeof(i=null!=(i=a(r,"barSeparator")||(null!=t?a(t,"barSeparator"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"barSeparator",hash:{},data:o,loc:{start:{line:1,column:29},end:{line:1,column:47}}}):i)+""},useData:!0})},7132:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({1:function(e,t,r,n,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return''+(null!=(i=e.lambda(null!=t?a(t,"chordLineOffset"):t,t))?i:"")+""},compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return''+(null!=(i=a(r,"if").call(null!=t?t:e.nullContext||{},null!=t?a(t,"chordLineOffset"):t,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:1,column:26},end:{line:1,column:128}}}))?i:"")+(null!=(i=e.lambda(null!=t?a(t,"chordLine"):t,t))?i:"")+""},useData:!0})},3524:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({1:function(e,t,r,n,o){var i=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return''+e.escapeExpression(e.lambda(null!=t?i(t,"chordDuration"):t,t))+""},compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return''+e.escapeExpression(e.lambda(null!=t?a(t,"chordSymbol"):t,t))+(null!=(i=a(r,"if").call(null!=t?t:e.nullContext||{},null!=t?a(t,"chordDuration"):t,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:1,column:50},end:{line:1,column:144}}}))?i:"")+""},useData:!0})},1354:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){return' '},useData:!0})},3096:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var i,a,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'

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

    "},useData:!0})},36:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return''+(null!=(i=e.lambda(null!=t?a(t,"lyricLine"):t,t))?i:"")+""},useData:!0})},4273:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({1:function(e,t,r,n,o){var i=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return' '+e.escapeExpression(e.lambda(null!=t?i(t,"multiplier"):t,t))+""},compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return''+(null!=(i=e.lambda(null!=t?a(t,"label"):t,t))?i:"")+(null!=(i=a(r,"if").call(null!=t?t:e.nullContext||{},null!=t?a(t,"multiplier"):t,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:1,column:47},end:{line:1,column:140}}}))?i:"")+""},useData:!0})},1196:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    '+(null!=(i=e.lambda(null!=t?a(t,"song"):t,t))?i:"")+"
    "},useData:!0})},4604:(e,t,r)=>{var n=r(1524);e.exports=(n.default||n).template({compiler:[8,">= 4.3.0"],main:function(e,t,r,n,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return''+(null!=(i=e.lambda(null!=t?a(t,"timeSignature"):t,t))?i:"")+""},useData:!0})},4208:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}t.__esModule=!0;var i=o(r(7060)),a=n(r(5442)),s=n(r(4936)),u=o(r(3303)),l=o(r(9657)),c=n(r(5727));function f(){var e=new i.HandlebarsEnvironment;return u.extend(e,i),e.SafeString=a.default,e.Exception=s.default,e.Utils=u,e.escapeExpression=u.escapeExpression,e.VM=l,e.template=function(t){return l.template(t,e)},e}var p=f();p.create=f,c.default(p),p.default=p,t.default=p,e.exports=t.default},7060:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.HandlebarsEnvironment=f;var o=r(3303),i=n(r(4936)),a=r(9228),s=r(2024),u=n(r(5324)),l=r(5434);t.VERSION="4.7.7",t.COMPILER_REVISION=8,t.LAST_COMPATIBLE_COMPILER_REVISION=7,t.REVISION_CHANGES={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};var c="[object Object]";function f(e,t,r){this.helpers=e||{},this.partials=t||{},this.decorators=r||{},a.registerDefaultHelpers(this),s.registerDefaultDecorators(this)}f.prototype={constructor:f,logger:u.default,log:u.default.log,registerHelper:function(e,t){if(o.toString.call(e)===c){if(t)throw new i.default("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if(o.toString.call(e)===c)o.extend(this.partials,e);else{if(void 0===t)throw new i.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if(o.toString.call(e)===c){if(t)throw new i.default("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]},resetLoggedPropertyAccesses:function(){l.resetLoggedProperties()}};var p=u.default.log;t.log=p,t.createFrame=o.createFrame,t.logger=u.default},2024:(e,t,r)=>{"use strict";t.__esModule=!0,t.registerDefaultDecorators=function(e){i.default(e)};var n,o=r(882),i=(n=o)&&n.__esModule?n:{default:n}},882:(e,t,r)=>{"use strict";t.__esModule=!0;var n=r(3303);t.default=function(e){e.registerDecorator("inline",(function(e,t,r,o){var i=e;return t.partials||(t.partials={},i=function(o,i){var a=r.partials;r.partials=n.extend({},a,t.partials);var s=e(o,i);return r.partials=a,s}),t.partials[o.args[0]]=o.fn,i}))},e.exports=t.default},4936:(e,t)=>{"use strict";t.__esModule=!0;var r=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function n(e,t){var o=t&&t.loc,i=void 0,a=void 0,s=void 0,u=void 0;o&&(i=o.start.line,a=o.end.line,s=o.start.column,u=o.end.column,e+=" - "+i+":"+s);for(var l=Error.prototype.constructor.call(this,e),c=0;c{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.registerDefaultHelpers=function(e){o.default(e),i.default(e),a.default(e),s.default(e),u.default(e),l.default(e),c.default(e)},t.moveHelperToHooks=function(e,t,r){e.helpers[t]&&(e.hooks[t]=e.helpers[t],r||delete e.helpers[t])};var o=n(r(2984)),i=n(r(31)),a=n(r(81)),s=n(r(691)),u=n(r(4668)),l=n(r(7245)),c=n(r(7420))},2984:(e,t,r)=>{"use strict";t.__esModule=!0;var n=r(3303);t.default=function(e){e.registerHelper("blockHelperMissing",(function(t,r){var o=r.inverse,i=r.fn;if(!0===t)return i(this);if(!1===t||null==t)return o(this);if(n.isArray(t))return t.length>0?(r.ids&&(r.ids=[r.name]),e.helpers.each(t,r)):o(this);if(r.data&&r.ids){var a=n.createFrame(r.data);a.contextPath=n.appendContextPath(r.data.contextPath,r.name),r={data:a}}return i(t,r)}))},e.exports=t.default},31:(e,t,r)=>{"use strict";t.__esModule=!0;var n,o=r(3303),i=r(4936),a=(n=i)&&n.__esModule?n:{default:n};t.default=function(e){e.registerHelper("each",(function(e,t){if(!t)throw new a.default("Must pass iterator to #each");var n,i=t.fn,s=t.inverse,u=0,l="",c=void 0,f=void 0;function p(t,r,n){c&&(c.key=t,c.index=r,c.first=0===r,c.last=!!n,f&&(c.contextPath=f+t)),l+=i(e[t],{data:c,blockParams:o.blockParams([e[t],t],[f+t,null])})}if(t.data&&t.ids&&(f=o.appendContextPath(t.data.contextPath,t.ids[0])+"."),o.isFunction(e)&&(e=e.call(this)),t.data&&(c=o.createFrame(t.data)),e&&"object"==typeof e)if(o.isArray(e))for(var d=e.length;u{"use strict";t.__esModule=!0;var n,o=r(4936),i=(n=o)&&n.__esModule?n:{default:n};t.default=function(e){e.registerHelper("helperMissing",(function(){if(1!==arguments.length)throw new i.default('Missing helper: "'+arguments[arguments.length-1].name+'"')}))},e.exports=t.default},691:(e,t,r)=>{"use strict";t.__esModule=!0;var n,o=r(3303),i=r(4936),a=(n=i)&&n.__esModule?n:{default:n};t.default=function(e){e.registerHelper("if",(function(e,t){if(2!=arguments.length)throw new a.default("#if requires exactly one argument");return o.isFunction(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||o.isEmpty(e)?t.inverse(this):t.fn(this)})),e.registerHelper("unless",(function(t,r){if(2!=arguments.length)throw new a.default("#unless requires exactly one argument");return e.helpers.if.call(this,t,{fn:r.inverse,inverse:r.fn,hash:r.hash})}))},e.exports=t.default},4668:(e,t)=>{"use strict";t.__esModule=!0,t.default=function(e){e.registerHelper("log",(function(){for(var t=[void 0],r=arguments[arguments.length-1],n=0;n{"use strict";t.__esModule=!0,t.default=function(e){e.registerHelper("lookup",(function(e,t,r){return e?r.lookupProperty(e,t):e}))},e.exports=t.default},7420:(e,t,r)=>{"use strict";t.__esModule=!0;var n,o=r(3303),i=r(4936),a=(n=i)&&n.__esModule?n:{default:n};t.default=function(e){e.registerHelper("with",(function(e,t){if(2!=arguments.length)throw new a.default("#with requires exactly one argument");o.isFunction(e)&&(e=e.call(this));var r=t.fn;if(o.isEmpty(e))return t.inverse(this);var n=t.data;return t.data&&t.ids&&((n=o.createFrame(t.data)).contextPath=o.appendContextPath(t.data.contextPath,t.ids[0])),r(e,{data:n,blockParams:o.blockParams([e],[n&&n.contextPath])})}))},e.exports=t.default},6547:(e,t,r)=>{"use strict";t.__esModule=!0,t.createNewLookupObject=function(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";t.__esModule=!0,t.createProtoAccessControl=function(e){var t=Object.create(null);t.constructor=!1,t.__defineGetter__=!1,t.__defineSetter__=!1,t.__lookupGetter__=!1;var r=Object.create(null);return r.__proto__=!1,{properties:{whitelist:n.createNewLookupObject(r,e.allowedProtoProperties),defaultValue:e.allowProtoPropertiesByDefault},methods:{whitelist:n.createNewLookupObject(t,e.allowedProtoMethods),defaultValue:e.allowProtoMethodsByDefault}}},t.resultIsAllowed=function(e,t,r){return a("function"==typeof e?t.methods:t.properties,r)},t.resetLoggedProperties=function(){Object.keys(i).forEach((function(e){delete i[e]}))};var n=r(6547),o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(r(5324)),i=Object.create(null);function a(e,t){return void 0!==e.whitelist[t]?!0===e.whitelist[t]:void 0!==e.defaultValue?e.defaultValue:(function(e){!0!==i[e]&&(i[e]=!0,o.log("error",'Handlebars: Access has been denied to resolve the property "'+e+'" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'))}(t),!1)}},1208:(e,t)=>{"use strict";t.__esModule=!0,t.wrapHelper=function(e,t){return"function"!=typeof e?e:function(){return arguments[arguments.length-1]=t(arguments[arguments.length-1]),e.apply(this,arguments)}}},5324:(e,t,r)=>{"use strict";t.__esModule=!0;var n=r(3303),o={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=n.indexOf(o.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=o.lookupLevel(e),"undefined"!=typeof console&&o.lookupLevel(o.level)<=e){var t=o.methodMap[e];console[t]||(t="log");for(var r=arguments.length,n=Array(r>1?r-1:0),i=1;i{"use strict";t.__esModule=!0,t.default=function(e){var t=void 0!==r.g?r.g:window,n=t.Handlebars;e.noConflict=function(){return t.Handlebars===e&&(t.Handlebars=n),e}},e.exports=t.default},9657:(e,t,r)=>{"use strict";t.__esModule=!0,t.checkRevision=function(e){var t=e&&e[0]||1,r=s.COMPILER_REVISION;if(!(t>=s.LAST_COMPATIBLE_COMPILER_REVISION&&t<=s.COMPILER_REVISION)){if(t{"use strict";function r(e){this.string=e}t.__esModule=!0,r.prototype.toString=r.prototype.toHTML=function(){return""+this.string},t.default=r,e.exports=t.default},3303:(e,t)=>{"use strict";t.__esModule=!0,t.extend=a,t.indexOf=function(e,t){for(var r=0,n=e.length;r":">",'"':""","'":"'","`":"`","=":"="},n=/[&<>"'`=]/g,o=/[&<>"'`=]/;function i(e){return r[e]}function a(e){for(var t=1;t{e.exports=r(4208).default},6013:function(e){var t;"undefined"!=typeof self&&self,t=function(){return(()=>{var e={8552:(e,t,r)=>{var n=r(852)(r(5639),"DataView");e.exports=n},1989:(e,t,r)=>{var n=r(1789),o=r(401),i=r(7667),a=r(1327),s=r(1866);function u(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t{var n=r(7040),o=r(4125),i=r(2117),a=r(7518),s=r(4705);function u(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t{var n=r(852)(r(5639),"Map");e.exports=n},3369:(e,t,r)=>{var n=r(4785),o=r(1285),i=r(6e3),a=r(9916),s=r(5265);function u(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t{var n=r(852)(r(5639),"Promise");e.exports=n},8525:(e,t,r)=>{var n=r(852)(r(5639),"Set");e.exports=n},8668:(e,t,r)=>{var n=r(3369),o=r(619),i=r(2385);function a(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new n;++t{var n=r(8407),o=r(7465),i=r(3779),a=r(7599),s=r(4758),u=r(4309);function l(e){var t=this.__data__=new n(e);this.size=t.size}l.prototype.clear=o,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=s,l.prototype.set=u,e.exports=l},2705:(e,t,r)=>{var n=r(5639).Symbol;e.exports=n},1149:(e,t,r)=>{var n=r(5639).Uint8Array;e.exports=n},577:(e,t,r)=>{var n=r(852)(r(5639),"WeakMap");e.exports=n},6874:e=>{e.exports=function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}},7412:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length;++r{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length,o=0,i=[];++r{var n=r(2118);e.exports=function(e,t){return!(null==e||!e.length)&&n(e,t,0)>-1}},1196:e=>{e.exports=function(e,t,r){for(var n=-1,o=null==e?0:e.length;++n{var n=r(2545),o=r(5694),i=r(1469),a=r(4144),s=r(5776),u=r(6719),l=Object.prototype.hasOwnProperty;e.exports=function(e,t){var r=i(e),c=!r&&o(e),f=!r&&!c&&a(e),p=!r&&!c&&!f&&u(e),d=r||c||f||p,h=d?n(e.length,String):[],m=h.length;for(var v in e)!t&&!l.call(e,v)||d&&("length"==v||f&&("offset"==v||"parent"==v)||p&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||s(v,m))||h.push(v);return h}},9932:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++r{e.exports=function(e,t){for(var r=-1,n=t.length,o=e.length;++r{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length;++r{var n=r(9465),o=r(7813),i=Object.prototype.hasOwnProperty;e.exports=function(e,t,r){var a=e[t];i.call(e,t)&&o(a,r)&&(void 0!==r||t in e)||n(e,t,r)}},8470:(e,t,r)=>{var n=r(7813);e.exports=function(e,t){for(var r=e.length;r--;)if(n(e[r][0],t))return r;return-1}},4037:(e,t,r)=>{var n=r(8363),o=r(3674);e.exports=function(e,t){return e&&n(t,o(t),e)}},3886:(e,t,r)=>{var n=r(8363),o=r(1704);e.exports=function(e,t){return e&&n(t,o(t),e)}},9465:(e,t,r)=>{var n=r(8777);e.exports=function(e,t,r){"__proto__"==t&&n?n(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}},5990:(e,t,r)=>{var n=r(6384),o=r(7412),i=r(4865),a=r(4037),s=r(3886),u=r(4626),l=r(278),c=r(8805),f=r(1911),p=r(8234),d=r(6904),h=r(4160),m=r(3824),v=r(9148),y=r(8517),b=r(1469),g=r(4144),x=r(6688),w=r(3218),S=r(2928),O=r(3674),j=r(1704),E="[object Arguments]",k="[object Function]",_="[object Object]",A={};A[E]=A["[object Array]"]=A["[object ArrayBuffer]"]=A["[object DataView]"]=A["[object Boolean]"]=A["[object Date]"]=A["[object Float32Array]"]=A["[object Float64Array]"]=A["[object Int8Array]"]=A["[object Int16Array]"]=A["[object Int32Array]"]=A["[object Map]"]=A["[object Number]"]=A[_]=A["[object RegExp]"]=A["[object Set]"]=A["[object String]"]=A["[object Symbol]"]=A["[object Uint8Array]"]=A["[object Uint8ClampedArray]"]=A["[object Uint16Array]"]=A["[object Uint32Array]"]=!0,A["[object Error]"]=A[k]=A["[object WeakMap]"]=!1,e.exports=function e(t,r,C,N,T,M){var D,P=1&r,R=2&r,I=4&r;if(C&&(D=T?C(t,N,T,M):C(t)),void 0!==D)return D;if(!w(t))return t;var z=b(t);if(z){if(D=m(t),!P)return l(t,D)}else{var F=h(t),L=F==k||"[object GeneratorFunction]"==F;if(g(t))return u(t,P);if(F==_||F==E||L&&!T){if(D=R||L?{}:y(t),!P)return R?f(t,s(D,t)):c(t,a(D,t))}else{if(!A[F])return T?t:{};D=v(t,F,P)}}M||(M=new n);var B=M.get(t);if(B)return B;M.set(t,D),S(t)?t.forEach((function(n){D.add(e(n,r,C,n,t,M))})):x(t)&&t.forEach((function(n,o){D.set(o,e(n,r,C,o,t,M))}));var U=z?void 0:(I?R?d:p:R?j:O)(t);return o(U||t,(function(n,o){U&&(n=t[o=n]),i(D,o,e(n,r,C,o,t,M))})),D}},3118:(e,t,r)=>{var n=r(3218),o=Object.create,i=function(){function e(){}return function(t){if(!n(t))return{};if(o)return o(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();e.exports=i},731:(e,t,r)=>{var n=r(8668),o=r(7443),i=r(1196),a=r(9932),s=r(1717),u=r(4757);e.exports=function(e,t,r,l){var c=-1,f=o,p=!0,d=e.length,h=[],m=t.length;if(!d)return h;r&&(t=a(t,s(r))),l?(f=i,p=!1):t.length>=200&&(f=u,p=!1,t=new n(t));e:for(;++c{e.exports=function(e,t,r,n){for(var o=e.length,i=r+(n?1:-1);n?i--:++i{var n=r(2488),o=r(7285);e.exports=function e(t,r,i,a,s){var u=-1,l=t.length;for(i||(i=o),s||(s=[]);++u0&&i(c)?r>1?e(c,r-1,i,a,s):n(s,c):a||(s[s.length]=c)}return s}},8483:(e,t,r)=>{var n=r(5063)();e.exports=n},7816:(e,t,r)=>{var n=r(8483),o=r(3674);e.exports=function(e,t){return e&&n(e,t,o)}},7786:(e,t,r)=>{var n=r(1811),o=r(327);e.exports=function(e,t){for(var r=0,i=(t=n(t,e)).length;null!=e&&r{var n=r(2488),o=r(1469);e.exports=function(e,t,r){var i=t(e);return o(e)?i:n(i,r(e))}},4239:(e,t,r)=>{var n=r(2705),o=r(9607),i=r(2333),a=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?o(e):i(e)}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},2118:(e,t,r)=>{var n=r(1848),o=r(2722),i=r(2351);e.exports=function(e,t,r){return t==t?i(e,t,r):n(e,o,r)}},8975:(e,t,r)=>{var n=r(7816);e.exports=function(e,t,r,o){return n(e,(function(e,n,i){t(o,r(e),n,i)})),o}},9454:(e,t,r)=>{var n=r(4239),o=r(7005);e.exports=function(e){return o(e)&&"[object Arguments]"==n(e)}},939:(e,t,r)=>{var n=r(2492),o=r(7005);e.exports=function e(t,r,i,a,s){return t===r||(null==t||null==r||!o(t)&&!o(r)?t!=t&&r!=r:n(t,r,i,a,e,s))}},2492:(e,t,r)=>{var n=r(6384),o=r(7114),i=r(8351),a=r(6096),s=r(4160),u=r(1469),l=r(4144),c=r(6719),f="[object Arguments]",p="[object Array]",d="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,m,v,y){var b=u(e),g=u(t),x=b?p:s(e),w=g?p:s(t),S=(x=x==f?d:x)==d,O=(w=w==f?d:w)==d,j=x==w;if(j&&l(e)){if(!l(t))return!1;b=!0,S=!1}if(j&&!S)return y||(y=new n),b||c(e)?o(e,t,r,m,v,y):i(e,t,x,r,m,v,y);if(!(1&r)){var E=S&&h.call(e,"__wrapped__"),k=O&&h.call(t,"__wrapped__");if(E||k){var _=E?e.value():e,A=k?t.value():t;return y||(y=new n),v(_,A,r,m,y)}}return!!j&&(y||(y=new n),a(e,t,r,m,v,y))}},5588:(e,t,r)=>{var n=r(4160),o=r(7005);e.exports=function(e){return o(e)&&"[object Map]"==n(e)}},2958:(e,t,r)=>{var n=r(6384),o=r(939);e.exports=function(e,t,r,i){var a=r.length,s=a,u=!i;if(null==e)return!s;for(e=Object(e);a--;){var l=r[a];if(u&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++a{e.exports=function(e){return e!=e}},8458:(e,t,r)=>{var n=r(3560),o=r(5346),i=r(3218),a=r(346),s=/^\[object .+?Constructor\]$/,u=Function.prototype,l=Object.prototype,c=u.toString,f=l.hasOwnProperty,p=RegExp("^"+c.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!i(e)||o(e))&&(n(e)?p:s).test(a(e))}},9221:(e,t,r)=>{var n=r(4160),o=r(7005);e.exports=function(e){return o(e)&&"[object Set]"==n(e)}},8749:(e,t,r)=>{var n=r(4239),o=r(1780),i=r(7005),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,e.exports=function(e){return i(e)&&o(e.length)&&!!a[n(e)]}},7206:(e,t,r)=>{var n=r(1573),o=r(6432),i=r(6557),a=r(1469),s=r(9601);e.exports=function(e){return"function"==typeof e?e:null==e?i:"object"==typeof e?a(e)?o(e[0],e[1]):n(e):s(e)}},280:(e,t,r)=>{var n=r(5726),o=r(6916),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return o(e);var t=[];for(var r in Object(e))i.call(e,r)&&"constructor"!=r&&t.push(r);return t}},313:(e,t,r)=>{var n=r(3218),o=r(5726),i=r(3498),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return i(e);var t=o(e),r=[];for(var s in e)("constructor"!=s||!t&&a.call(e,s))&&r.push(s);return r}},1573:(e,t,r)=>{var n=r(2958),o=r(1499),i=r(2634);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?i(t[0][0],t[0][1]):function(r){return r===e||n(r,e,t)}}},6432:(e,t,r)=>{var n=r(939),o=r(7361),i=r(9095),a=r(5403),s=r(9162),u=r(2634),l=r(327);e.exports=function(e,t){return a(e)&&s(t)?u(l(e),t):function(r){var a=o(r,e);return void 0===a&&a===t?i(r,e):n(t,a,3)}}},371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},9152:(e,t,r)=>{var n=r(7786);e.exports=function(e){return function(t){return n(t,e)}}},5976:(e,t,r)=>{var n=r(6557),o=r(5357),i=r(61);e.exports=function(e,t){return i(o(e,t,n),e+"")}},6560:(e,t,r)=>{var n=r(5703),o=r(8777),i=r(6557),a=o?function(e,t){return o(e,"toString",{configurable:!0,enumerable:!1,value:n(t),writable:!0})}:i;e.exports=a},2545:e=>{e.exports=function(e,t){for(var r=-1,n=Array(e);++r{var n=r(2705),o=r(9932),i=r(1469),a=r(3448),s=n?n.prototype:void 0,u=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(i(t))return o(t,e)+"";if(a(t))return u?u.call(t):"";var r=t+"";return"0"==r&&1/t==-1/0?"-0":r}},7561:(e,t,r)=>{var n=r(7990),o=/^\s+/;e.exports=function(e){return e?e.slice(0,n(e)+1).replace(o,""):e}},1717:e=>{e.exports=function(e){return function(t){return e(t)}}},5652:(e,t,r)=>{var n=r(8668),o=r(7443),i=r(1196),a=r(4757),s=r(3593),u=r(1814);e.exports=function(e,t,r){var l=-1,c=o,f=e.length,p=!0,d=[],h=d;if(r)p=!1,c=i;else if(f>=200){var m=t?null:s(e);if(m)return u(m);p=!1,c=a,h=new n}else h=t?[]:d;e:for(;++l{e.exports=function(e,t){return e.has(t)}},1811:(e,t,r)=>{var n=r(1469),o=r(5403),i=r(5514),a=r(9833);e.exports=function(e,t){return n(e)?e:o(e,t)?[e]:i(a(e))}},4318:(e,t,r)=>{var n=r(1149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new n(t).set(new n(e)),t}},4626:(e,t,r)=>{e=r.nmd(e);var n=r(5639),o=t&&!t.nodeType&&t,i=o&&e&&!e.nodeType&&e,a=i&&i.exports===o?n.Buffer:void 0,s=a?a.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var r=e.length,n=s?s(r):new e.constructor(r);return e.copy(n),n}},7157:(e,t,r)=>{var n=r(4318);e.exports=function(e,t){var r=t?n(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}},3147:e=>{var t=/\w*$/;e.exports=function(e){var r=new e.constructor(e.source,t.exec(e));return r.lastIndex=e.lastIndex,r}},419:(e,t,r)=>{var n=r(2705),o=n?n.prototype:void 0,i=o?o.valueOf:void 0;e.exports=function(e){return i?Object(i.call(e)):{}}},7133:(e,t,r)=>{var n=r(4318);e.exports=function(e,t){var r=t?n(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}},278:e=>{e.exports=function(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r{var n=r(4865),o=r(9465);e.exports=function(e,t,r,i){var a=!r;r||(r={});for(var s=-1,u=t.length;++s{var n=r(8363),o=r(9551);e.exports=function(e,t){return n(e,o(e),t)}},1911:(e,t,r)=>{var n=r(8363),o=r(1442);e.exports=function(e,t){return n(e,o(e),t)}},4429:(e,t,r)=>{var n=r(5639)["__core-js_shared__"];e.exports=n},5063:e=>{e.exports=function(e){return function(t,r,n){for(var o=-1,i=Object(t),a=n(t),s=a.length;s--;){var u=a[e?s:++o];if(!1===r(i[u],u,i))break}return t}}},7740:(e,t,r)=>{var n=r(7206),o=r(8612),i=r(3674);e.exports=function(e){return function(t,r,a){var s=Object(t);if(!o(t)){var u=n(r,3);t=i(t),r=function(e){return u(s[e],e,s)}}var l=e(t,r,a);return l>-1?s[u?t[l]:l]:void 0}}},7779:(e,t,r)=>{var n=r(8975);e.exports=function(e,t){return function(r,o){return n(r,e,t(o),{})}}},3593:(e,t,r)=>{var n=r(8525),o=r(308),i=r(1814),a=n&&1/i(new n([,-0]))[1]==1/0?function(e){return new n(e)}:o;e.exports=a},8777:(e,t,r)=>{var n=r(852),o=function(){try{var e=n(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=o},7114:(e,t,r)=>{var n=r(8668),o=r(2908),i=r(4757);e.exports=function(e,t,r,a,s,u){var l=1&r,c=e.length,f=t.length;if(c!=f&&!(l&&f>c))return!1;var p=u.get(e),d=u.get(t);if(p&&d)return p==t&&d==e;var h=-1,m=!0,v=2&r?new n:void 0;for(u.set(e,t),u.set(t,e);++h{var n=r(2705),o=r(1149),i=r(7813),a=r(7114),s=r(8776),u=r(1814),l=n?n.prototype:void 0,c=l?l.valueOf:void 0;e.exports=function(e,t,r,n,l,f,p){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!f(new o(e),new o(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var d=s;case"[object Set]":var h=1&n;if(d||(d=u),e.size!=t.size&&!h)return!1;var m=p.get(e);if(m)return m==t;n|=2,p.set(e,t);var v=a(d(e),d(t),n,l,f,p);return p.delete(e),v;case"[object Symbol]":if(c)return c.call(e)==c.call(t)}return!1}},6096:(e,t,r)=>{var n=r(8234),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,i,a,s){var u=1&r,l=n(e),c=l.length;if(c!=n(t).length&&!u)return!1;for(var f=c;f--;){var p=l[f];if(!(u?p in t:o.call(t,p)))return!1}var d=s.get(e),h=s.get(t);if(d&&h)return d==t&&h==e;var m=!0;s.set(e,t),s.set(t,e);for(var v=u;++f{var n="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;e.exports=n},8234:(e,t,r)=>{var n=r(8866),o=r(9551),i=r(3674);e.exports=function(e){return n(e,i,o)}},6904:(e,t,r)=>{var n=r(8866),o=r(1442),i=r(1704);e.exports=function(e){return n(e,i,o)}},5050:(e,t,r)=>{var n=r(7019);e.exports=function(e,t){var r=e.__data__;return n(t)?r["string"==typeof t?"string":"hash"]:r.map}},1499:(e,t,r)=>{var n=r(9162),o=r(3674);e.exports=function(e){for(var t=o(e),r=t.length;r--;){var i=t[r],a=e[i];t[r]=[i,a,n(a)]}return t}},852:(e,t,r)=>{var n=r(8458),o=r(7801);e.exports=function(e,t){var r=o(e,t);return n(r)?r:void 0}},5924:(e,t,r)=>{var n=r(5569)(Object.getPrototypeOf,Object);e.exports=n},9607:(e,t,r)=>{var n=r(2705),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=n?n.toStringTag:void 0;e.exports=function(e){var t=i.call(e,s),r=e[s];try{e[s]=void 0;var n=!0}catch(e){}var o=a.call(e);return n&&(t?e[s]=r:delete e[s]),o}},9551:(e,t,r)=>{var n=r(4963),o=r(479),i=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(e){return null==e?[]:(e=Object(e),n(a(e),(function(t){return i.call(e,t)})))}:o;e.exports=s},1442:(e,t,r)=>{var n=r(2488),o=r(5924),i=r(9551),a=r(479),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)n(t,i(e)),e=o(e);return t}:a;e.exports=s},4160:(e,t,r)=>{var n=r(8552),o=r(7071),i=r(3818),a=r(8525),s=r(577),u=r(4239),l=r(346),c="[object Map]",f="[object Promise]",p="[object Set]",d="[object WeakMap]",h="[object DataView]",m=l(n),v=l(o),y=l(i),b=l(a),g=l(s),x=u;(n&&x(new n(new ArrayBuffer(1)))!=h||o&&x(new o)!=c||i&&x(i.resolve())!=f||a&&x(new a)!=p||s&&x(new s)!=d)&&(x=function(e){var t=u(e),r="[object Object]"==t?e.constructor:void 0,n=r?l(r):"";if(n)switch(n){case m:return h;case v:return c;case y:return f;case b:return p;case g:return d}return t}),e.exports=x},7801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,r)=>{var n=r(1811),o=r(5694),i=r(1469),a=r(5776),s=r(1780),u=r(327);e.exports=function(e,t,r){for(var l=-1,c=(t=n(t,e)).length,f=!1;++l{var n=r(4536);e.exports=function(){this.__data__=n?n(null):{},this.size=0}},401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},7667:(e,t,r)=>{var n=r(4536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(n){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(t,e)?t[e]:void 0}},1327:(e,t,r)=>{var n=r(4536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return n?void 0!==t[e]:o.call(t,e)}},1866:(e,t,r)=>{var n=r(4536);e.exports=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=n&&void 0===t?"__lodash_hash_undefined__":t,this}},3824:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var r=e.length,n=new e.constructor(r);return r&&"string"==typeof e[0]&&t.call(e,"index")&&(n.index=e.index,n.input=e.input),n}},9148:(e,t,r)=>{var n=r(4318),o=r(7157),i=r(3147),a=r(419),s=r(7133);e.exports=function(e,t,r){var u=e.constructor;switch(t){case"[object ArrayBuffer]":return n(e);case"[object Boolean]":case"[object Date]":return new u(+e);case"[object DataView]":return o(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return s(e,r);case"[object Map]":case"[object Set]":return new u;case"[object Number]":case"[object String]":return new u(e);case"[object RegExp]":return i(e);case"[object Symbol]":return a(e)}}},8517:(e,t,r)=>{var n=r(3118),o=r(5924),i=r(5726);e.exports=function(e){return"function"!=typeof e.constructor||i(e)?{}:n(o(e))}},7285:(e,t,r)=>{var n=r(2705),o=r(5694),i=r(1469),a=n?n.isConcatSpreadable:void 0;e.exports=function(e){return i(e)||o(e)||!!(a&&e&&e[a])}},5776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e{var n=r(1469),o=r(3448),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(n(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!o(e))||a.test(e)||!i.test(e)||null!=t&&e in Object(t)}},7019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},5346:(e,t,r)=>{var n,o=r(4429),i=(n=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";e.exports=function(e){return!!i&&i in e}},5726:e=>{var t=Object.prototype;e.exports=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}},9162:(e,t,r)=>{var n=r(3218);e.exports=function(e){return e==e&&!n(e)}},7040:e=>{e.exports=function(){this.__data__=[],this.size=0}},4125:(e,t,r)=>{var n=r(8470),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,r=n(t,e);return!(r<0||(r==t.length-1?t.pop():o.call(t,r,1),--this.size,0))}},2117:(e,t,r)=>{var n=r(8470);e.exports=function(e){var t=this.__data__,r=n(t,e);return r<0?void 0:t[r][1]}},7518:(e,t,r)=>{var n=r(8470);e.exports=function(e){return n(this.__data__,e)>-1}},4705:(e,t,r)=>{var n=r(8470);e.exports=function(e,t){var r=this.__data__,o=n(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}},4785:(e,t,r)=>{var n=r(1989),o=r(8407),i=r(7071);e.exports=function(){this.size=0,this.__data__={hash:new n,map:new(i||o),string:new n}}},1285:(e,t,r)=>{var n=r(5050);e.exports=function(e){var t=n(this,e).delete(e);return this.size-=t?1:0,t}},6e3:(e,t,r)=>{var n=r(5050);e.exports=function(e){return n(this,e).get(e)}},9916:(e,t,r)=>{var n=r(5050);e.exports=function(e){return n(this,e).has(e)}},5265:(e,t,r)=>{var n=r(5050);e.exports=function(e,t){var r=n(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}},8776:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}},2634:e=>{e.exports=function(e,t){return function(r){return null!=r&&r[e]===t&&(void 0!==t||e in Object(r))}}},4523:(e,t,r)=>{var n=r(8306);e.exports=function(e){var t=n(e,(function(e){return 500===r.size&&r.clear(),e})),r=t.cache;return t}},4536:(e,t,r)=>{var n=r(852)(Object,"create");e.exports=n},6916:(e,t,r)=>{var n=r(5569)(Object.keys,Object);e.exports=n},3498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}},1167:(e,t,r)=>{e=r.nmd(e);var n=r(1957),o=t&&!t.nodeType&&t,i=o&&e&&!e.nodeType&&e,a=i&&i.exports===o&&n.process,s=function(){try{var e=i&&i.require&&i.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(e){}}();e.exports=s},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(r){return e(t(r))}}},5357:(e,t,r)=>{var n=r(6874),o=Math.max;e.exports=function(e,t,r){return t=o(void 0===t?e.length-1:t,0),function(){for(var i=arguments,a=-1,s=o(i.length-t,0),u=Array(s);++a{var n=r(1957),o="object"==typeof self&&self&&self.Object===Object&&self,i=n||o||Function("return this")();e.exports=i},619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},2385:e=>{e.exports=function(e){return this.__data__.has(e)}},1814:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}},61:(e,t,r)=>{var n=r(6560),o=r(1275)(n);e.exports=o},1275:e=>{var t=Date.now;e.exports=function(e){var r=0,n=0;return function(){var o=t(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}},7465:(e,t,r)=>{var n=r(8407);e.exports=function(){this.__data__=new n,this.size=0}},3779:e=>{e.exports=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}},7599:e=>{e.exports=function(e){return this.__data__.get(e)}},4758:e=>{e.exports=function(e){return this.__data__.has(e)}},4309:(e,t,r)=>{var n=r(8407),o=r(7071),i=r(3369);e.exports=function(e,t){var r=this.__data__;if(r instanceof n){var a=r.__data__;if(!o||a.length<199)return a.push([e,t]),this.size=++r.size,this;r=this.__data__=new i(a)}return r.set(e,t),this.size=r.size,this}},2351:e=>{e.exports=function(e,t,r){for(var n=r-1,o=e.length;++n{var n=r(4523),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,a=n((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(o,(function(e,r,n,o){t.push(n?o.replace(i,"$1"):r||e)})),t}));e.exports=a},327:(e,t,r)=>{var n=r(3448);e.exports=function(e){if("string"==typeof e||n(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},7990:e=>{var t=/\s/;e.exports=function(e){for(var r=e.length;r--&&t.test(e.charAt(r)););return r}},6678:(e,t,r)=>{var n=r(5990);e.exports=function(e){return n(e,4)}},361:(e,t,r)=>{var n=r(5990);e.exports=function(e){return n(e,5)}},5703:e=>{e.exports=function(e){return function(){return e}}},1966:(e,t,r)=>{var n=r(731),o=r(1078),i=r(5976),a=r(9246),s=i((function(e,t){return a(e)?n(e,o(t,1,a,!0)):[]}));e.exports=s},7813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},3311:(e,t,r)=>{var n=r(7740)(r(998));e.exports=n},998:(e,t,r)=>{var n=r(1848),o=r(7206),i=r(554),a=Math.max;e.exports=function(e,t,r){var s=null==e?0:e.length;if(!s)return-1;var u=null==r?0:i(r);return u<0&&(u=a(s+u,0)),n(e,o(t,3),u)}},7361:(e,t,r)=>{var n=r(7786);e.exports=function(e,t,r){var o=null==e?void 0:n(e,t);return void 0===o?r:o}},9095:(e,t,r)=>{var n=r(13),o=r(222);e.exports=function(e,t){return null!=e&&o(e,t,n)}},6557:e=>{e.exports=function(e){return e}},3137:(e,t,r)=>{var n=r(5703),o=r(7779),i=r(6557),a=Object.prototype.toString,s=o((function(e,t,r){null!=t&&"function"!=typeof t.toString&&(t=a.call(t)),e[t]=r}),n(i));e.exports=s},5694:(e,t,r)=>{var n=r(9454),o=r(7005),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,u=n(function(){return arguments}())?n:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=u},1469:e=>{var t=Array.isArray;e.exports=t},8612:(e,t,r)=>{var n=r(3560),o=r(1780);e.exports=function(e){return null!=e&&o(e.length)&&!n(e)}},9246:(e,t,r)=>{var n=r(8612),o=r(7005);e.exports=function(e){return o(e)&&n(e)}},4144:(e,t,r)=>{e=r.nmd(e);var n=r(5639),o=r(5062),i=t&&!t.nodeType&&t,a=i&&e&&!e.nodeType&&e,s=a&&a.exports===i?n.Buffer:void 0,u=(s?s.isBuffer:void 0)||o;e.exports=u},8446:(e,t,r)=>{var n=r(939);e.exports=function(e,t){return n(e,t)}},3560:(e,t,r)=>{var n=r(4239),o=r(3218);e.exports=function(e){if(!o(e))return!1;var t=n(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},1780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},6688:(e,t,r)=>{var n=r(5588),o=r(1717),i=r(1167),a=i&&i.isMap,s=a?o(a):n;e.exports=s},3218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},7005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},2928:(e,t,r)=>{var n=r(9221),o=r(1717),i=r(1167),a=i&&i.isSet,s=a?o(a):n;e.exports=s},3448:(e,t,r)=>{var n=r(4239),o=r(7005);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==n(e)}},6719:(e,t,r)=>{var n=r(8749),o=r(1717),i=r(1167),a=i&&i.isTypedArray,s=a?o(a):n;e.exports=s},3674:(e,t,r)=>{var n=r(4636),o=r(280),i=r(8612);e.exports=function(e){return i(e)?n(e):o(e)}},1704:(e,t,r)=>{var n=r(4636),o=r(313),i=r(8612);e.exports=function(e){return i(e)?n(e,!0):o(e)}},8306:(e,t,r)=>{var n=r(3369);function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,o=t?t.apply(this,n):n[0],i=r.cache;if(i.has(o))return i.get(o);var a=e.apply(this,n);return r.cache=i.set(o,a)||i,a};return r.cache=new(o.Cache||n),r}o.Cache=n,e.exports=o},308:e=>{e.exports=function(){}},9601:(e,t,r)=>{var n=r(371),o=r(9152),i=r(5403),a=r(327);e.exports=function(e){return i(e)?n(a(e)):o(e)}},479:e=>{e.exports=function(){return[]}},5062:e=>{e.exports=function(){return!1}},8601:(e,t,r)=>{var n=r(4841),o=1/0;e.exports=function(e){return e?(e=n(e))===o||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},554:(e,t,r)=>{var n=r(8601);e.exports=function(e){var t=n(e),r=t%1;return t==t?r?t-r:t:0}},4841:(e,t,r)=>{var n=r(7561),o=r(3218),i=r(3448),a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,u=/^0o[0-7]+$/i,l=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(i(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=n(e);var r=s.test(e);return r||u.test(e)?l(e.slice(2),r?2:8):a.test(e)?NaN:+e}},9833:(e,t,r)=>{var n=r(531);e.exports=function(e){return null==e?"":n(e)}},4908:(e,t,r)=>{var n=r(5652);e.exports=function(e){return e&&e.length?n(e):[]}},2569:(e,t,r)=>{var n=r(731),o=r(5976),i=r(9246),a=o((function(e,t){return i(e)?n(e,t):[]}));e.exports=a}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n](i,i.exports,r),i.loaded=!0,i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var n={};return(()=>{"use strict";function e(e,t){return e.reduce((function(e,t){return e?t(e):null}),t)}r.r(n),r.d(n,{chordParserFactory:()=>zt,chordRendererFactory:()=>mr});var t=r(361),o=r.n(t);const i=function(e){if(!Array.isArray(e))throw new TypeError("customFilters should be given as an array");if(e.some((function(e){return"function"!=typeof e})))throw new TypeError("The given filter is not a function");return!0};function a(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 s(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return{input:{symbol:t},normalized:{},formatted:{},parserConfiguration:o()(e)}}function Re(e){return function(e){if(Array.isArray(e))return Ie(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Ie(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ie(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ie(e,t){(null==t||t>e.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);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0)throw new Z(e,a);return n}(t)),t.input.modifiers=r,t.normalized.intervals=function(e,t){return e.includes(gt.power)?["1","5"]:e.includes(gt.bass)?["1"]:Ye()(["1"].concat(wt(function(e){var t=[];return e.includes(gt.omit3)?[]:(ae(e,[gt.sus,gt.sus2])||(kt(e)?e.includes(gt.eleventh)||t.push("3"):t.push("b3")),e.includes(gt.add3)&&t.push("3"),t)}(e)),wt(function(e){var t=[];return ae(e,[gt.sus,gt.add4])&&t.push("4"),t}(e)),wt(function(e,t){var r=[];return e.includes(gt.omit5)?[]:((ae(e,[gt.dim,gt.halfDim,gt.fifthFlat])||Et(e,t,"b5"))&&r.push("b5"),(ae(e,[gt.aug,gt.fifthSharp])||Et(e,t,"#5"))&&r.push("#5"),r.length||e.includes(gt.thirteenthFlat)||r.push("5"),r)}(e,t)),wt(function(e){var t=[];return ae(e,[gt.addb6])&&t.push("b6"),!ae(e,[gt.add6,gt.add69])||_t(e)||ae(e,[gt.halfDim])||t.push("6"),t}(e)),wt(function(e){var t=[];return ae(e,[gt.alt])&&t.push("b7"),ae(e,[gt.seventh,gt.halfDim])?e.includes(gt.dim)?t.push("bb7"):e.includes(gt.halfDim)?t.push("b7"):t.push(jt(e)):ae(e,[gt.ninth,gt.eleventh,gt.thirteenth])&&t.push(jt(e)),e.includes(gt.add7)&&t.push("7"),t}(e)),wt(function(e,t){var r=[];return ae(e,[gt.add69,gt.ninth,gt.eleventh,gt.thirteenth])&&ue(e,[gt.ninthFlat,gt.ninthSharp])&&r.push("9"),ae(e,[gt.sus2,gt.add9])&&r.push("9"),(ae(e,[gt.ninthFlat])||Et(e,t,"b9"))&&r.push("b9"),(ae(e,[gt.ninthSharp])||Et(e,t,"#9"))&&r.push("#9"),r}(e,t)),wt(function(e,t){var r=[];return(ae(e,[gt.thirteenth])&&!kt(e)||ae(e,[gt.eleventh,gt.add11]))&&r.push("11"),(ae(e,[gt.eleventhSharp])||Et(e,t,"#11"))&&r.push("#11"),r}(e,t)),wt(function(e,t){var r=[];return(ae(e,[gt.add13,gt.thirteenth])||ae(e,[gt.add6,gt.add69])&&_t(e)||ae(e,[gt.add6,gt.add69])&&ae(e,[gt.halfDim]))&&r.push("13"),(ae(e,[gt.thirteenthFlat])||Et(e,t,"b13"))&&r.push("b13"),r}(e,t)))).sort((function(e,t){return xt[e]-xt[t]}))}(r,e),t.normalized.semitones=t.normalized.intervals.map((function(e){return xt[e]})).sort((function(e,t){return e-t})),t.normalized.intents=function(e){return{major:kt(e),eleventh:e.includes(gt.eleventh),alt:e.includes(gt.alt)}}(r),t}function jt(e){return e.includes(gt.ma)?"7":"b7"}function Et(e,t,r){return e.includes(gt.alt)&&t.includes(r)}function kt(e){return ue(e,[gt.mi,gt.dim,gt.dim7,gt.halfDim])}function _t(e){return ae(e,[gt.seventh,gt.ninth,gt.eleventh,gt.thirteenth])}function At(e){return e.replace(/[.\-*+?^${}()|[\]\\]/g,"\\$&")}function Ct(e){return function(e){if(Array.isArray(e))return Nt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Nt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Nt(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0}function Rt(e){return It(new J,e)}function It(e,t){return{type:e.name,chord:e.chord,message:e.message,notationSystem:t}}const zt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=["b5","#5","b9","#9","#11","b13"],n=["english","german","latin"],a=t.notationSystems,s=void 0===a?o()(n):a,u=t.altIntervals,l=void 0===u?o()(r):u,c=t.customFilters,f=void 0===c?[]:c;return Tt(l,r),Mt(s,n),i(f),p;function p(r){var n=[];if(!Pt(r)){var i=new K;n.push(It(i))}var a,u,c,p=o()(I).filter((function(e){return s.includes(e.name)}));if(!n.length)for(;p.length&&!a;){c=p.shift(),u=[Pe.bind(null,t),ut.bind(null,c.notes),Ce,Ot.bind(null,l),fe,He,rt,Ee,pe,Ue].concat(Ct(f));try{(a=e(u,r))?a.input.notationSystem=c.name:n.push(Rt(c.name))}catch(i){n.push(It(i,c.name))}}return a||{error:n}}};function Ft(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 Lt(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"none",r=arguments.length>1?arguments[1]:void 0;if("none"===t)return r;var n={max:["4","b5","#5","6","bb7","b7","7","b9","9","#9","11","#11","b13","13"],core:["4","b9","9","#9","11","#11","b13","13"]},o=Qt()(r.normalized.intervals,n[t]);ue(o,["b3","3"])&&o.push(r.normalized.intents.major?"3":"b3"),ue(o,["b5","5","#5"])&&o.push("5"),r.normalized.intervals=o,r.normalized.semitones=o.map((function(e){return xt[e]})),r.normalized.intents.eleventh=!1,r.normalized.intents.alt=!1,"max"===t&&delete r.normalized.bassNote;var i=[rt,Ee,Ue];return e(i,r)}var Zt=r(3137),er=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],tr={"C#":"Db","D#":"Eb","F#":"Gb","G#":"Ab","A#":"Bb"},rr=r.n(Zt)()(tr);function nr(e,t,r){var n=r.normalized,o=n.rootNote,i=n.bassNote,a=ir(o);if(r.normalized.rootNote=or(a,e,t),r.formatted.rootNote=r.normalized.rootNote,i){var s=ir(i);r.normalized.bassNote=or(s,e,t),r.formatted.bassNote=r.normalized.bassNote}return Ue(r)}function or(e,t,r){var n=er.indexOf(e)+t,o=Math.floor(n/12),i=er[n-12*o];return r&&tr[i]||i}function ir(e){return rr[e]||e}var ar={german:{Ab:"As",A:"A","A#":"Ais",Bb:"Hes",B:"H",C:"C","C#":"Cis",Db:"Des",D:"D","D#":"Dis",Eb:"Es",E:"E",F:"F","F#":"Fis",Gb:"Ges",G:"G","G#":"Gis"},latin:{Ab:"Lab",A:"La","A#":"La#",Bb:"Sib",B:"Si",C:"Do","C#":"Do#",Db:"Reb",D:"Re","D#":"Re#",Eb:"Mib",E:"Mi",F:"Fa","F#":"Fa#",Gb:"Solb",G:"Sol","G#":"Sol#"}},sr=Object.keys(ar);function ur(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"english",t=arguments.length>1?arguments[1]:void 0,r="auto"===e?t.input.notationSystem:e;return"english"===r?t:sr.includes(r)?(t.formatted.rootNote=ar[r][t.formatted.rootNote],t.formatted.bassNote&&(t.formatted.bassNote=ar[r][t.formatted.bassNote]),t):null}function lr(e){return e&&e.formatted&&e.formatted.symbol?e.formatted.symbol:null}function cr(e){delete e.parserConfiguration.notationSystems;var t=o()(e),r=lr(e),n=zt(e.parserConfiguration)(r);return t.input=n.input,t}function fr(e){return fr="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},fr(e)}function pr(e){return function(e){if(Array.isArray(e))return dr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return dr(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?dr(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dr(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{},r=t.useShortNamings,n=void 0!==r&&r,a=t.simplify,s=void 0===a?"none":a,u=t.transposeValue,l=void 0===u?0:u,c=t.harmonizeAccidentals,f=void 0!==c&&c,p=t.useFlats,d=void 0!==p&&p,h=t.printer,m=void 0===h?"text":h,v=t.notationSystem,y=void 0===v?"english":v,b=t.customFilters,g=void 0===b?[]:b;i(g);var x=[];return["max","core"].includes(s)&&x.push(Xt.bind(null,s)),(f||0!==l)&&x.push(nr.bind(null,l,d)),n&&x.push(Kt),x.push.apply(x,[ur.bind(null,y),pe].concat(pr(g))),w;function w(t){if(!hr(t))return null;var r=e(x,o()(t));return"raw"===m?cr(r):lr(r)}}})(),n})()},e.exports=t()},7856:function(e){e.exports=function(){"use strict";function e(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t1?r-1:0),o=1;o/gm),B=s(/^data-[\-\w.\u00B7-\uFFFF]/),U=s(/^aria-[\-\w]+$/),H=s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),$=s(/^(?:\w+script|data):/i),q=s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),V="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};function W(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:G(),t=function(e){return K(e)};if(t.version="2.3.4",t.removed=[],!e||!e.document||9!==e.document.nodeType)return t.isSupported=!1,t;var r=e.document,n=e.document,o=e.DocumentFragment,i=e.HTMLTemplateElement,s=e.Node,u=e.Element,l=e.NodeFilter,c=e.NamedNodeMap,f=void 0===c?e.NamedNodeMap||e.MozNamedAttrMap:c,S=e.HTMLFormElement,O=e.DOMParser,J=e.trustedTypes,Q=u.prototype,X=k(Q,"cloneNode"),Z=k(Q,"nextSibling"),ee=k(Q,"childNodes"),te=k(Q,"parentNode");if("function"==typeof i){var re=n.createElement("template");re.content&&re.content.ownerDocument&&(n=re.content.ownerDocument)}var ne=Y(J,r),oe=ne&&Ie?ne.createHTML(""):"",ie=n,ae=ie.implementation,se=ie.createNodeIterator,ue=ie.createDocumentFragment,le=ie.getElementsByTagName,ce=r.importNode,fe={};try{fe=E(n).documentMode?n.documentMode:{}}catch(e){}var pe={};t.isSupported="function"==typeof te&&ae&&void 0!==ae.createHTMLDocument&&9!==fe;var de=F,he=L,me=B,ve=U,ye=$,be=q,ge=H,xe=null,we=j({},[].concat(W(_),W(A),W(C),W(T),W(D))),Se=null,Oe=j({},[].concat(W(P),W(R),W(I),W(z))),je=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}})),Ee=null,ke=null,_e=!0,Ae=!0,Ce=!1,Ne=!1,Te=!1,Me=!1,De=!1,Pe=!1,Re=!1,Ie=!1,ze=!0,Fe=!0,Le=!1,Be={},Ue=null,He=j({},["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"]),$e=null,qe=j({},["audio","video","img","source","image","track"]),Ve=null,We=j({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ge="http://www.w3.org/1998/Math/MathML",Ye="http://www.w3.org/2000/svg",Ke="http://www.w3.org/1999/xhtml",Je=Ke,Qe=!1,Xe=void 0,Ze=["application/xhtml+xml","text/html"],et="text/html",tt=void 0,rt=null,nt=n.createElement("form"),ot=function(e){return e instanceof RegExp||e instanceof Function},it=function(e){rt&&rt===e||(e&&"object"===(void 0===e?"undefined":V(e))||(e={}),e=E(e),xe="ALLOWED_TAGS"in e?j({},e.ALLOWED_TAGS):we,Se="ALLOWED_ATTR"in e?j({},e.ALLOWED_ATTR):Oe,Ve="ADD_URI_SAFE_ATTR"in e?j(E(We),e.ADD_URI_SAFE_ATTR):We,$e="ADD_DATA_URI_TAGS"in e?j(E(qe),e.ADD_DATA_URI_TAGS):qe,Ue="FORBID_CONTENTS"in e?j({},e.FORBID_CONTENTS):He,Ee="FORBID_TAGS"in e?j({},e.FORBID_TAGS):{},ke="FORBID_ATTR"in e?j({},e.FORBID_ATTR):{},Be="USE_PROFILES"in e&&e.USE_PROFILES,_e=!1!==e.ALLOW_ARIA_ATTR,Ae=!1!==e.ALLOW_DATA_ATTR,Ce=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ne=e.SAFE_FOR_TEMPLATES||!1,Te=e.WHOLE_DOCUMENT||!1,Pe=e.RETURN_DOM||!1,Re=e.RETURN_DOM_FRAGMENT||!1,Ie=e.RETURN_TRUSTED_TYPE||!1,De=e.FORCE_BODY||!1,ze=!1!==e.SANITIZE_DOM,Fe=!1!==e.KEEP_CONTENT,Le=e.IN_PLACE||!1,ge=e.ALLOWED_URI_REGEXP||ge,Je=e.NAMESPACE||Ke,e.CUSTOM_ELEMENT_HANDLING&&ot(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(je.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&ot(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(je.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(je.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Xe=Xe=-1===Ze.indexOf(e.PARSER_MEDIA_TYPE)?et:e.PARSER_MEDIA_TYPE,tt="application/xhtml+xml"===Xe?function(e){return e}:m,Ne&&(Ae=!1),Re&&(Pe=!0),Be&&(xe=j({},[].concat(W(D))),Se=[],!0===Be.html&&(j(xe,_),j(Se,P)),!0===Be.svg&&(j(xe,A),j(Se,R),j(Se,z)),!0===Be.svgFilters&&(j(xe,C),j(Se,R),j(Se,z)),!0===Be.mathMl&&(j(xe,T),j(Se,I),j(Se,z))),e.ADD_TAGS&&(xe===we&&(xe=E(xe)),j(xe,e.ADD_TAGS)),e.ADD_ATTR&&(Se===Oe&&(Se=E(Se)),j(Se,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&j(Ve,e.ADD_URI_SAFE_ATTR),e.FORBID_CONTENTS&&(Ue===He&&(Ue=E(Ue)),j(Ue,e.FORBID_CONTENTS)),Fe&&(xe["#text"]=!0),Te&&j(xe,["html","head","body"]),xe.table&&(j(xe,["tbody"]),delete Ee.tbody),a&&a(e),rt=e)},at=j({},["mi","mo","mn","ms","mtext"]),st=j({},["foreignobject","desc","title","annotation-xml"]),ut=j({},A);j(ut,C),j(ut,N);var lt=j({},T);j(lt,M);var ct=function(e){var t=te(e);t&&t.tagName||(t={namespaceURI:Ke,tagName:"template"});var r=m(e.tagName),n=m(t.tagName);if(e.namespaceURI===Ye)return t.namespaceURI===Ke?"svg"===r:t.namespaceURI===Ge?"svg"===r&&("annotation-xml"===n||at[n]):Boolean(ut[r]);if(e.namespaceURI===Ge)return t.namespaceURI===Ke?"math"===r:t.namespaceURI===Ye?"math"===r&&st[n]:Boolean(lt[r]);if(e.namespaceURI===Ke){if(t.namespaceURI===Ye&&!st[n])return!1;if(t.namespaceURI===Ge&&!at[n])return!1;var o=j({},["title","style","font","a","script"]);return!lt[r]&&(o[r]||!ut[r])}return!1},ft=function(e){h(t.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=oe}catch(t){e.remove()}}},pt=function(e,r){try{h(t.removed,{attribute:r.getAttributeNode(e),from:r})}catch(e){h(t.removed,{attribute:null,from:r})}if(r.removeAttribute(e),"is"===e&&!Se[e])if(Pe||Re)try{ft(r)}catch(e){}else try{r.setAttribute(e,"")}catch(e){}},dt=function(e){var t=void 0,r=void 0;if(De)e=""+e;else{var o=v(e,/^[\r\n\t ]+/);r=o&&o[0]}"application/xhtml+xml"===Xe&&(e=''+e+"");var i=ne?ne.createHTML(e):e;if(Je===Ke)try{t=(new O).parseFromString(i,Xe)}catch(e){}if(!t||!t.documentElement){t=ae.createDocument(Je,"template",null);try{t.documentElement.innerHTML=Qe?"":i}catch(e){}}var a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Je===Ke?le.call(t,Te?"html":"body")[0]:Te?t.documentElement:a},ht=function(e){return se.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)},mt=function(e){return e instanceof S&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof f)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore)},vt=function(e){return"object"===(void 0===s?"undefined":V(s))?e instanceof s:e&&"object"===(void 0===e?"undefined":V(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},yt=function(e,r,n){pe[e]&&p(pe[e],(function(e){e.call(t,r,n,rt)}))},bt=function(e){var r=void 0;if(yt("beforeSanitizeElements",e,null),mt(e))return ft(e),!0;if(v(e.nodeName,/[\u0080-\uFFFF]/))return ft(e),!0;var n=tt(e.nodeName);if(yt("uponSanitizeElement",e,{tagName:n,allowedTags:xe}),!vt(e.firstElementChild)&&(!vt(e.content)||!vt(e.content.firstElementChild))&&x(/<[/\w]/g,e.innerHTML)&&x(/<[/\w]/g,e.textContent))return ft(e),!0;if("select"===n&&x(/