From 171d6ac8fc69d3a2685f2bbbbc1e0f4dbc53d86e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christophe=20No=C3=ABl?= Date: Sun, 28 Apr 2019 10:49:25 +0200 Subject: [PATCH] build(build): v0.6.0 build Reverted to semver --- .nvmrc | 2 +- CHANGELOG.md | 2 +- ...93b2580c35e5309aae.css => main.dbae970e9fc0ba07e9ca.css} | 2 +- ...35e5309aae.css.map => main.dbae970e9fc0ba07e9ca.css.map} | 2 +- ...35e5309aae.css => vendors~main.dbae970e9fc0ba07e9ca.css} | 2 +- ...ae.css.map => vendors~main.dbae970e9fc0ba07e9ca.css.map} | 2 +- docs/index.html | 4 ++-- docs/main.5193b2580c35e5309aae.js | 2 -- docs/main.5193b2580c35e5309aae.js.map | 1 - docs/main.dbae970e9fc0ba07e9ca.js | 2 ++ docs/main.dbae970e9fc0ba07e9ca.js.map | 1 + ...0c35e5309aae.js => vendors~main.dbae970e9fc0ba07e9ca.js} | 2 +- ...9aae.js.map => vendors~main.dbae970e9fc0ba07e9ca.js.map} | 2 +- package.json | 6 +++--- src/ui/layout/app/_components/Footer.js | 2 +- 15 files changed, 17 insertions(+), 17 deletions(-) rename docs/css/{main.5193b2580c35e5309aae.css => main.dbae970e9fc0ba07e9ca.css} (99%) rename docs/css/{main.5193b2580c35e5309aae.css.map => main.dbae970e9fc0ba07e9ca.css.map} (99%) rename docs/css/{vendors~main.5193b2580c35e5309aae.css => vendors~main.dbae970e9fc0ba07e9ca.css} (97%) rename docs/css/{vendors~main.5193b2580c35e5309aae.css.map => vendors~main.dbae970e9fc0ba07e9ca.css.map} (99%) delete mode 100644 docs/main.5193b2580c35e5309aae.js delete mode 100644 docs/main.5193b2580c35e5309aae.js.map create mode 100644 docs/main.dbae970e9fc0ba07e9ca.js create mode 100644 docs/main.dbae970e9fc0ba07e9ca.js.map rename docs/{vendors~main.5193b2580c35e5309aae.js => vendors~main.dbae970e9fc0ba07e9ca.js} (99%) rename docs/{vendors~main.5193b2580c35e5309aae.js.map => vendors~main.dbae970e9fc0ba07e9ca.js.map} (99%) diff --git a/.nvmrc b/.nvmrc index 6b3621db..4044f908 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -11.9.0 \ No newline at end of file +12.0.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 33ab1e19..1a72c069 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## v6 (28/04/2019) +## v0.6.0 (28/04/2019) #### New features: diff --git a/docs/css/main.5193b2580c35e5309aae.css b/docs/css/main.dbae970e9fc0ba07e9ca.css similarity index 99% rename from docs/css/main.5193b2580c35e5309aae.css rename to docs/css/main.dbae970e9fc0ba07e9ca.css index ea97df0e..016cc6db 100644 --- a/docs/css/main.5193b2580c35e5309aae.css +++ b/docs/css/main.dbae970e9fc0ba07e9ca.css @@ -1,2 +1,2 @@ html{box-sizing:border-box;font-size:62.5%;font-size:.625em}body{font-size:1.6rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;line-height:1.5}.ucc-line{margin:0;font-family:PT Mono,consolas,courier,monospace;white-space:pre-wrap}.ucc-chord-line{background-color:rgba(0,0,0,.05)}.ucc-chord-symbol{font-weight:700}.ucc-bar-separator{margin:0 10px;color:#aaa}.ucc-bar-separator:first-of-type{margin-left:0}.ucc-bar-separator:last-of-type{margin-right:0}.ErrorBoundary{padding:2rem}#app,body,html{height:100%;padding:0}.appLayout-wrapper{width:100%;height:100%}.appLayout-wrapper,.leftBar{display:flex;flex-direction:row;flex-wrap:nowrap}.leftBar{flex-shrink:0;width:15%}.leftBar.leftBar-isCollapsed{width:48px}.theme-light .leftBar.leftBar-isCollapsed{border-right:1px solid}.theme-dark .leftBar{color:#f4f4f4;background-color:#303846}.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{flex-shrink:0;width:15%;display:flex;flex-direction:row;flex-wrap:nowrap}.rightBar.rightBar-isCollapsed{width:48px}.theme-light .rightBar.rightBar-isCollapsed{border-left:1px solid}.theme-dark .rightBar{color:#f4f4f4;background-color:#303846}.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{overflow-y:scroll;flex:1 1 auto}.leftBar-isCollapsed .leftBar-content{padding:.5rem 1rem;text-align:center;cursor:pointer}.rightBar-content{overflow-y:scroll;flex:1 1 auto}.rightBar-isCollapsed .rightBar-content{padding:.5rem 1rem;text-align:center;cursor:pointer}.leftBar-collapser{flex:0 0 12px;display:flex;cursor:pointer}.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{flex:1 1 auto;align-self:center;font-weight:700}.leftBar-collapserIcon .icon{font-size:1.2rem}.rightBar-collapser{flex:0 0 12px;display:flex;cursor:pointer}.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{flex:1 1 auto;align-self:center;font-weight:700}.rightBar-collapserIcon .icon{font-size:1.2rem}.appLayout-main{flex-grow:1;display:flex;flex-direction:column;flex-wrap:nowrap}.appLayout-header{flex-shrink:0}.theme-light .appLayout-header{border-bottom:2px solid}.theme-dark .appLayout-header{color:hsla(0,0%,95.7%,.7);background-color:#293132;border-bottom:2px solid #000}@media print{.appLayout-header{display:none}}.appLayout-content{overflow-y:auto;flex-grow:1}.theme-dark .appLayout-content{background-color:#2e4052}@media print{.appLayout-content{overflow-y:visible}}.appLayout-footer{flex-shrink:0}.theme-light .appLayout-footer{border-top:1px solid}.theme-dark .appLayout-footer{color:#f4f4f4;background-color:#293132;border-top:1px solid #000}@media print{.appLayout-footer{display:none}}.logo-isExpanded{margin:.5rem 1rem;padding-bottom:.5rem;font-size:1.6rem;font-family:Open Sans,sans-serif;font-weight:700}.theme-light .logo-isExpanded{border-bottom:1px dotted}.theme-dark .logo-isExpanded{color:#f4f4f4;border-bottom:1px dotted hsla(0,0%,95.7%,.7)}.leftBar-isCollapsed .logo-isExpanded{display:none}.logo-icon{font-size:1.4rem;margin-right:.5rem}.logo-isCollapsed{padding:1rem 0}.leftBar:not(.leftBar-isCollapsed) .logo-isCollapsed{display:none}.icon,.mainNav-entries{vertical-align:middle}.mainNav-entries{margin:0;padding:0;display:flex;justify-content:center;list-style-type:none;font-size:1.6rem;font-family:Open Sans,sans-serif;font-weight:400}.mainNavEntry{display:inline-block;padding:0 2rem;cursor:pointer}.theme-dark .mainNavEntry:hover{color:#f4f4f4;background-color:#404c4e}.theme-dark .mainNavEntry.mainNavEntry-isActive{color:#f4f4f4;background-color:#000}.mainNavEntry-icon .icon{margin-right:.5rem;font-size:1.4rem}.appFooter{padding:.25rem 1rem;font-size:1rem}.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{padding:1rem;display:flex;flex-direction:row;flex-wrap:wrap}.fileManagerAction{flex:0 1 auto;padding:.5rem;margin-right:.5rem;white-space:nowrap}.fileManagerAction:hover{cursor:pointer}.theme-dark .fileManagerAction:hover{background-color:#596883}.fileManagerAction-icon .icon{font-size:1.4rem}.fileManager-entriesList{padding-left:0;list-style:none}.fileManagerEntry{cursor:pointer}.theme-dark .fileManagerEntry:hover{background-color:#596883}.theme-dark .fileManagerEntry.fileManagerEntry-isSelected{background-color:#fabf2b}.fileManagerEntry-input{width:100%;padding:.25rem 1rem;background-color:transparent;border:none;cursor:pointer;outline:none}.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{width:100%;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}.songEditor-source{flex:0 1 50%;display:flex;overflow-y:scroll}.songEditor-preview{flex:0 1 50%;padding:1rem;overflow-y:scroll}.theme-dark .ep-SongRenderer{color:#dbdbdb}.prosemirrorWrapper{flex:1 1 auto;overflow-y:scroll;padding:1rem}.theme-dark .prosemirrorWrapper{background-color:#1c2731}.ProseMirror{overflow-y:scroll;outline:none;font-family:PT Mono,consolas,courier,monospace;font-size:1.4rem}.theme-dark .ProseMirror{color:#dbdbdb}.ProseMirror p{margin:0}.exportPreview{padding:1rem}.theme-dark .exportPreview{background-color:#f4f4f4}.theme-dark .exp-SongRenderer{color:#303846}.playRenderer{padding:1rem}.theme-dark .pr-SongRenderer{color:#dbdbdb}.printPreview{overflow-y:scroll}.theme-dark .printPreview{background-color:#2e4052}@media print{.printPreview{background-color:#fff!important;overflow-y:auto}}.printPreview-page{position:relative;margin:2rem auto;background-color:#fff}@media print{.printPreview-page{margin:0;page-break-after:auto}}.printPreview-pageContentWrapper{position:absolute;top:0;left:0;bottom:0;right:0}.printPreview-pageContent{display:flex;flex-direction:column;flex-wrap:nowrap;height:100%}.printPreview-pageHeader{font-size:1.8rem;font-weight:700;margin-bottom:1rem}.printPreview-pageColumnWrapper{flex:1;display:flex;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{width:210mm;height:297mm}.printPreview-page--booxmax2pro{width:698px;height:930px}.printPreview-pageContentWrapper--padding1{padding:3mm}.printPreview-pageContentWrapper--padding2{padding:6mm}.printPreview-pageContentWrapper--padding3{padding:9mm}.printPreview-pageContentWrapper--padding4{padding:12mm}.printPreview-pageContentWrapper--padding5{padding:15mm}.printPreview-page--font-5{font-size:7px}.printPreview-page--font-4{font-size:8px}.printPreview-page--font-3{font-size:9px}.printPreview-page--font-2{font-size:10px}.printPreview-page--font-1{font-size:11px}.printPreview-page--font0{font-size:12px}.printPreview-page--font1{font-size:13px}.printPreview-page--font2{font-size:14px}.printPreview-page--font3{font-size:15px}.printPreview-page--font4{font-size:16px}.printPreview-page--font5{font-size:17px}.measuring-node{visibility:hidden;position:absolute;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-title{padding:.5rem 1rem .5rem .5rem;display:flex;font-size:1.4rem;font-weight:700}.theme-light .sb-optionsGroup-title{border-bottom:2px solid}.theme-dark .sb-optionsGroup-title{border-bottom:2px solid hsla(0,0%,95.7%,.7)}.theme-dark .sb-optionsGroup-isNotInteractable .sb-optionsGroup-title{color:#71819e}.sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover{cursor:pointer}.theme-dark .sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover{background-color:#596883}.sb-optionsGroup-label{flex:1 1 auto}.sb-optionsGroup-toggle{flex:0 0 auto}.sb-optionsGroup-iconTitle .icon{font-size:1.6rem}.sb-optionsGroup-iconToggle .icon{font-size:1.8rem}.sb-optionSelect{font-size:1.2rem;padding:.5rem 1.5rem .5rem 1rem}.theme-light .sb-optionSelect{border-bottom:1px dotted}.theme-dark .sb-optionSelect{border-bottom:1px dotted #71819e}.theme-dark .sb-optionsGroup .sb-optionSelect{background-color:#1b2028}.theme-dark .sb-optionSelect.sb-optionSelect-isNotInteractable{color:#71819e}.sb-optionSelect:hover: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{padding-top:.5rem;display:flex}.sb-optionSelectChoice:hover{text-decoration:underline;cursor:pointer}.sb-optionSelectChoice-isSelected{font-weight:700}.sb-optionSelectChoice-check{flex:0 0 20px}.sb-optionSelectChoice-checkIcon .icon{font-size:1.2rem}.sb-optionSelectChoice-label{flex:1 1 auto}.sb-optionSlider{display:flex;flex-wrap:wrap;font-size:1.2rem;padding:.5rem 1.5rem .5rem 1rem}.theme-light .sb-optionSlider{border-bottom:1px dotted}.theme-dark .sb-optionSlider{border-bottom:1px dotted #71819e}.theme-dark .sb-optionsGroup .sb-optionSlider{background-color:#1b2028}.theme-dark .sb-optionSlider.sb-optionSlider-isNotInteractable{color:#71819e}.sb-optionSlider:hover: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;vertical-align:middle;font-size:1.2rem}.sb-optionSlider-range{flex:1 1 100%}.theme-light .sb-optionSlider-range input[type=range]{-webkit-appearance:none;width:100%;background:transparent}.theme-light .sb-optionSlider-range input[type=range]:focus{outline:none}.theme-light .sb-optionSlider-range input[type=range]::-webkit-slider-runnable-track{width:100%;height:10px;cursor:pointer;animation:.2s;border:0 solid #000;border-radius:0;background:#feecc0}.theme-light .sb-optionSlider-range input[type=range]::-webkit-slider-thumb{width:15px;height:10px;cursor:pointer;border:0 solid #000;border-radius:0;background:#bb8704;-webkit-appearance:none;margin-top:0 * 210px/-3px}.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{width:100%;height:10px;cursor:pointer;animation:.2s;border:0 solid #000;border-radius:0;background:#feecc0}.theme-light .sb-optionSlider-range input[type=range]::-moz-range-thumb{width:15px;height:10px;cursor:pointer;border:0 solid #000;border-radius:0;background:#bb8704}.theme-light .sb-optionSlider-range input[type=range]::-ms-track{width:100%;height:10px;cursor:pointer;animation:.2s;color:transparent;border-width:15px 0;border-color:transparent;background:transparent}.theme-light .sb-optionSlider-range input[type=range]::-ms-fill-lower,.theme-light .sb-optionSlider-range input[type=range]::-ms-fill-upper{border:0 solid #000;border-radius:0;background:#feecc0}.theme-light .sb-optionSlider-range input[type=range]::-ms-thumb{width:15px;height:10px;cursor:pointer;border:0 solid #000;border-radius:0;background:#bb8704}.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;width:100%;background:transparent}.theme-dark .sb-optionSlider-range input[type=range]:focus{outline:none}.theme-dark .sb-optionSlider-range input[type=range]::-webkit-slider-runnable-track{width:100%;height:10px;cursor:pointer;animation:.2s;border:0 solid #000;border-radius:0;background:#71819e}.theme-dark .sb-optionSlider-range input[type=range]::-webkit-slider-thumb{width:15px;height:10px;cursor:pointer;border:0 solid #000;border-radius:0;background:#070809;-webkit-appearance:none;margin-top:0 * 210px/-3px}.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{width:100%;height:10px;cursor:pointer;animation:.2s;border:0 solid #000;border-radius:0;background:#71819e}.theme-dark .sb-optionSlider-range input[type=range]::-moz-range-thumb{width:15px;height:10px;cursor:pointer;border:0 solid #000;border-radius:0;background:#070809}.theme-dark .sb-optionSlider-range input[type=range]::-ms-track{width:100%;height:10px;cursor:pointer;animation:.2s;color:transparent;border-width:15px 0;border-color:transparent;background:transparent}.theme-dark .sb-optionSlider-range input[type=range]::-ms-fill-lower,.theme-dark .sb-optionSlider-range input[type=range]::-ms-fill-upper{border:0 solid #000;border-radius:0;background:#71819e}.theme-dark .sb-optionSlider-range input[type=range]::-ms-thumb{width:15px;height:10px;cursor:pointer;border:0 solid #000;border-radius:0;background:#070809}.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{opacity:.35;cursor:default}.sb-optionToggle{display:flex;font-size:1.2rem;padding:.5rem 1.5rem .5rem 1rem}.theme-light .sb-optionToggle{border-bottom:1px dotted}.theme-dark .sb-optionToggle{border-bottom:1px dotted #71819e}.theme-dark .sb-optionsGroup .sb-optionToggle{background-color:#1b2028}.theme-dark .sb-optionToggle.sb-optionToggle-isNotInteractable{color:#71819e}.sb-optionToggle:hover: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.5193b2580c35e5309aae.css.map */ \ No newline at end of file +/*# sourceMappingURL=main.dbae970e9fc0ba07e9ca.css.map */ \ No newline at end of file diff --git a/docs/css/main.5193b2580c35e5309aae.css.map b/docs/css/main.dbae970e9fc0ba07e9ca.css.map similarity index 99% rename from docs/css/main.5193b2580c35e5309aae.css.map rename to docs/css/main.dbae970e9fc0ba07e9ca.css.map index d9fd1c2f..786610c2 100644 --- a/docs/css/main.5193b2580c35e5309aae.css.map +++ b/docs/css/main.dbae970e9fc0ba07e9ca.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///scss/styles.scss","webpack:///src/ui/_components/ErrorBoundary.scss","webpack:///src/ui/layout/app/_components/App.scss","webpack:///src/ui/sideBar/_components/Logo.scss","webpack:///src/ui/layout/app/_components/Nav.scss","webpack:///src/ui/_components/Icon.scss","webpack:///src/ui/layout/app/_components/Footer.scss","webpack:///src/fileManager/_components/FileManager.scss","webpack:///src/editor/songEditor/_components/EditorLayout.scss","webpack:///src/songRenderers/editorPreview/_components/EditorPreview.scss","webpack:///src/editor/songEditor/prosemirror/ProsemirrorEditorView.scss","webpack:///src/songRenderers/exportPreview/_components/ExportPreview.scss","webpack:///src/songRenderers/playRenderer/_components/PlayRenderer.scss","webpack:///src/songRenderers/printPreview/_components/PrintPreview.scss","webpack:///src/songRenderers/printPreview/helpers/getDimensionsFromDom.scss","webpack:///src/optionsPanels/rendering/_components/Rendering.scss","webpack:///src/ui/sideBar/options/_components/OptionsGroup.scss","webpack:///src/ui/sideBar/options/_components/Select.scss","webpack:///src/ui/sideBar/options/_components/Slider.scss","webpack:///src/ui/sideBar/options/_components/Toggle.scss"],"names":[],"mappings":"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","file":"main.5193b2580c35e5309aae.css","sourcesContent":["html {\n /* switching to border-box model for all elements */\n box-sizing: border-box;\n /* set base font-size to equiv \"10px\", which is adapted to rem unit */\n font-size: 62.5%;\n /* IE9-IE11 math fixing. See http://bit.ly/1g4X0bX */\n font-size: calc(1em * 0.625); }\n\nbody {\n font-size: 1.6rem;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n line-height: 1.5; }\n\n.ucc-line {\n margin: 0;\n font-family: \"PT Mono\", consolas, courier, monospace;\n white-space: pre-wrap; }\n\n.ucc-chord-line {\n background-color: rgba(0, 0, 0, 0.05); }\n\n.ucc-chord-symbol {\n font-weight: 700; }\n\n.ucc-bar-separator {\n margin: 0 10px;\n color: #aaa; }\n .ucc-bar-separator:first-of-type {\n margin-left: 0; }\n .ucc-bar-separator:last-of-type {\n margin-right: 0; }\n",".ErrorBoundary {\n padding: 2rem; }\n","html, body, #app {\n height: 100%;\n padding: 0; }\n\n.appLayout-wrapper {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n\n.leftBar {\n flex-shrink: 0;\n width: 15%;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n .leftBar.leftBar-isCollapsed {\n width: 48px; }\n .theme-light .leftBar.leftBar-isCollapsed {\n border-right: 1px solid; }\n .theme-dark .leftBar {\n color: #f4f4f4;\n background-color: #303846; }\n .theme-dark .leftBar.leftBar-isCollapsed {\n border-right: 1px solid #dbdbdb; }\n .theme-dark .leftBar.leftBar-isCollapsed:hover {\n background-color: #455064; }\n @media print {\n .leftBar {\n display: none; } }\n\n.rightBar {\n flex-shrink: 0;\n width: 15%;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n .rightBar.rightBar-isCollapsed {\n width: 48px; }\n .theme-light .rightBar.rightBar-isCollapsed {\n border-left: 1px solid; }\n .theme-dark .rightBar {\n color: #f4f4f4;\n background-color: #303846; }\n .theme-dark .rightBar.rightBar-isCollapsed {\n border-left: 1px solid #dbdbdb; }\n .theme-dark .rightBar.rightBar-isCollapsed:hover {\n background-color: #455064; }\n @media print {\n .rightBar {\n display: none; } }\n\n.leftBar-content {\n overflow-y: scroll;\n flex: 1 1 auto; }\n .leftBar-isCollapsed .leftBar-content {\n padding: 0.5rem 1rem;\n text-align: center;\n cursor: pointer; }\n\n.rightBar-content {\n overflow-y: scroll;\n flex: 1 1 auto; }\n .rightBar-isCollapsed .rightBar-content {\n padding: 0.5rem 1rem;\n text-align: center;\n cursor: pointer; }\n\n.leftBar-collapser {\n flex: 0 0 12px;\n display: flex;\n cursor: pointer; }\n .leftBar-isCollapsed .leftBar-collapser {\n display: none; }\n .theme-light .leftBar-collapser {\n border-right: 1px solid; }\n .theme-dark .leftBar-collapser {\n background-color: #405a73;\n border-right: 1px solid #a8a8a8; }\n .theme-dark .leftBar-collapser:hover {\n background-color: #537393; }\n .theme-dark .leftBar-collapser {\n color: #f4f4f4; }\n\n.leftBar-collapserIcon {\n flex: 1 1 auto;\n align-self: center;\n font-weight: 700; }\n .leftBar-collapserIcon .icon {\n font-size: 1.2rem; }\n\n.rightBar-collapser {\n flex: 0 0 12px;\n display: flex;\n cursor: pointer; }\n .rightBar-isCollapsed .rightBar-collapser {\n display: none; }\n .theme-light .rightBar-collapser {\n border-left: 1px solid; }\n .theme-dark .rightBar-collapser {\n background-color: #405a73;\n border-left: 1px solid #a8a8a8; }\n .theme-dark .rightBar-collapser:hover {\n background-color: #537393; }\n .theme-dark .rightBar-collapser {\n color: #f4f4f4; }\n\n.rightBar-collapserIcon {\n flex: 1 1 auto;\n align-self: center;\n font-weight: 700; }\n .rightBar-collapserIcon .icon {\n font-size: 1.2rem; }\n\n.appLayout-main {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap; }\n\n.appLayout-header {\n flex-shrink: 0; }\n .theme-light .appLayout-header {\n border-bottom: 2px solid; }\n .theme-dark .appLayout-header {\n color: rgba(244, 244, 244, 0.7);\n background-color: #293132;\n border-bottom: 2px solid black; }\n @media print {\n .appLayout-header {\n display: none; } }\n\n.appLayout-content {\n overflow-y: auto;\n flex-grow: 1; }\n .theme-dark .appLayout-content {\n background-color: #2e4052; }\n @media print {\n .appLayout-content {\n overflow-y: visible; } }\n\n.appLayout-footer {\n flex-shrink: 0; }\n .theme-light .appLayout-footer {\n border-top: 1px solid; }\n .theme-dark .appLayout-footer {\n color: #f4f4f4;\n background-color: #293132;\n border-top: 1px solid black; }\n @media print {\n .appLayout-footer {\n display: none; } }\n",".logo-isExpanded {\n margin: 0.5rem 1rem;\n padding-bottom: 0.5rem;\n font-size: 1.6rem;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 700; }\n .theme-light .logo-isExpanded {\n border-bottom: 1px dotted; }\n .theme-dark .logo-isExpanded {\n color: #f4f4f4;\n border-bottom: 1px dotted rgba(244, 244, 244, 0.7); }\n .leftBar-isCollapsed .logo-isExpanded {\n display: none; }\n\n.logo-icon {\n font-size: 1.4rem;\n margin-right: 0.5rem; }\n\n.logo-isCollapsed {\n padding: 1rem 0; }\n .leftBar:not(.leftBar-isCollapsed) .logo-isCollapsed {\n display: none; }\n",".mainNav-entries {\n margin: 0;\n padding: 0;\n display: flex;\n justify-content: center;\n list-style-type: none;\n font-size: 1.6rem;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n vertical-align: middle; }\n\n.mainNavEntry {\n display: inline-block;\n padding: 0 2rem;\n cursor: pointer; }\n .theme-dark .mainNavEntry:hover {\n color: #f4f4f4;\n background-color: #404c4e; }\n .theme-dark .mainNavEntry.mainNavEntry-isActive {\n color: #f4f4f4;\n background-color: black; }\n\n.mainNavEntry-icon .icon {\n margin-right: 0.5rem;\n font-size: 1.4rem; }\n",".icon {\n vertical-align: middle; }\n",".appFooter {\n padding: 0.25rem 1rem;\n font-size: 1rem; }\n",".fileManager-isExpanded {\n font-size: 1.2rem; }\n .leftBar-isCollapsed .fileManager-isExpanded {\n display: none; }\n\n.fileManager-isCollapsed {\n padding: 1rem 0; }\n .leftBar:not(.leftBar-isCollapsed) .fileManager-isCollapsed {\n display: none; }\n\n.fileManager-actionsList {\n padding: 1rem;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap; }\n\n.fileManagerAction {\n flex: 0 1 auto;\n padding: 0.5rem;\n margin-right: 0.5rem;\n white-space: nowrap; }\n .fileManagerAction:hover {\n cursor: pointer; }\n .theme-dark .fileManagerAction:hover {\n background-color: #596883; }\n\n.fileManagerAction-icon .icon {\n font-size: 1.4rem; }\n\n.fileManager-entriesList {\n padding-left: 0;\n list-style: none; }\n\n.fileManagerEntry {\n cursor: pointer; }\n .theme-dark .fileManagerEntry:hover {\n background-color: #596883; }\n .theme-dark .fileManagerEntry.fileManagerEntry-isSelected {\n background-color: #fabf2b; }\n\n.fileManagerEntry-input {\n width: 100%;\n padding: 0.25rem 1rem;\n background-color: transparent;\n border: none;\n cursor: pointer;\n outline: none; }\n .theme-dark .fileManagerEntry-input {\n color: #f4f4f4; }\n .theme-dark .fileManagerEntry-isSelected .fileManagerEntry-input {\n color: #303846; }\n .fileManagerEntry-isRenamed .fileManagerEntry-input {\n cursor: text; }\n .theme-dark .fileManagerEntry-isRenamed .fileManagerEntry-input {\n background-color: #f4f4f4;\n color: #303846; }\n",".songEditor {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n\n.songEditor-source {\n flex: 0 1 50%;\n display: flex;\n overflow-y: scroll; }\n\n.songEditor-preview {\n flex: 0 1 50%;\n padding: 1rem;\n overflow-y: scroll; }\n",".theme-dark .ep-SongRenderer {\n color: #dbdbdb; }\n",".prosemirrorWrapper {\n flex: 1 1 auto;\n overflow-y: scroll;\n padding: 1rem; }\n .theme-dark .prosemirrorWrapper {\n background-color: #1c2731; }\n\n.ProseMirror {\n overflow-y: scroll;\n outline: none;\n font-family: \"PT Mono\", consolas, courier, monospace;\n font-size: 1.4rem; }\n .theme-dark .ProseMirror {\n color: #dbdbdb; }\n .ProseMirror p {\n margin: 0; }\n",".exportPreview {\n padding: 1rem; }\n .theme-dark .exportPreview {\n background-color: #f4f4f4; }\n\n.theme-dark .exp-SongRenderer {\n color: #303846; }\n",".playRenderer {\n padding: 1rem; }\n\n.theme-dark .pr-SongRenderer {\n color: #dbdbdb; }\n",".printPreview {\n overflow-y: scroll; }\n .theme-dark .printPreview {\n background-color: #2e4052; }\n @media print {\n .printPreview {\n background-color: white !important;\n overflow-y: auto; } }\n\n.printPreview-page {\n position: relative;\n margin: 2rem auto;\n background-color: white; }\n @media print {\n .printPreview-page {\n margin: 0;\n page-break-after: auto; } }\n\n.printPreview-pageContentWrapper {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0; }\n\n.printPreview-pageContent {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n height: 100%; }\n\n.printPreview-pageHeader {\n font-size: 1.8rem;\n font-weight: 700;\n margin-bottom: 1rem; }\n\n.printPreview-pageColumnWrapper {\n flex: 1;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n\n.printPreview-pageColumn {\n flex: 1 1 0;\n margin: 0 0.7rem; }\n .printPreview-pageColumn:first-of-type {\n margin-left: 0; }\n .printPreview-pageColumn:last-of-type {\n margin-right: 0; }\n\n.printPreview-page--a4 {\n width: 210mm;\n height: 297mm; }\n\n.printPreview-page--booxmax2pro {\n width: 698px;\n height: 930px; }\n\n.printPreview-pageContentWrapper--padding1 {\n padding: 3mm; }\n\n.printPreview-pageContentWrapper--padding2 {\n padding: 6mm; }\n\n.printPreview-pageContentWrapper--padding3 {\n padding: 9mm; }\n\n.printPreview-pageContentWrapper--padding4 {\n padding: 12mm; }\n\n.printPreview-pageContentWrapper--padding5 {\n padding: 15mm; }\n\n.printPreview-page--font-5 {\n font-size: 7px; }\n\n.printPreview-page--font-4 {\n font-size: 8px; }\n\n.printPreview-page--font-3 {\n font-size: 9px; }\n\n.printPreview-page--font-2 {\n font-size: 10px; }\n\n.printPreview-page--font-1 {\n font-size: 11px; }\n\n.printPreview-page--font0 {\n font-size: 12px; }\n\n.printPreview-page--font1 {\n font-size: 13px; }\n\n.printPreview-page--font2 {\n font-size: 14px; }\n\n.printPreview-page--font3 {\n font-size: 15px; }\n\n.printPreview-page--font4 {\n font-size: 16px; }\n\n.printPreview-page--font5 {\n font-size: 17px; }\n",".measuring-node {\n visibility: hidden;\n position: absolute;\n z-index: -1; }\n",".rightBar-isCollapsed .renderingOptionsPanel-isExpanded {\n display: none; }\n\n.renderingOptionsPanel-isCollapsed {\n padding: 1rem 0; }\n .rightBar:not(.rightBar-isCollapsed) .renderingOptionsPanel-isCollapsed {\n display: none; }\n",".sb-optionsGroup {\n padding-top: 2rem; }\n\n.sb-optionsGroup-title {\n padding: 0.5rem 1rem 0.5rem 0.5rem;\n display: flex;\n font-size: 1.4rem;\n font-weight: 700; }\n .theme-light .sb-optionsGroup-title {\n border-bottom: 2px solid; }\n .theme-dark .sb-optionsGroup-title {\n border-bottom: 2px solid rgba(244, 244, 244, 0.7); }\n .theme-dark .sb-optionsGroup-isNotInteractable .sb-optionsGroup-title {\n color: #71819e; }\n .sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover {\n cursor: pointer; }\n .theme-dark .sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover {\n background-color: #596883; }\n\n.sb-optionsGroup-label {\n flex: 1 1 auto; }\n\n.sb-optionsGroup-toggle {\n flex: 0 0 auto; }\n\n.sb-optionsGroup-iconTitle .icon {\n font-size: 1.6rem; }\n\n.sb-optionsGroup-iconToggle .icon {\n font-size: 1.8rem; }\n",".sb-optionSelect {\n font-size: 1.2rem;\n padding: 0.5rem 1.5rem 0.5rem 1rem; }\n .theme-light .sb-optionSelect {\n border-bottom: 1px dotted; }\n .theme-dark .sb-optionSelect {\n border-bottom: 1px dotted #71819e; }\n .theme-dark .sb-optionsGroup .sb-optionSelect {\n background-color: #1b2028; }\n .theme-dark .sb-optionSelect.sb-optionSelect-isNotInteractable {\n color: #71819e; }\n .sb-optionSelect:hover:not(.sb-optionSelect-isNotInteractable) {\n cursor: pointer; }\n .theme-dark .sb-optionSelect:hover:not(.sb-optionSelect-isNotInteractable) {\n background-color: #596883; }\n\n.sb-optionSelect-title {\n display: flex; }\n\n.sb-optionSelect-desc {\n flex: 1 1 auto; }\n\n.sb-optionSelect-toggle {\n flex: 0 0 auto; }\n\n.sb-optionSelect-icon .icon {\n font-size: 1.8rem; }\n\n.sb-optionSelectChoice {\n padding-top: 0.5rem;\n display: flex; }\n .sb-optionSelectChoice:hover {\n text-decoration: underline;\n cursor: pointer; }\n\n.sb-optionSelectChoice-isSelected {\n font-weight: 700; }\n\n.sb-optionSelectChoice-check {\n flex: 0 0 20px; }\n\n.sb-optionSelectChoice-checkIcon .icon {\n font-size: 1.2rem; }\n\n.sb-optionSelectChoice-label {\n flex: 1 1 auto; }\n",".sb-optionSlider {\n display: flex;\n flex-wrap: wrap;\n font-size: 1.2rem;\n padding: 0.5rem 1.5rem 0.5rem 1rem; }\n .theme-light .sb-optionSlider {\n border-bottom: 1px dotted; }\n .theme-dark .sb-optionSlider {\n border-bottom: 1px dotted #71819e; }\n .theme-dark .sb-optionsGroup .sb-optionSlider {\n background-color: #1b2028; }\n .theme-dark .sb-optionSlider.sb-optionSlider-isNotInteractable {\n color: #71819e; }\n .sb-optionSlider:hover:not(.sb-optionSlider-isNotInteractable) {\n cursor: pointer; }\n .theme-dark .sb-optionSlider:hover:not(.sb-optionSlider-isNotInteractable) {\n background-color: #596883; }\n\n.sb-optionSlider-desc {\n flex: 1 1 auto; }\n\n.sb-optionSlider-value {\n flex: 0 0 auto;\n vertical-align: middle;\n font-size: 1.2rem; }\n\n.sb-optionSlider-range {\n flex: 1 1 100%; }\n .theme-light .sb-optionSlider-range input[type=\"range\"] {\n -webkit-appearance: none;\n width: 100%;\n background: transparent; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:focus {\n outline: none; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-webkit-slider-runnable-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n border: 0 solid black;\n border-radius: 0;\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-webkit-slider-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #bb8704;\n -webkit-appearance: none;\n margin-top: -0 * 210px/-3px; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:focus::-webkit-slider-runnable-track {\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-moz-range-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n border: 0 solid black;\n border-radius: 0;\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-moz-range-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #bb8704; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-ms-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n color: transparent;\n border-width: 15px 0;\n border-color: transparent;\n background: transparent; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-ms-fill-lower {\n border: 0 solid black;\n border-radius: 0;\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-ms-fill-upper {\n border: 0 solid black;\n border-radius: 0;\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-ms-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #bb8704; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:focus::-ms-fill-lower {\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:focus::-ms-fill-upper {\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:disabled::-moz-range-track, .theme-light .sb-optionSlider-range input[type=\"range\"]:disabled::-moz-range-thumb {\n cursor: default; }\n .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 {\n cursor: default; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:disabled::-ms-track, .theme-light .sb-optionSlider-range input[type=\"range\"]:disabled::-ms-thumb {\n cursor: default; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"] {\n -webkit-appearance: none;\n width: 100%;\n background: transparent; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:focus {\n outline: none; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-webkit-slider-runnable-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n border: 0 solid black;\n border-radius: 0;\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-webkit-slider-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #070809;\n -webkit-appearance: none;\n margin-top: -0 * 210px/-3px; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:focus::-webkit-slider-runnable-track {\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-moz-range-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n border: 0 solid black;\n border-radius: 0;\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-moz-range-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #070809; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-ms-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n color: transparent;\n border-width: 15px 0;\n border-color: transparent;\n background: transparent; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-ms-fill-lower {\n border: 0 solid black;\n border-radius: 0;\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-ms-fill-upper {\n border: 0 solid black;\n border-radius: 0;\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-ms-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #070809; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:focus::-ms-fill-lower {\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:focus::-ms-fill-upper {\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:disabled::-moz-range-track, .theme-dark .sb-optionSlider-range input[type=\"range\"]:disabled::-moz-range-thumb {\n cursor: default; }\n .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 {\n cursor: default; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:disabled::-ms-track, .theme-dark .sb-optionSlider-range input[type=\"range\"]:disabled::-ms-thumb {\n cursor: default; }\n .sb-optionSlider-range input[type=\"range\"]:disabled {\n opacity: .35;\n cursor: default; }\n",".sb-optionToggle {\n display: flex;\n font-size: 1.2rem;\n padding: 0.5rem 1.5rem 0.5rem 1rem; }\n .theme-light .sb-optionToggle {\n border-bottom: 1px dotted; }\n .theme-dark .sb-optionToggle {\n border-bottom: 1px dotted #71819e; }\n .theme-dark .sb-optionsGroup .sb-optionToggle {\n background-color: #1b2028; }\n .theme-dark .sb-optionToggle.sb-optionToggle-isNotInteractable {\n color: #71819e; }\n .sb-optionToggle:hover:not(.sb-optionToggle-isNotInteractable) {\n cursor: pointer; }\n .theme-dark .sb-optionToggle:hover:not(.sb-optionToggle-isNotInteractable) {\n background-color: #596883; }\n\n.sb-optionToggle-desc {\n flex: 1 1 auto; }\n\n.sb-optionToggle-icon {\n flex: 0 0 auto; }\n\n.theme-dark .sb-optionToggle-isOff .icon {\n color: #a8a8a8; }\n\n.sb-optionToggle-icon .icon {\n font-size: 1.8rem; }\n\n.theme-dark .sb-optionToggle-isOff .sb-optionToggle-icon .icon {\n color: #a8a8a8; }\n"]} \ No newline at end of file +{"version":3,"sources":["webpack:///scss/styles.scss","webpack:///src/ui/_components/ErrorBoundary.scss","webpack:///src/ui/layout/app/_components/App.scss","webpack:///src/ui/sideBar/_components/Logo.scss","webpack:///src/ui/layout/app/_components/Nav.scss","webpack:///src/ui/_components/Icon.scss","webpack:///src/ui/layout/app/_components/Footer.scss","webpack:///src/fileManager/_components/FileManager.scss","webpack:///src/editor/songEditor/_components/EditorLayout.scss","webpack:///src/songRenderers/editorPreview/_components/EditorPreview.scss","webpack:///src/editor/songEditor/prosemirror/ProsemirrorEditorView.scss","webpack:///src/songRenderers/exportPreview/_components/ExportPreview.scss","webpack:///src/songRenderers/playRenderer/_components/PlayRenderer.scss","webpack:///src/songRenderers/printPreview/_components/PrintPreview.scss","webpack:///src/songRenderers/printPreview/helpers/getDimensionsFromDom.scss","webpack:///src/optionsPanels/rendering/_components/Rendering.scss","webpack:///src/ui/sideBar/options/_components/OptionsGroup.scss","webpack:///src/ui/sideBar/options/_components/Select.scss","webpack:///src/ui/sideBar/options/_components/Slider.scss","webpack:///src/ui/sideBar/options/_components/Toggle.scss"],"names":[],"mappings":"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","file":"main.dbae970e9fc0ba07e9ca.css","sourcesContent":["html {\n /* switching to border-box model for all elements */\n box-sizing: border-box;\n /* set base font-size to equiv \"10px\", which is adapted to rem unit */\n font-size: 62.5%;\n /* IE9-IE11 math fixing. See http://bit.ly/1g4X0bX */\n font-size: calc(1em * 0.625); }\n\nbody {\n font-size: 1.6rem;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n line-height: 1.5; }\n\n.ucc-line {\n margin: 0;\n font-family: \"PT Mono\", consolas, courier, monospace;\n white-space: pre-wrap; }\n\n.ucc-chord-line {\n background-color: rgba(0, 0, 0, 0.05); }\n\n.ucc-chord-symbol {\n font-weight: 700; }\n\n.ucc-bar-separator {\n margin: 0 10px;\n color: #aaa; }\n .ucc-bar-separator:first-of-type {\n margin-left: 0; }\n .ucc-bar-separator:last-of-type {\n margin-right: 0; }\n",".ErrorBoundary {\n padding: 2rem; }\n","html, body, #app {\n height: 100%;\n padding: 0; }\n\n.appLayout-wrapper {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n\n.leftBar {\n flex-shrink: 0;\n width: 15%;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n .leftBar.leftBar-isCollapsed {\n width: 48px; }\n .theme-light .leftBar.leftBar-isCollapsed {\n border-right: 1px solid; }\n .theme-dark .leftBar {\n color: #f4f4f4;\n background-color: #303846; }\n .theme-dark .leftBar.leftBar-isCollapsed {\n border-right: 1px solid #dbdbdb; }\n .theme-dark .leftBar.leftBar-isCollapsed:hover {\n background-color: #455064; }\n @media print {\n .leftBar {\n display: none; } }\n\n.rightBar {\n flex-shrink: 0;\n width: 15%;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n .rightBar.rightBar-isCollapsed {\n width: 48px; }\n .theme-light .rightBar.rightBar-isCollapsed {\n border-left: 1px solid; }\n .theme-dark .rightBar {\n color: #f4f4f4;\n background-color: #303846; }\n .theme-dark .rightBar.rightBar-isCollapsed {\n border-left: 1px solid #dbdbdb; }\n .theme-dark .rightBar.rightBar-isCollapsed:hover {\n background-color: #455064; }\n @media print {\n .rightBar {\n display: none; } }\n\n.leftBar-content {\n overflow-y: scroll;\n flex: 1 1 auto; }\n .leftBar-isCollapsed .leftBar-content {\n padding: 0.5rem 1rem;\n text-align: center;\n cursor: pointer; }\n\n.rightBar-content {\n overflow-y: scroll;\n flex: 1 1 auto; }\n .rightBar-isCollapsed .rightBar-content {\n padding: 0.5rem 1rem;\n text-align: center;\n cursor: pointer; }\n\n.leftBar-collapser {\n flex: 0 0 12px;\n display: flex;\n cursor: pointer; }\n .leftBar-isCollapsed .leftBar-collapser {\n display: none; }\n .theme-light .leftBar-collapser {\n border-right: 1px solid; }\n .theme-dark .leftBar-collapser {\n background-color: #405a73;\n border-right: 1px solid #a8a8a8; }\n .theme-dark .leftBar-collapser:hover {\n background-color: #537393; }\n .theme-dark .leftBar-collapser {\n color: #f4f4f4; }\n\n.leftBar-collapserIcon {\n flex: 1 1 auto;\n align-self: center;\n font-weight: 700; }\n .leftBar-collapserIcon .icon {\n font-size: 1.2rem; }\n\n.rightBar-collapser {\n flex: 0 0 12px;\n display: flex;\n cursor: pointer; }\n .rightBar-isCollapsed .rightBar-collapser {\n display: none; }\n .theme-light .rightBar-collapser {\n border-left: 1px solid; }\n .theme-dark .rightBar-collapser {\n background-color: #405a73;\n border-left: 1px solid #a8a8a8; }\n .theme-dark .rightBar-collapser:hover {\n background-color: #537393; }\n .theme-dark .rightBar-collapser {\n color: #f4f4f4; }\n\n.rightBar-collapserIcon {\n flex: 1 1 auto;\n align-self: center;\n font-weight: 700; }\n .rightBar-collapserIcon .icon {\n font-size: 1.2rem; }\n\n.appLayout-main {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap; }\n\n.appLayout-header {\n flex-shrink: 0; }\n .theme-light .appLayout-header {\n border-bottom: 2px solid; }\n .theme-dark .appLayout-header {\n color: rgba(244, 244, 244, 0.7);\n background-color: #293132;\n border-bottom: 2px solid black; }\n @media print {\n .appLayout-header {\n display: none; } }\n\n.appLayout-content {\n overflow-y: auto;\n flex-grow: 1; }\n .theme-dark .appLayout-content {\n background-color: #2e4052; }\n @media print {\n .appLayout-content {\n overflow-y: visible; } }\n\n.appLayout-footer {\n flex-shrink: 0; }\n .theme-light .appLayout-footer {\n border-top: 1px solid; }\n .theme-dark .appLayout-footer {\n color: #f4f4f4;\n background-color: #293132;\n border-top: 1px solid black; }\n @media print {\n .appLayout-footer {\n display: none; } }\n",".logo-isExpanded {\n margin: 0.5rem 1rem;\n padding-bottom: 0.5rem;\n font-size: 1.6rem;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 700; }\n .theme-light .logo-isExpanded {\n border-bottom: 1px dotted; }\n .theme-dark .logo-isExpanded {\n color: #f4f4f4;\n border-bottom: 1px dotted rgba(244, 244, 244, 0.7); }\n .leftBar-isCollapsed .logo-isExpanded {\n display: none; }\n\n.logo-icon {\n font-size: 1.4rem;\n margin-right: 0.5rem; }\n\n.logo-isCollapsed {\n padding: 1rem 0; }\n .leftBar:not(.leftBar-isCollapsed) .logo-isCollapsed {\n display: none; }\n",".mainNav-entries {\n margin: 0;\n padding: 0;\n display: flex;\n justify-content: center;\n list-style-type: none;\n font-size: 1.6rem;\n font-family: \"Open Sans\", sans-serif;\n font-weight: 400;\n vertical-align: middle; }\n\n.mainNavEntry {\n display: inline-block;\n padding: 0 2rem;\n cursor: pointer; }\n .theme-dark .mainNavEntry:hover {\n color: #f4f4f4;\n background-color: #404c4e; }\n .theme-dark .mainNavEntry.mainNavEntry-isActive {\n color: #f4f4f4;\n background-color: black; }\n\n.mainNavEntry-icon .icon {\n margin-right: 0.5rem;\n font-size: 1.4rem; }\n",".icon {\n vertical-align: middle; }\n",".appFooter {\n padding: 0.25rem 1rem;\n font-size: 1rem; }\n",".fileManager-isExpanded {\n font-size: 1.2rem; }\n .leftBar-isCollapsed .fileManager-isExpanded {\n display: none; }\n\n.fileManager-isCollapsed {\n padding: 1rem 0; }\n .leftBar:not(.leftBar-isCollapsed) .fileManager-isCollapsed {\n display: none; }\n\n.fileManager-actionsList {\n padding: 1rem;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap; }\n\n.fileManagerAction {\n flex: 0 1 auto;\n padding: 0.5rem;\n margin-right: 0.5rem;\n white-space: nowrap; }\n .fileManagerAction:hover {\n cursor: pointer; }\n .theme-dark .fileManagerAction:hover {\n background-color: #596883; }\n\n.fileManagerAction-icon .icon {\n font-size: 1.4rem; }\n\n.fileManager-entriesList {\n padding-left: 0;\n list-style: none; }\n\n.fileManagerEntry {\n cursor: pointer; }\n .theme-dark .fileManagerEntry:hover {\n background-color: #596883; }\n .theme-dark .fileManagerEntry.fileManagerEntry-isSelected {\n background-color: #fabf2b; }\n\n.fileManagerEntry-input {\n width: 100%;\n padding: 0.25rem 1rem;\n background-color: transparent;\n border: none;\n cursor: pointer;\n outline: none; }\n .theme-dark .fileManagerEntry-input {\n color: #f4f4f4; }\n .theme-dark .fileManagerEntry-isSelected .fileManagerEntry-input {\n color: #303846; }\n .fileManagerEntry-isRenamed .fileManagerEntry-input {\n cursor: text; }\n .theme-dark .fileManagerEntry-isRenamed .fileManagerEntry-input {\n background-color: #f4f4f4;\n color: #303846; }\n",".songEditor {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n\n.songEditor-source {\n flex: 0 1 50%;\n display: flex;\n overflow-y: scroll; }\n\n.songEditor-preview {\n flex: 0 1 50%;\n padding: 1rem;\n overflow-y: scroll; }\n",".theme-dark .ep-SongRenderer {\n color: #dbdbdb; }\n",".prosemirrorWrapper {\n flex: 1 1 auto;\n overflow-y: scroll;\n padding: 1rem; }\n .theme-dark .prosemirrorWrapper {\n background-color: #1c2731; }\n\n.ProseMirror {\n overflow-y: scroll;\n outline: none;\n font-family: \"PT Mono\", consolas, courier, monospace;\n font-size: 1.4rem; }\n .theme-dark .ProseMirror {\n color: #dbdbdb; }\n .ProseMirror p {\n margin: 0; }\n",".exportPreview {\n padding: 1rem; }\n .theme-dark .exportPreview {\n background-color: #f4f4f4; }\n\n.theme-dark .exp-SongRenderer {\n color: #303846; }\n",".playRenderer {\n padding: 1rem; }\n\n.theme-dark .pr-SongRenderer {\n color: #dbdbdb; }\n",".printPreview {\n overflow-y: scroll; }\n .theme-dark .printPreview {\n background-color: #2e4052; }\n @media print {\n .printPreview {\n background-color: white !important;\n overflow-y: auto; } }\n\n.printPreview-page {\n position: relative;\n margin: 2rem auto;\n background-color: white; }\n @media print {\n .printPreview-page {\n margin: 0;\n page-break-after: auto; } }\n\n.printPreview-pageContentWrapper {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0; }\n\n.printPreview-pageContent {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n height: 100%; }\n\n.printPreview-pageHeader {\n font-size: 1.8rem;\n font-weight: 700;\n margin-bottom: 1rem; }\n\n.printPreview-pageColumnWrapper {\n flex: 1;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap; }\n\n.printPreview-pageColumn {\n flex: 1 1 0;\n margin: 0 0.7rem; }\n .printPreview-pageColumn:first-of-type {\n margin-left: 0; }\n .printPreview-pageColumn:last-of-type {\n margin-right: 0; }\n\n.printPreview-page--a4 {\n width: 210mm;\n height: 297mm; }\n\n.printPreview-page--booxmax2pro {\n width: 698px;\n height: 930px; }\n\n.printPreview-pageContentWrapper--padding1 {\n padding: 3mm; }\n\n.printPreview-pageContentWrapper--padding2 {\n padding: 6mm; }\n\n.printPreview-pageContentWrapper--padding3 {\n padding: 9mm; }\n\n.printPreview-pageContentWrapper--padding4 {\n padding: 12mm; }\n\n.printPreview-pageContentWrapper--padding5 {\n padding: 15mm; }\n\n.printPreview-page--font-5 {\n font-size: 7px; }\n\n.printPreview-page--font-4 {\n font-size: 8px; }\n\n.printPreview-page--font-3 {\n font-size: 9px; }\n\n.printPreview-page--font-2 {\n font-size: 10px; }\n\n.printPreview-page--font-1 {\n font-size: 11px; }\n\n.printPreview-page--font0 {\n font-size: 12px; }\n\n.printPreview-page--font1 {\n font-size: 13px; }\n\n.printPreview-page--font2 {\n font-size: 14px; }\n\n.printPreview-page--font3 {\n font-size: 15px; }\n\n.printPreview-page--font4 {\n font-size: 16px; }\n\n.printPreview-page--font5 {\n font-size: 17px; }\n",".measuring-node {\n visibility: hidden;\n position: absolute;\n z-index: -1; }\n",".rightBar-isCollapsed .renderingOptionsPanel-isExpanded {\n display: none; }\n\n.renderingOptionsPanel-isCollapsed {\n padding: 1rem 0; }\n .rightBar:not(.rightBar-isCollapsed) .renderingOptionsPanel-isCollapsed {\n display: none; }\n",".sb-optionsGroup {\n padding-top: 2rem; }\n\n.sb-optionsGroup-title {\n padding: 0.5rem 1rem 0.5rem 0.5rem;\n display: flex;\n font-size: 1.4rem;\n font-weight: 700; }\n .theme-light .sb-optionsGroup-title {\n border-bottom: 2px solid; }\n .theme-dark .sb-optionsGroup-title {\n border-bottom: 2px solid rgba(244, 244, 244, 0.7); }\n .theme-dark .sb-optionsGroup-isNotInteractable .sb-optionsGroup-title {\n color: #71819e; }\n .sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover {\n cursor: pointer; }\n .theme-dark .sb-optionsGroup:not(.sb-optionsGroup-isNotInteractable) .sb-optionsGroup-title:hover {\n background-color: #596883; }\n\n.sb-optionsGroup-label {\n flex: 1 1 auto; }\n\n.sb-optionsGroup-toggle {\n flex: 0 0 auto; }\n\n.sb-optionsGroup-iconTitle .icon {\n font-size: 1.6rem; }\n\n.sb-optionsGroup-iconToggle .icon {\n font-size: 1.8rem; }\n",".sb-optionSelect {\n font-size: 1.2rem;\n padding: 0.5rem 1.5rem 0.5rem 1rem; }\n .theme-light .sb-optionSelect {\n border-bottom: 1px dotted; }\n .theme-dark .sb-optionSelect {\n border-bottom: 1px dotted #71819e; }\n .theme-dark .sb-optionsGroup .sb-optionSelect {\n background-color: #1b2028; }\n .theme-dark .sb-optionSelect.sb-optionSelect-isNotInteractable {\n color: #71819e; }\n .sb-optionSelect:hover:not(.sb-optionSelect-isNotInteractable) {\n cursor: pointer; }\n .theme-dark .sb-optionSelect:hover:not(.sb-optionSelect-isNotInteractable) {\n background-color: #596883; }\n\n.sb-optionSelect-title {\n display: flex; }\n\n.sb-optionSelect-desc {\n flex: 1 1 auto; }\n\n.sb-optionSelect-toggle {\n flex: 0 0 auto; }\n\n.sb-optionSelect-icon .icon {\n font-size: 1.8rem; }\n\n.sb-optionSelectChoice {\n padding-top: 0.5rem;\n display: flex; }\n .sb-optionSelectChoice:hover {\n text-decoration: underline;\n cursor: pointer; }\n\n.sb-optionSelectChoice-isSelected {\n font-weight: 700; }\n\n.sb-optionSelectChoice-check {\n flex: 0 0 20px; }\n\n.sb-optionSelectChoice-checkIcon .icon {\n font-size: 1.2rem; }\n\n.sb-optionSelectChoice-label {\n flex: 1 1 auto; }\n",".sb-optionSlider {\n display: flex;\n flex-wrap: wrap;\n font-size: 1.2rem;\n padding: 0.5rem 1.5rem 0.5rem 1rem; }\n .theme-light .sb-optionSlider {\n border-bottom: 1px dotted; }\n .theme-dark .sb-optionSlider {\n border-bottom: 1px dotted #71819e; }\n .theme-dark .sb-optionsGroup .sb-optionSlider {\n background-color: #1b2028; }\n .theme-dark .sb-optionSlider.sb-optionSlider-isNotInteractable {\n color: #71819e; }\n .sb-optionSlider:hover:not(.sb-optionSlider-isNotInteractable) {\n cursor: pointer; }\n .theme-dark .sb-optionSlider:hover:not(.sb-optionSlider-isNotInteractable) {\n background-color: #596883; }\n\n.sb-optionSlider-desc {\n flex: 1 1 auto; }\n\n.sb-optionSlider-value {\n flex: 0 0 auto;\n vertical-align: middle;\n font-size: 1.2rem; }\n\n.sb-optionSlider-range {\n flex: 1 1 100%; }\n .theme-light .sb-optionSlider-range input[type=\"range\"] {\n -webkit-appearance: none;\n width: 100%;\n background: transparent; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:focus {\n outline: none; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-webkit-slider-runnable-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n border: 0 solid black;\n border-radius: 0;\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-webkit-slider-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #bb8704;\n -webkit-appearance: none;\n margin-top: -0 * 210px/-3px; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:focus::-webkit-slider-runnable-track {\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-moz-range-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n border: 0 solid black;\n border-radius: 0;\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-moz-range-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #bb8704; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-ms-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n color: transparent;\n border-width: 15px 0;\n border-color: transparent;\n background: transparent; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-ms-fill-lower {\n border: 0 solid black;\n border-radius: 0;\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-ms-fill-upper {\n border: 0 solid black;\n border-radius: 0;\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]::-ms-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #bb8704; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:focus::-ms-fill-lower {\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:focus::-ms-fill-upper {\n background: #feecc0; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:disabled::-moz-range-track, .theme-light .sb-optionSlider-range input[type=\"range\"]:disabled::-moz-range-thumb {\n cursor: default; }\n .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 {\n cursor: default; }\n .theme-light .sb-optionSlider-range input[type=\"range\"]:disabled::-ms-track, .theme-light .sb-optionSlider-range input[type=\"range\"]:disabled::-ms-thumb {\n cursor: default; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"] {\n -webkit-appearance: none;\n width: 100%;\n background: transparent; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:focus {\n outline: none; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-webkit-slider-runnable-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n border: 0 solid black;\n border-radius: 0;\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-webkit-slider-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #070809;\n -webkit-appearance: none;\n margin-top: -0 * 210px/-3px; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:focus::-webkit-slider-runnable-track {\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-moz-range-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n border: 0 solid black;\n border-radius: 0;\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-moz-range-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #070809; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-ms-track {\n width: 100%;\n height: 10px;\n cursor: pointer;\n animation: 0.2s;\n color: transparent;\n border-width: 15px 0;\n border-color: transparent;\n background: transparent; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-ms-fill-lower {\n border: 0 solid black;\n border-radius: 0;\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-ms-fill-upper {\n border: 0 solid black;\n border-radius: 0;\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]::-ms-thumb {\n width: 15px;\n height: 10px;\n cursor: pointer;\n border: 0 solid black;\n border-radius: 0;\n background: #070809; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:focus::-ms-fill-lower {\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:focus::-ms-fill-upper {\n background: #71819e; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:disabled::-moz-range-track, .theme-dark .sb-optionSlider-range input[type=\"range\"]:disabled::-moz-range-thumb {\n cursor: default; }\n .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 {\n cursor: default; }\n .theme-dark .sb-optionSlider-range input[type=\"range\"]:disabled::-ms-track, .theme-dark .sb-optionSlider-range input[type=\"range\"]:disabled::-ms-thumb {\n cursor: default; }\n .sb-optionSlider-range input[type=\"range\"]:disabled {\n opacity: .35;\n cursor: default; }\n",".sb-optionToggle {\n display: flex;\n font-size: 1.2rem;\n padding: 0.5rem 1.5rem 0.5rem 1rem; }\n .theme-light .sb-optionToggle {\n border-bottom: 1px dotted; }\n .theme-dark .sb-optionToggle {\n border-bottom: 1px dotted #71819e; }\n .theme-dark .sb-optionsGroup .sb-optionToggle {\n background-color: #1b2028; }\n .theme-dark .sb-optionToggle.sb-optionToggle-isNotInteractable {\n color: #71819e; }\n .sb-optionToggle:hover:not(.sb-optionToggle-isNotInteractable) {\n cursor: pointer; }\n .theme-dark .sb-optionToggle:hover:not(.sb-optionToggle-isNotInteractable) {\n background-color: #596883; }\n\n.sb-optionToggle-desc {\n flex: 1 1 auto; }\n\n.sb-optionToggle-icon {\n flex: 0 0 auto; }\n\n.theme-dark .sb-optionToggle-isOff .icon {\n color: #a8a8a8; }\n\n.sb-optionToggle-icon .icon {\n font-size: 1.8rem; }\n\n.theme-dark .sb-optionToggle-isOff .sb-optionToggle-icon .icon {\n color: #a8a8a8; }\n"]} \ No newline at end of file diff --git a/docs/css/vendors~main.5193b2580c35e5309aae.css b/docs/css/vendors~main.dbae970e9fc0ba07e9ca.css similarity index 97% rename from docs/css/vendors~main.5193b2580c35e5309aae.css rename to docs/css/vendors~main.dbae970e9fc0ba07e9ca.css index d4cbfe20..60ca2506 100644 --- a/docs/css/vendors~main.5193b2580c35e5309aae.css +++ b/docs/css/vendors~main.dbae970e9fc0ba07e9ca.css @@ -1,2 +1,2 @@ /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}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}.ProseMirror{position:relative;word-wrap:break-word;-webkit-font-variant-ligatures:none;font-variant-ligatures:none}.ProseMirror,.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{content:"";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none} -/*# sourceMappingURL=vendors~main.5193b2580c35e5309aae.css.map */ \ No newline at end of file +/*# sourceMappingURL=vendors~main.dbae970e9fc0ba07e9ca.css.map */ \ No newline at end of file diff --git a/docs/css/vendors~main.5193b2580c35e5309aae.css.map b/docs/css/vendors~main.dbae970e9fc0ba07e9ca.css.map similarity index 99% rename from docs/css/vendors~main.5193b2580c35e5309aae.css.map rename to docs/css/vendors~main.dbae970e9fc0ba07e9ca.css.map index 4bbc9d20..41c12a6a 100644 --- a/docs/css/vendors~main.5193b2580c35e5309aae.css.map +++ b/docs/css/vendors~main.dbae970e9fc0ba07e9ca.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///node_modules/normalize.css/normalize.css","webpack:///node_modules/prosemirror-view/style/prosemirror.css"],"names":[],"mappings":"AAAA,2EAAA,CAUA,KACA,gBAAA,CACA,6BACA,CASA,KACA,QACA,CAMA,KACA,aACA,CAOA,GACA,aAAA,CACA,cACA,CAUA,GACA,sBAAA,CACA,QAAA,CACA,gBACA,CAOA,IACA,+BAAA,CACA,aACA,CASA,EACA,4BACA,CAOA,YACA,kBAAA,CACA,yBAAA,CACA,gCACA,CAMA,SAEA,kBACA,CAOA,cAGA,+BAAA,CACA,aACA,CAMA,MACA,aACA,CAOA,QAEA,aAAA,CACA,aAAA,CACA,iBAAA,CACA,uBACA,CAEA,IACA,aACA,CAEA,IACA,SACA,CASA,IACA,iBACA,CAUA,sCAKA,mBAAA,CACA,cAAA,CACA,gBAAA,CACA,QACA,CAOA,aAEA,gBACA,CAOA,cAEA,mBACA,CAMA,gDAIA,yBACA,CAMA,wHAIA,iBAAA,CACA,SACA,CAMA,4GAIA,6BACA,CAMA,SACA,0BACA,CASA,OACA,qBAAA,CACA,aAAA,CACA,aAAA,CACA,cAAA,CACA,SAAA,CACA,kBACA,CAMA,SACA,uBACA,CAMA,SACA,aACA,CAOA,6BAEA,qBAAA,CACA,SACA,CAMA,kFAEA,WACA,CAOA,cACA,4BAAA,CACA,mBACA,CAMA,yCACA,uBACA,CAOA,6BACA,yBAAA,CACA,YACA,CASA,QACA,aACA,CAMA,QACA,iBACA,CAiBA,kBACA,YACA,CC5VA,aACA,iBAAA,CAGA,oBAAA,CAEA,mCAAA,CACA,2BANqB,CAQrB,8BAJA,oBAKwB,CAExB,gBACA,iBAAqB,CAErB,uCACA,sBAA0B,CAE1B,4CACA,sBAA0B,CAE1B,2BACA,uBAA2B,CAE3B,0BACA,sBAA0B,CAG1B,4BACA,YAAgB,CAEhB,kCACA,UAAA,CACA,iBAAA,CACA,UAAA,CACA,UAAA,CACA,QAAA,CACA,WAAA,CACA,qBAAA,CACA,mBAAuB","file":"vendors~main.5193b2580c35e5309aae.css","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",".ProseMirror {\n position: relative; }\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none; }\n\n.ProseMirror pre {\n white-space: pre-wrap; }\n\n.ProseMirror li {\n position: relative; }\n\n.ProseMirror-hideselection *::selection {\n background: transparent; }\n\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent; }\n\n.ProseMirror-hideselection {\n caret-color: transparent; }\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf; }\n\n/* Make sure li selections wrap around markers */\nli.ProseMirror-selectednode {\n outline: none; }\n\nli.ProseMirror-selectednode:after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none; }\n"]} \ No newline at end of file +{"version":3,"sources":["webpack:///node_modules/normalize.css/normalize.css","webpack:///node_modules/prosemirror-view/style/prosemirror.css"],"names":[],"mappings":"AAAA,2EAAA,CAUA,KACA,gBAAA,CACA,6BACA,CASA,KACA,QACA,CAMA,KACA,aACA,CAOA,GACA,aAAA,CACA,cACA,CAUA,GACA,sBAAA,CACA,QAAA,CACA,gBACA,CAOA,IACA,+BAAA,CACA,aACA,CASA,EACA,4BACA,CAOA,YACA,kBAAA,CACA,yBAAA,CACA,gCACA,CAMA,SAEA,kBACA,CAOA,cAGA,+BAAA,CACA,aACA,CAMA,MACA,aACA,CAOA,QAEA,aAAA,CACA,aAAA,CACA,iBAAA,CACA,uBACA,CAEA,IACA,aACA,CAEA,IACA,SACA,CASA,IACA,iBACA,CAUA,sCAKA,mBAAA,CACA,cAAA,CACA,gBAAA,CACA,QACA,CAOA,aAEA,gBACA,CAOA,cAEA,mBACA,CAMA,gDAIA,yBACA,CAMA,wHAIA,iBAAA,CACA,SACA,CAMA,4GAIA,6BACA,CAMA,SACA,0BACA,CASA,OACA,qBAAA,CACA,aAAA,CACA,aAAA,CACA,cAAA,CACA,SAAA,CACA,kBACA,CAMA,SACA,uBACA,CAMA,SACA,aACA,CAOA,6BAEA,qBAAA,CACA,SACA,CAMA,kFAEA,WACA,CAOA,cACA,4BAAA,CACA,mBACA,CAMA,yCACA,uBACA,CAOA,6BACA,yBAAA,CACA,YACA,CASA,QACA,aACA,CAMA,QACA,iBACA,CAiBA,kBACA,YACA,CC5VA,aACA,iBAAA,CAGA,oBAAA,CAEA,mCAAA,CACA,2BANqB,CAQrB,8BAJA,oBAKwB,CAExB,gBACA,iBAAqB,CAErB,uCACA,sBAA0B,CAE1B,4CACA,sBAA0B,CAE1B,2BACA,uBAA2B,CAE3B,0BACA,sBAA0B,CAG1B,4BACA,YAAgB,CAEhB,kCACA,UAAA,CACA,iBAAA,CACA,UAAA,CACA,UAAA,CACA,QAAA,CACA,WAAA,CACA,qBAAA,CACA,mBAAuB","file":"vendors~main.dbae970e9fc0ba07e9ca.css","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",".ProseMirror {\n position: relative; }\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none; }\n\n.ProseMirror pre {\n white-space: pre-wrap; }\n\n.ProseMirror li {\n position: relative; }\n\n.ProseMirror-hideselection *::selection {\n background: transparent; }\n\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent; }\n\n.ProseMirror-hideselection {\n caret-color: transparent; }\n\n.ProseMirror-selectednode {\n outline: 2px solid #8cf; }\n\n/* Make sure li selections wrap around markers */\nli.ProseMirror-selectednode {\n outline: none; }\n\nli.ProseMirror-selectednode:after {\n content: \"\";\n position: absolute;\n left: -32px;\n right: -2px;\n top: -2px;\n bottom: -2px;\n border: 2px solid #8cf;\n pointer-events: none; }\n"]} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 36b6c73b..21a4cdf1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -8,8 +8,8 @@ - +
- + diff --git a/docs/main.5193b2580c35e5309aae.js b/docs/main.5193b2580c35e5309aae.js deleted file mode 100644 index ed52465b..00000000 --- a/docs/main.5193b2580c35e5309aae.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){function t(t){for(var r,i,l=t[0],c=t[1],u=t[2],p=0,d=[];p= 4.0.0"],main:function(e,t,n,r,a){return'

 

'},useData:!0})},"2ywC":function(e,t,n){},"3Z8G":function(e,t,n){},"6/UV":function(e,t,n){},"6EPN":function(e,t,n){},"6joI":function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){var o;return''+(null!=(o=e.lambda(null!=t?t.barContent:t,t))?o:"")+""},useData:!0})},"8PSE":function(e,t,n){},"9hQf":function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){var o;return null!=(o=e.lambda(null!=t?t.song:t,t))?o:""},useData:!0})},BC9S:function(e,t,n){},Ewt9:function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){return'|'},useData:!0})},IA7u:function(e,t,n){},JeH2:function(e,t,n){},PuEf:function(e,t,n){},Sdr1:function(e,t,n){},UUiC:function(e,t,n){},Vtdi:function(e,t,n){"use strict";n.r(t);n("u0UJ");var r=n("P4Tr"),a=n.n(r),o=n("ANjH"),i=function(){try{var e=localStorage.getItem("state");if(!e)return;return JSON.parse(e)}catch(e){return}},l=function(e){try{var t=JSON.stringify(e);localStorage.setItem("state",t)}catch(e){}},c=(n("pNMO"),n("ma9I"),n("TeQF"),n("QWBl"),n("eoL8"),n("5DmW"),n("tkto"),n("FZtP"),"db/files/Create"),u="db/files/Update",s="db/files/Delete";function p(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:f,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case c:return function(e,t){var n=t.payload,r=n.id,a=n.title,o=n.content,i=p({},e.allFiles);return i[r]={id:r,title:a,content:o},p({},e,{allFiles:i})}(e,t);case u:return function(e,t){var n=t.payload,r=n.id,a=n.title,o=n.content;if(!a&&!o||!e.allFiles[r])return e;var i=p({},e.allFiles);return i[r]=p({},i[r]),a&&(i[r].title=a),o&&(i[r].content=o),p({},e,{allFiles:i})}(e,t);case s:return function(e,t){var n=t.payload.id;if(!n||!e.allFiles[n])return e;var r=p({},e.allFiles);return delete r[n],p({},e,{allFiles:r})}(e,t)}return e},options:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case"db/options/setOptionValue":var n=t.payload,r=n.context,a=n.key,o=n.value;if(!e[r]||!e[r][a])return e;var i=m({},e[r]);i[a]=m({},i[a],{value:o});var l=m({},e);return l[r]=i,l}return e}}),v="fileManager/select",b="fileManager/enableRename";function E(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:x,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case S:return N({},e,{isLeftBarCollapsed:!e.isLeftBarCollapsed});case w:return N({},e,{isRightBarCollapsed:!e.isRightBarCollapsed});case R:return N({},e,{editorMode:t.payload.mode})}return e}}),q=Object(o.b)({layout:k}),T=Object(o.b)({db:y,fileManager:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:O,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case c:var n=t.payload.id;return E({},e,{selected:n,renamed:n});case u:return E({},e,{renamed:""});case s:return E({},e,{selected:"",renamed:""});case v:var r=t.payload.id;return E({},e,{selected:r,renamed:r===e.renamed?r:""});case b:return E({},e,{renamed:t.payload.id})}return e},ui:q}),B={db:{options:{rendering:{documentSize:{value:"a4",default:"a4",resetOnSongChange:!1},documentMargins:{value:3,default:3,resetOnSongChange:!1},columnsCount:{value:1,default:1,resetOnSongChange:!1},columnBreakOnParagraph:{value:!0,default:!0,resetOnSongChange:!1},style:{value:"ucc",default:"ucc",resetOnSongChange:!1},alignBars:{value:!0,default:!0,resetOnSongChange:!1},showChords:{value:!0,default:!0,resetOnSongChange:!1},instrument:{value:"guitar",default:"guitar",resetOnSongChange:!1},showStrummingPattern:{value:!0,default:!0,resetOnSongChange:!1},transposeValue:{value:0,default:0,resetOnSongChange:!0},simplifyChords:{value:!1,default:!1,resetOnSongChange:!0},capoPosition:{value:0,default:0,resetOnSongChange:!0},harmonizeAccidentals:{value:!0,default:!0,resetOnSongChange:!0},preferredAccidentals:{value:"auto",default:"auto",resetOnSongChange:!0},fontSize:{value:0,default:0,resetOnSongChange:!1},printFontSize:{value:0,default:0,resetOnSongChange:!1},fontStyle:{value:"roboto",default:"roboto",resetOnSongChange:!1},chordsColor:{value:"black",default:"black",resetOnSongChange:!1},highlightChords:{value:!0,default:!0,resetOnSongChange:!1}}}}},F=[];var M=n("d/CZ"),z=n("q1tI"),_=n.n(z),L=n("i8i4"),A=n.n(L),I=n("/MKj"),D=(n("4Brf"),n("0oug"),n("4mDm"),n("DQNa"),n("uL8W"),n("NBAS"),n("ExoC"),n("07d7"),n("JfAA"),n("PKPk"),n("3bBZ"),n("WoyN"),n("17x9")),W=n.n(D);function V(e){return(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})(e)}function G(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.title,r=t.content;if(!e)throw new TypeError("Cannot update a file without an id");return Z(u,{id:e,title:n,content:r})},be=n("3WF5"),Ee=n.n(be),Ce=n("Y+p1"),Oe=n.n(Ce),Se=n("xweI"),we=n.n(Se),Re=n("G4qV"),Ne=Object(Re.a)(Re.b,Oe.a)(function(e){return Ee()(e.db.files.allFiles,function(e){return{title:e.title,id:e.id}})},function(e){return we()(e,function(e){return e.title.toLowerCase()})}),Pe=function(e,t){return e.db.files.allFiles[t]};n("kGR0");function xe(e){var t=e.icon,n=e.text,r=e.action;return _.a.createElement("span",{className:"fileManagerAction",onClick:r},_.a.createElement("span",{className:"fileManagerAction-icon"},_.a.createElement(te,{iconName:t})," ",n))}xe.propTypes={icon:W.a.string.isRequired,text:W.a.string.isRequired,action:W.a.func.isRequired};var je=_.a.memo(xe);function ke(){return(ke=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"").replace(/\t+/g," ").replace(/ +/g," ").trim().split(" ").map(function(e){return e.replace(/\.*$/g,"")}).every(function(e){return function(e){return Ye()(e)&&et.isChord(e)}(e)})}n("Ecbk");var nt=["2/2","3/2","2/4","3/4","4/4","5/4","3/8","6/8","9/8","12/8"];function rt(e){return nt.includes(e)}n("0T4K"),n("Dzwt");function at(e){if(!rt(e))throw new TypeError("Expected time signature string, received: "+e);var t=e.split("/"),n=Number.parseInt(t[0],10),r=Number.parseInt(t[1],10),a=n;return 2===r?a=2*n:8===r&&(a=n/3),{string:e,count:n,value:r,beatCount:a}}n("ZFc4"),n("rmJO"),n("5ktT");var ot=n("wfLL"),it=n.n(ot),lt=n("XhyR"),ct=n.n(lt),ut=new $e.Chords;n("IHQ4"),n("cvC6"),n("jDvd"),n("wt4b"),n("GZld"),n("uae+"),n("okNV"),n("7kcN"),n("6tnn"),n("SFce"),n("nXTL"),n("ruy4"),n("rt9K"),n("8iCz"),n("jpAq"),n("aLnL"),n("O0Hx");var st=n("okNX"),pt=n.n(st);function dt(e){return(dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ft(e,t){return!t||"object"!==dt(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function mt(e){var t="function"==typeof Map?new Map:void 0;return(mt=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return gt(e,arguments,yt(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),ht(r,e)})(e)}function gt(e,t,n){return(gt=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&ht(a,n.prototype),a}).apply(null,arguments)}function ht(e,t){return(ht=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function yt(e){return(yt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var vt=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.string,a=n.duration,o=n.currentBeatCount,i=n.beatCount;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),!r||!Ye()(r))throw new TypeError("IncorrectBeatCountException cannot be created without chord string, received: "+r);if(!a||!pt()(a))throw new TypeError("IncorrectBeatCountException cannot be created without chord duration, received: "+a);if(!o||!pt()(o))throw new TypeError("IncorrectBeatCountException cannot be created without currentBeatCount, received: "+o);if(!i||!pt()(i))throw new TypeError("IncorrectBeatCountException cannot be created without beatCount, received: "+i);return(e=ft(this,yt(t).call(this))).name="IncorrectBeatCountException",e.string=r,e.duration=a,e.currentBeatCount=o,e.beatCount=i,e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ht(e,t)}(t,mt(Error)),t}();function bt(e){return(bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Et(e,t){return!t||"object"!==bt(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function Ct(e){var t="function"==typeof Map?new Map:void 0;return(Ct=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return Ot(e,arguments,wt(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),St(r,e)})(e)}function Ot(e,t,n){return(Ot=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&St(a,n.prototype),a}).apply(null,arguments)}function St(e,t){return(St=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function wt(e){return(wt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var Rt=function(e){function t(){var e,n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).string;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),!n||!Ye()(n))throw new TypeError("InvalidChordRepetitionException cannot be created without chord string, received: "+n);return(e=Et(this,wt(t).call(this))).name="InvalidChordRepetitionException",e.string=n,e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&St(e,t)}(t,Ct(Error)),t}();function Nt(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).timeSignature,n=void 0===t?at("4/4"):t,r=n.beatCount,a=e.replace(/ +/g," ").trim().split(" "),o=[],i={allChords:[]},l={},c={},u=0,s=0,p={};if(a.forEach(function(e){if(c=function(e){return ut.parse(e)}(e.replace(/\./g,"")),(l={string:e,duration:(e.match(/\./g)||[]).length||r,model:c}).beat=u+1,u+=l.duration,i.allChords.length>0&&(p=i.allChords[i.allChords.length-1],it()(p.model,l.model)))throw new Rt({string:l.string});if(i.allChords.push(l),s++,u===r)i.timeSignature=n,o.push(ct()(i)),i={allChords:[]},u=0,p={};else if(u>r)throw new vt({message:"",string:l.string,duration:l.duration,currentBeatCount:u,beatCount:r})}),u>0&&u2&&void 0!==arguments[2]?arguments[2]:{},r=n.transposeValue,a=void 0===r?0:r,o=n.accidentalsType,i=void 0===o?"auto":o,l=n.harmonizeAccidentals,c=void 0===l||l,u=ct()(e),s="auto"===i?function(e){var t="",n=0,r=0;return e.forEach(function(e){2===(t=e.model.symbol.rootNote).length&&("b"===t[1]?n+=e.occurrences:r+=e.occurrences)}),n>r?"flat":"sharp"}(t):i;return(c||0!==a)&&(u=jt(u,function(e){e.transposedModel=function(e,t,n){var r=ct()(e),a=r.symbol.rootNote,o=r.symbol.bassNote,i=At(a);if(r.symbol.rootNote=It(i,t,n),o){var l=At(o);r.symbol.bassNote=It(l,t,n)}return r}(e.model,a,"flat"===s)})),u}var Wt=n("uVib"),Vt=n.n(Wt),Gt=(n("eWUb"),n("FxsW"),n("lb95")),Ht=n.n(Gt);var Ut=n("6joI"),Jt=n.n(Ut),Kt=" ",Xt=0,Zt=2;function Qt(e){var t=0,n=0,r=e.allChords.reduce(function(e,r){var a;return t=pt()(r.spacesWithin)?r.spacesWithin:Xt,n=pt()(r.spacesAfter)?r.spacesAfter:Zt,e+=(a=r.symbol,Ht()({chordSymbol:a})+Kt.repeat(t)+Kt.repeat(n))},"");return Jt()({barContent:r})}var Yt=n("Ewt9"),$t=n.n(Yt);var en=n("d6nv"),tn=n.n(en),nn=n("/BFp"),rn=n.n(nn);var an=n("9hQf"),on=n.n(an),ln=new $e.Chords,cn=function(e){return ln.print(e.symbol)};function un(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.alignBars,r=void 0!==n&&n,a=t.transposeValue,o=void 0===a?0:a,i=t.accidentalsType,l=void 0===i?"auto":i,c=t.harmonizeAccidentals,u=void 0===c||c,s=e.allLines,p=function(e){var t=[];return e.filter(function(e){return"chord"===e.type}).forEach(function(e){e.model.allBars.forEach(function(e,n){if(!t[n]){t[n]={};for(var r=1;r<=e.timeSignature.beatCount;r++)t[n][r]=0}e.allChords.forEach(function(e){t[n][e.beat]=Math.max(t[n][e.beat],e.symbol.length)})})}),t}(s=jt(s=Dt(s,e.allChords,{transposeValue:o,accidentalsType:l,harmonizeAccidentals:u}),function(e){e.symbol=e.transposedModel?cn(e.transposedModel):cn(e.model)})),d=s.map(function(e){if("chord"===e.type){var t=r?function(e,t){var n,r=ct()(e);return r.allBars.forEach(function(e,r){e.allChords.forEach(function(a){if(a.spacesWithin=t[r][a.beat]-a.symbol.length,a.spacesAfter=0,a.beat!==e.timeSignature.beatCount){a.spacesAfter=Bt;for(var o=a.beat+1;o".concat(e,"

")}).join(""),r=document.createElement("div"),r.innerHTML=Rn(n),r),{preserveWhitespace:"full"}),plugins:[Object(Cn.history)(),Object(bn.keymap)({"Mod-z":Cn.undo,"Mod-y":Cn.redo}),Object(bn.keymap)(En.baseKeymap)]});var t,n,r}(a);i.current=function(e,t,n){return new yn.EditorView(null,{state:e,dispatchTransaction:function(e){var r=this.state.applyTransaction(e),a=r.state,o=r.transactions;this.updateState(a),o.some(function(e){return e.docChanged})&&t(n,{content:wn(a)})}})}(e,o,r),l.current.appendChild(i.current.dom),Nn.editorView=i.current}}),_.a.createElement("div",{className:"prosemirrorWrapper",ref:l})}Nn.defaultProps={selectedFileId:"",editorContent:""},Nn.propTypes={selectedFileId:W.a.string,editorContent:W.a.string,updateFile:W.a.func.isRequired};var Pn=Nn;function xn(e){var t=e.selectedFile,n=e.updateFile;return _.a.createElement("div",{className:"songEditor"},_.a.createElement("div",{className:"songEditor-source"},_.a.createElement(Pn,{editorContent:t.content,updateFile:n,selectedFileId:t.id})),_.a.createElement("div",{className:"songEditor-preview"},_.a.createElement(gn,{selectedFile:t})))}xn.propTypes={selectedFile:W.a.object,updateFile:W.a.func.isRequired};var jn=xn;n("IA7u");function kn(e){var t=e.selectedFile;return _.a.createElement("div",{className:"exportPreview exp-SongRenderer"},_.a.createElement(fn,{content:t.content}))}kn.propTypes={selectedFile:W.a.object.isRequired};var qn=kn;n("eLJI");function Tn(e){var t=e.selectedFile;return _.a.createElement("div",{className:"playRenderer pr-SongRenderer"},_.a.createElement(fn,{content:t.content}))}Tn.propTypes={selectedFile:W.a.object.isRequired};var Bn=Tn;n("fNiH"),n("5s+n"),n("ls82");function Fn(e){var t=e.pageHeader,n=e.allColumnsLines,r=e.documentSize,a=e.documentMargins,o=e.printFontSize,i=n.map(function(e,t){var n=e.join("\n");return _.a.createElement("div",{key:t,className:"printPreview-pageColumn","data-testid":"printPreview-pageColumn",dangerouslySetInnerHTML:{__html:Ge(n)}})}),l=["printPreview-page"];l.push("printPreview-page--"+r),l.push("printPreview-page--font"+o);var c=["printPreview-pageContentWrapper"];return c.push("printPreview-pageContentWrapper--padding"+a),_.a.createElement("div",{className:l.join(" "),"data-testid":"printPreview-page"},_.a.createElement("div",{className:c.join(" "),"data-testid":"printPreview-pageContentWrapper"},_.a.createElement("div",{className:"printPreview-pageContent"},t,_.a.createElement("div",{className:"printPreview-pageColumnWrapper"},i))))}Fn.defaultProps={allColumnsLines:[]},Fn.propTypes={pageHeader:W.a.element,allColumnsLines:W.a.arrayOf(W.a.arrayOf(W.a.string)),documentSize:W.a.string.isRequired,documentMargins:W.a.number.isRequired,printFontSize:W.a.number.isRequired};var Mn=_.a.memo(Fn);function zn(e){var t=e.title;return _.a.createElement("div",{className:"printPreview-pageHeader"},t)}zn.defaultProps={allColumnsLines:[]},zn.propTypes={title:W.a.string.isRequired};var _n=_.a.memo(zn),Ln=(n("yXV3"),{emptyLine:"ucc-empty-line",chordLine:"ucc-chord-line",textLine:"ucc-text-line"});function An(e,t){var n=t.columnsCount,r=t.firstPageHeight,a=t.normalPageHeight,o=t.columnBreakOnParagraph,i=t.noEmptyLinesOnColumnStart,l=void 0===i||i,c=t.noOrphanTextLine,u=void 0===c||c,s=function(e){var t=e.firstPageHeight,n=e.normalPageHeight,r=e.columnsCount,a=[],o=0,i=0,l=s(),c=0;function u(e){e.forEach(function(e){c+e.height>l&&p(),a[o][i].push(e.content),c+=e.height})}function s(){return 0===o&&t?t:n}function p(){i===r-1?(a[++o]=[],i=0):i++,a[o][i]=[],c=0,l=s()}return a[o]=[],a[o][i]=[],{insert:function(e){u(e)},insertOnNextColumn:function(e){p(),u(e)},fitsOnCurrentColumn:function(e){return c+e<=l},fitsOnNextColumn:function(e){return e<=(0===o&&i0&&e.forEach(function(t,n){(function(e,t,n,r){return!(In(t)&&!e.fitsOnCurrentColumn(t.height)&&0===n.length&&!0===r)})(s,t,p,l)&&(p.push(t),d+=t.height),p.length>0&&function(e,t,n){var r=n.noOrphanTextLine,a=n.columnBreakOnParagraph;if(In(e)||!t)return!0;var o=(i=e,Dn(i.content,Ln.chordLine)&&function(e){return Dn(e.content,Ln.textLine)}(t));var i;if(!0===r&&o)return!1;var l=In(t);if(!0===a&&!l)return!1;return!0}(t,e[n+1],{noOrphanTextLine:u,columnBreakOnParagraph:o})&&(s.fitsOnCurrentColumn(d)?s.insert(p):s.fitsOnNextColumn(d)?s.insertOnNextColumn(p):s.insert(p),p=[],d=0)}),s.get()}function In(e){return Dn(e.content,Ln.emptyLine)}function Dn(e,t){return e.indexOf(t)>-1}n("ddDh");function Wn(e,t){var n=document.createElement("div");return n.classList.add("measuring-node"),document.body.appendChild(n),new Promise(function(r){A.a.render(_.a.createElement("div",null,e),n,function(){var e=t(n);A.a.unmountComponentAtNode(n),n.parentNode.removeChild(n),r(e)})})}function Vn(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length||0;n0}return c()||l.push("sb-optionsGroup-isNotInteractable"),!n||e.children&&0!==e.children.length||r(!1),_.a.createElement("div",{className:l.join(" ")},_.a.createElement("div",{className:"sb-optionsGroup-title",onClick:c()?function(){r(!n)}:null},_.a.createElement("div",{className:"sb-optionsGroup-label"},_.a.createElement("span",{className:"sb-optionsGroup-iconTitle"},_.a.createElement(te,{iconName:o}))," ",i),_.a.createElement("div",{className:"sb-optionsGroup-toggle"},_.a.createElement("span",{className:"sb-optionsGroup-iconToggle"},_.a.createElement(te,{iconName:n?"unfold_less":"unfold_more"})))),_.a.createElement("div",{className:"sb-optionsGroup-content"},n&&e.children))}dr.propTypes={isOpened:W.a.bool,isInteractable:W.a.bool.isRequired,icon:W.a.string.isRequired,label:W.a.string.isRequired,children:W.a.arrayOf(W.a.element)},dr.defaultProps={isOpened:!1};var fr=dr;n("2ywC");function mr(e){var t,n=e.isSelected,r=e.label,a=e.onClick,o=["sb-optionSelectChoice"];return n&&(o.push("sb-optionSelectChoice-isSelected"),t=_.a.createElement("span",{className:"sb-optionSelectChoice-checkIcon"},_.a.createElement(te,{iconName:"check"}))),_.a.createElement("div",{className:o.join(" "),onClick:a},_.a.createElement("div",{className:"sb-optionSelectChoice-check"},n&&t),_.a.createElement("div",{className:"sb-optionSelectChoice-label"},r))}mr.propTypes={isSelected:W.a.bool.isRequired,label:W.a.string.isRequired,onClick:W.a.func.isRequired};var gr=_.a.memo(mr);function hr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{r||null==l.return||l.return()}finally{if(a)throw o}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function yr(e){var t=hr(Object(z.useState)(!1),2),n=t[0],r=t[1],a=e.isInteractable,o=e.label,i=e.allChoices,l=e.optionContext,c=e.optionKey,u=e.optionValue,s=e.setOption,p=["sb-optionSelect"];a||p.push("sb-optionSelect-isNotInteractable");var d=n?"keyboard_arrow_down":"keyboard_arrow_right";var f=n?_.a.createElement("div",{className:"sb-optionSelect-choices"},i.map(function(e){return _.a.createElement(gr,{key:e.value,label:e.label,isSelected:u===e.value,onClick:function(){return s(l,c,e.value)}})})):null;return _.a.createElement("div",{className:p.join(" ")},_.a.createElement("div",{className:"sb-optionSelect-title",onClick:a?function(){r(!n)}:null},_.a.createElement("div",{className:"sb-optionSelect-desc"},o),_.a.createElement("div",{className:"sb-optionSelect-toggle"},_.a.createElement("span",{className:"sb-optionSelect-icon"},_.a.createElement(te,{iconName:d})))),f)}yr.propTypes={isInteractable:W.a.bool.isRequired,label:W.a.string.isRequired,allChoices:W.a.array.isRequired,optionContext:W.a.string.isRequired,optionKey:W.a.string.isRequired,optionValue:W.a.string.isRequired,setOption:W.a.func.isRequired};var vr=yr;n("qePV"),n("JevA"),n("6EPN");function br(e){var t=e.isInteractable,n=e.label,r=e.min,a=e.max,o=e.showPlusSymbol,i=e.optionContext,l=e.optionKey,c=e.optionValue,u=e.setOption,s=["sb-optionSlider"];t||s.push("sb-optionSlider-isNotInteractable");var p=c>0&&o?"+"+c:c;return _.a.createElement("div",{className:s.join(" ")},_.a.createElement("div",{className:"sb-optionSlider-desc"},n),_.a.createElement("div",{className:"sb-optionSlider-value"},p),_.a.createElement("div",{className:"sb-optionSlider-range"},_.a.createElement("input",{min:r,max:a,value:c,type:"range",onChange:t?function(e){u(i,l,Number.parseInt(e.target.value))}:null,disabled:!t})))}br.propTypes={isInteractable:W.a.bool.isRequired,label:W.a.string.isRequired,min:W.a.number.isRequired,max:W.a.number.isRequired,showPlusSymbol:W.a.bool,optionContext:W.a.string.isRequired,optionKey:W.a.string.isRequired,optionValue:W.a.number.isRequired,setOption:W.a.func.isRequired},br.defaultProps={showPlusSymbol:!0};var Er=_.a.memo(br);n("UUiC");function Cr(e){var t=e.isInteractable,n=e.label,r=e.optionContext,a=e.optionKey,o=e.optionValue,i=e.setOption,l=["sb-optionToggle"];return l.push(!0===o?"sb-optionToggle-isOn":"sb-optionToggle-isOff"),t||l.push("sb-optionToggle-isNotInteractable"),_.a.createElement("div",{className:l.join(" "),onClick:t?function(){i(r,a,!o)}:null},_.a.createElement("div",{className:"sb-optionToggle-desc"},n),_.a.createElement("div",{className:"sb-optionToggle-icon"},_.a.createElement("span",{className:"sb-optionToggle-icon"},_.a.createElement(te,{iconName:!0===o?"toggle_on":"toggle_off"}))))}Cr.propTypes={isInteractable:W.a.bool.isRequired,label:W.a.string.isRequired,optionContext:W.a.string.isRequired,optionKey:W.a.string.isRequired,optionValue:W.a.bool.isRequired,setOption:W.a.func.isRequired};var Or=_.a.memo(Cr);function Sr(){return(Sr=Object.assign||function(e){for(var t=1;t= 4.0.0"],main:function(e,t,n,r,a){var o;return'

'+(null!=(o=e.lambda(null!=t?t.textLine:t,t))?o:"")+"

"},useData:!0})},ddDh:function(e,t,n){},eLJI:function(e,t,n){},fNiH:function(e,t,n){},g3KT:function(e,t,n){},kGR0:function(e,t,n){},lb95:function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){return''+e.escapeExpression(e.lambda(null!=t?t.chordSymbol:t,t))+""},useData:!0})},u0UJ:function(e,t,n){},uVib:function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){var o;return'

'+(null!=(o=e.lambda(null!=t?t.chordLine:t,t))?o:"")+"

"},useData:!0})},xeFo:function(e,t,n){},zIDs:function(e,t,n){}}); -//# sourceMappingURL=main.5193b2580c35e5309aae.js.map \ No newline at end of file diff --git a/docs/main.5193b2580c35e5309aae.js.map b/docs/main.5193b2580c35e5309aae.js.map deleted file mode 100644 index fda9ad23..00000000 --- a/docs/main.5193b2580c35e5309aae.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../ucc/src/renderer/components/tpl/emptyLine.hbs","webpack:///../ucc/src/renderer/components/tpl/barContent.hbs","webpack:///../ucc/src/renderer/components/tpl/song.hbs","webpack:///../ucc/src/renderer/components/tpl/barSeparator.hbs","webpack:///./src/state/localStorage.js","webpack:///./src/db/files/actionsTypes.js","webpack:///./src/db/files/reducers.js","webpack:///./src/db/options/reducers.js","webpack:///./src/db/reducers.js","webpack:///./src/db/options/actionsTypes.js","webpack:///./src/fileManager/_state/actionsTypes.js","webpack:///./src/fileManager/_state/reducers.js","webpack:///./src/ui/layout/app/_state/actionsTypes.js","webpack:///./src/ui/layout/app/_state/reducers.js","webpack:///./src/ui/layout/reducers.js","webpack:///./src/state/store.js","webpack:///./src/ui/reducers.js","webpack:///./src/state/reducers.js","webpack:///./src/state/seed.js","webpack:///./src/db/seed.js","webpack:///./src/db/options/seed.js","webpack:///./src/ui/_components/ErrorBoundary.js","webpack:///./src/core/createAction.js","webpack:///./src/ui/layout/app/_state/actions.js","webpack:///./src/ui/layout/app/_state/selectors.js","webpack:///./src/ui/_components/Icon.js","webpack:///./src/ui/sideBar/_components/Logo.js","webpack:///./src/ui/layout/app/_components/NavEntry.js","webpack:///./src/ui/layout/app/_components/Nav.js","webpack:///./src/ui/layout/app/_components/Footer.js","webpack:///./src/ui/layout/app/allNavEntries.js","webpack:///./src/ui/layout/app/_components/App.js","webpack:///./src/ui/layout/app/_containers/App.js","webpack:///./src/fileManager/_state/selectors.js","webpack:///./src/db/files/actions.js","webpack:///./src/db/files/selectors.js","webpack:///./src/fileManager/_components/FileActionEntry.js","webpack:///./src/fileManager/_components/FileActions.js","webpack:///./src/fileManager/_components/FileEntry.js","webpack:///./src/fileManager/_components/FileManager.js","webpack:///./src/fileManager/_containers/FileManager.js","webpack:///./src/fileManager/_state/actions.js","webpack:///./src/db/options/selectors.js","webpack:///./src/core/escapeHTML.js","webpack:///../ucc/src/core/dom/escapeHTML.js","webpack:///../ucc/src/core/dom/stripTags.js","webpack:///../ucc/src/parser/isChord.js","webpack:///../ucc/src/parser/isChordLine.js","webpack:///../ucc/src/parser/isTimeSignatureString.js","webpack:///../ucc/src/parser/parseTimeSignature.js","webpack:///../ucc/src/parser/parseChord.js","webpack:///../ucc/src/parser/exceptions/IncorrectBeatCountException.js","webpack:///../ucc/src/parser/exceptions/InvalidChordRepetitionException.js","webpack:///../ucc/src/parser/parseChordLine.js","webpack:///../ucc/src/parser/helper/songs.js","webpack:///../ucc/src/parser/parseSong.js","webpack:///../ucc/src/parser/getAllChordsInSong.js","webpack:///../ucc/src/renderer/spacers/chord/simple.js","webpack:///../ucc/src/renderer/spacers/chord/aligned.js","webpack:///../ucc/src/renderer/modifiers/transposeChord.js","webpack:///../ucc/src/renderer/modifiers/transposeSong.js","webpack:///../ucc/src/renderer/helpers/getMainAccidental.js","webpack:///../ucc/src/renderer/components/renderBarContent.js","webpack:///../ucc/src/renderer/components/renderChordSymbol.js","webpack:///../ucc/src/renderer/helpers/getChordSymbol.js","webpack:///../ucc/src/renderer/components/renderSong.js","webpack:///../ucc/src/renderer/spacers/chord/getMaxBeatsWidth.js","webpack:///../ucc/src/renderer/components/renderChordLine.js","webpack:///../ucc/src/renderer/components/renderTextLine.js","webpack:///./src/core/renderSong.js","webpack:///./src/songRenderers/_components/SongRenderer.js","webpack:///./src/songRenderers/_containers/SongRenderer.js","webpack:///./src/songRenderers/editorPreview/_components/EditorPreview.js","webpack:///./src/editor/songEditor/prosemirror/schema.js","webpack:///./src/editor/songEditor/prosemirror/converters/stateToText.js","webpack:///./src/editor/songEditor/prosemirror/converters/toSafeHtml.js","webpack:///./src/editor/songEditor/prosemirror/ProsemirrorEditorView.js","webpack:///./src/editor/songEditor/prosemirror/converters/textToDom.js","webpack:///./src/editor/songEditor/prosemirror/getPlugins.js","webpack:///./src/editor/songEditor/_components/EditorLayout.js","webpack:///./src/songRenderers/exportPreview/_components/ExportPreview.js","webpack:///./src/songRenderers/playRenderer/_components/PlayRenderer.js","webpack:///./src/songRenderers/printPreview/_components/Page.js","webpack:///./src/songRenderers/printPreview/_components/PageHeader.js","webpack:///./src/songRenderers/printPreview/helpers/mapLinesToColumns.js","webpack:///./src/songRenderers/printPreview/helpers/getDimensionsFromDom.js","webpack:///./src/songRenderers/printPreview/helpers/padColumns.js","webpack:///./src/songRenderers/printPreview/helpers/element.js","webpack:///./src/songRenderers/printPreview/helpers/getAllLinesHeight.js","webpack:///./src/songRenderers/printPreview/helpers/getPagesHeight.js","webpack:///./src/songRenderers/printPreview/_components/AllPages.js","webpack:///./src/songRenderers/printPreview/_components/PrintPreview.js","webpack:///./src/songRenderers/printPreview/_containers/PrintPreview.js","webpack:///./src/editor/_components/Editor.js","webpack:///./src/editor/_containers/Editor.js","webpack:///./src/optionsPanels/_components/OptionsPanel.js","webpack:///./src/ui/sideBar/options/_components/OptionsGroup.js","webpack:///./src/ui/sideBar/options/_components/SelectChoice.js","webpack:///./src/ui/sideBar/options/_components/Select.js","webpack:///./src/ui/sideBar/options/_components/Slider.js","webpack:///./src/ui/sideBar/options/_components/Toggle.js","webpack:///./src/ui/sideBar/options/_components/SidebarOptionsPanel.js","webpack:///./src/db/options/actions.js","webpack:///./src/optionsPanels/rendering/allWidgets.js","webpack:///./src/optionsPanels/_containers/OptionsPanelFactory.js","webpack:///./src/optionsPanels/rendering/_containers/Rendering.js","webpack:///./src/optionsPanels/rendering/_state/selectors.js","webpack:///./src/optionsPanels/rendering/_components/Rendering.js","webpack:///./src/controllers/Editor.js","webpack:///./src/router.js","webpack:///./src/renderController.js","webpack:///./src/app.js","webpack:///../ucc/src/renderer/components/tpl/textLine.hbs","webpack:///../ucc/src/renderer/components/tpl/chordSymbol.hbs","webpack:///../ucc/src/renderer/components/tpl/chordLine.hbs"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","Handlebars","template","compiler","main","container","depth0","helpers","partials","useData","stack1","lambda","barContent","song","loadState","serializedState","localStorage","getItem","JSON","parse","err","saveState","state","stringify","setItem","DB_FILES_CREATE","DB_FILES_UPDATE","DB_FILES_DELETE","initialState","allFiles","combineReducers","files","arguments","undefined","action","type","actionTypes","_action$payload","payload","id","title","content","_objectSpread","createFile","_action$payload2","updateFile","deleteFile","options","context","contextOptions","reducers_objectSpread","newState","FILE_MANAGER_SELECT_FILE","FILE_MANAGER_ENABLE_RENAME","selected","renamed","defaultTitle","UI_LAYOUT_APP_TOGGLE_LEFT_BAR","UI_LAYOUT_APP_TOGGLE_RIGHT_BAR","UI_LAYOUT_APP_SET_EDITOR_MODE","isLeftBarCollapsed","isRightBarCollapsed","editorMode","store","app","app_state_reducers_objectSpread","layout","db","fileManager","_state_reducers_objectSpread","ui","state_seed","rendering","documentSize","default","resetOnSongChange","documentMargins","columnsCount","columnBreakOnParagraph","style","alignBars","showChords","instrument","showStrummingPattern","transposeValue","simplifyChords","capoPosition","harmonizeAccidentals","preferredAccidentals","fontSize","printFontSize","fontStyle","chordsColor","highlightChords","storeEnhancers","ErrorBoundary","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","error","errorInfo","React","Component","setState","react_default","a","createElement","className","whiteSpace","open","toString","componentStack","children","propTypes","PropTypes","any","createAction","TypeError","getEditorMode","Icon","iconName","join","string","isRequired","memo","_components_Icon","NavEntry","label","icon","setEditorMode","classNames","isActive","onClick","func","bool","Nav","currentMode","allEntries","map","entry","_components_NavEntry","_extends","arrayOf","shape","allNavEntries","App","toggleLeftBar","toggleRightBar","leftBar","rightBar","leftBarClassNames","rightBarClassNames","_components_Logo","data-testid","_components_Nav","_components_Footer","element","defaultProps","connect","getSelectedId","getRenamedId","getDefaultTitle","_ref","getAllTitles","createSelectorCreator","defaultMemoize","_isEqual","createDeepEqualSelector","_map","_sortBy","toLowerCase","getOne","FileActionEntry","text","FileActions","allActions","enableRename","_components_FileActionEntry","FileActions_extends","FileEntry","_useState2","_slicedToArray","useState","setTitle","fileId","isSelected","isRenamed","selectFile","classList","inputRef","createRef","saveTitle","newTitle","current","scrollLeft","useEffect","focus","onDoubleClick","e","target","select","ref","readOnly","autoFocus","onChange","onBlur","onFocus","onKeyPress","which","preventDefault","getSelection","removeAllRanges","FileManager","allTitles","_components_FileActions","file","_components_FileEntry","actionsTypes","uuid","v4","getOptionValue","escapeHTML","unescaped","domPurify","sanitize","stripTags","html","ALLOWED_TAGS","KEEP_CONTENT","chords","Chords","isChordLine","replace","trim","split","potentialChord","every","_isString","isChord","allowedTimeSignatures","isTimeSignatureString","includes","parseTimeSignature","array","count","Number","parseInt","beatCount","IncorrectBeatCountException","duration","currentBeatCount","IncorrectBeatCountException_classCallCheck","_isFinite","IncorrectBeatCountException_possibleConstructorReturn","IncorrectBeatCountException_getPrototypeOf","Error","InvalidChordRepetitionException","InvalidChordRepetitionException_classCallCheck","InvalidChordRepetitionException_possibleConstructorReturn","InvalidChordRepetitionException_getPrototypeOf","parseChordLine","chordLine","_ref$timeSignature","timeSignature","allLineChords","allBars","bar","allChords","chord","model","chordCount","previousChord","forEach","chordString","parseChord","match","beat","_cloneDeep","message","forEachChordInSong","allLines","fn","newLines","line","defaultTimeSignature","parseSong","songLines","_isArray","isTimeSignature","_findIndex","occurrences","getAllChordsInSong","allMasks","","2","11","3","12","21","111","4","13","22","31","112","121","211","1111","spacesAfterDefault","emptyBeatSpaces","notes","sharpsToFlats","C#","D#","F#","G#","A#","flatsToSharps","_invert","convertToSharp","note","transposeNote","useFlats","transposedIndex","indexOf","octaves","Math","floor","transposed","transposeSong","_ref$transposeValue","_ref$accidentalsType","accidentalsType","_ref$harmonizeAcciden","accidental","rootNote","flatCount","sharpCount","symbol","getMainAccidental","transposedModel","transposedChord","root","bass","bassNote","rootSharp","bassSharp","transposeChord","space","defaultSpacesWithin","defaultSpacesAfter","renderBarContent","spacesWithin","spacesAfter","reduce","chordSymbol","chordSymbolTpl","repeat","barContentTpl","getChordSymbol","chordDef","print","renderSong","parsedSong","_ref$alignBars","maxBeatsWidth","filter","barIndex","max","getMaxBeatsWidth","spaced","chordLineInput","beatMaxWidth","alignedChordSpacer","chordPattern","chordSpaces","rendered","chordLineModel","allBarsRendered","barSeparator","barSeparatorTpl","chordLineTpl","renderChordLine","textLine","emptyLineTpl","textLineTpl","songTpl","songTxt","renderOptions","renderSongUcc","SongRenderer","_pick","dangerouslySetInnerHTML","__html","EditorPreview","selectedFile","_containers_SongRenderer","editorSchema","Schema","nodes","marks","stateToText","toJSON","doc","paragraph","acc","toSafeHtml","dirty","ProseMirrorEditorView","selectedFileId","editorContent","editorView","useRef","editorDom","previousFileId","editorExists","dom","parentNode","destroyEditor","removeChild","editorState","EditorState","pmDOMParser","fromSchema","concat","div","document","innerHTML","preserveWhitespace","plugins","pmHistory","keymap","Mod-z","undo","Mod-y","redo","baseKeymap","createEditorState","EditorView","dispatchTransaction","transaction","_this$state$applyTran","applyTransaction","transactions","updateState","some","tr","docChanged","createEditorView","appendChild","EditorLayout","prosemirror_ProsemirrorEditorView","_components_EditorPreview","ExportPreview","PlayRenderer","Page","pageHeader","allColumnsLines","allSectionsRendered","columnLines","index","columnLinesTxt","pageClasses","pageContentWrapperClasses","number","PageHeader","cssClasses","emptyLine","mapLinesToColumns","allLinesWithHeight","firstPageHeight","normalPageHeight","_ref$noEmptyLinesOnCo","noEmptyLinesOnColumnStart","_ref$noOrphanTextLine","noOrphanTextLine","_ref3","allPagesColumns","pageIndex","columnIndex","maxColumnHeight","getMaxColumnHeight","currentColumnHeight","flushBuffer","buffer","height","changeColumn","insert","insertOnNextColumn","fitsOnCurrentColumn","bufferHeight","fitsOnNextColumn","layoutFactory","lineIndex","isEmptyLine","shouldRenderLine","currentLine","nextLine","_ref2","wouldProduceOrphanTextLine","hasClass","isTextLine","isEndOfParagraph","isBreakable","getDimensionsFromDom","component","measuringFn","add","body","Promise","resolve","ReactDOM","render","measure","unmountComponentAtNode","padColumns","columnCount","allColumns","getClientHeight","clientHeight","cssSelectors","getAllLinesHeight","_x","_x2","_getAllLinesHeight","_callee","regeneratorRuntime","wrap","_context","prev","next","_components_Page","allLinesHeight","querySelectorAll","offsetHeight","abrupt","sent","stop","helpers_getPagesHeight_getAllLinesHeight","_components_PageHeader","pageContent","querySelector","AllPages","AllPages_slicedToArray","setAllPagesColumns","useLayoutEffect","mark","pageOptions","mapped","getPagesHeight","getDimensions","allPagesRendered","pageColumns","Fragment","PrintPreview","_components_AllPages","Editor","_components_EditorLayout","_components_PlayRenderer","_containers_PrintPreview","_components_ExportPreview","OptionsPanel","widget","groupWidget","WidgetComponent","GroupComponent","isGroupInteractable","isGroupWidgetInteractable","renderedGroupWidgets","allWidgets","nonInteractableWidgets","hiddenWidgets","setOption","getEntryComponent","renderedWidgets","widgetsOrder","widgetId","groupWidgetsOrder","groupWidgetId","allGroupWidgets","renderWidget","isInteractable","localWidget","OptionsPanel_extends","optionContext","option","optionKey","optionValue","typeOptions","OptionsGroup","OptionsGroup_slicedToArray","isOpened","setIsOpened","shouldBeInteractable","SelectChoice","checkIcon","Select","Select_slicedToArray","isOpen","setIsOpen","allChoices","renderedChoices","choice","_components_SelectChoice","Slider","min","showPlusSymbol","valueDisplay","disabled","Toggle","SidebarOptionPanel","_components_OptionsPanel","SidebarOptionsPanel_extends","setOptionValue","getNonInteractableWidgets","getHiddenWidgets","OptionsPanelFactory","format","nonVisibleWidgets","Rendering_extends","stateToProps","Edit","fm","_containers_FileManager","rightBarPanel","_containers_Rendering","_containers_App","_containers_Editor","routes","path","universalRouter","UniversalRouter","router","navigateTo","then","controller","Controller","ReactDom","es","StrictMode","ui_components_ErrorBoundary","getElementById","__REDUX_DEVTOOLS_EXTENSION__","trace","persistedState","_defaultsDeep","seed","createReduxStore","allReducers","compose","subscribe","getState","createStore","escapeExpression"],"mappings":"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","file":"main.5193b2580c35e5309aae.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"Vtdi\",1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"

 

\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"\"\n + ((stack1 = container.lambda((depth0 != null ? depth0.barContent : depth0), depth0)) != null ? stack1 : \"\")\n + \"\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return ((stack1 = container.lambda((depth0 != null ? depth0.song : depth0), depth0)) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"|\";\n},\"useData\":true});","// @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\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 const DB_FILES_CREATE = 'db/files/Create';\nexport const DB_FILES_UPDATE = 'db/files/Update';\nexport const DB_FILES_DELETE = 'db/files/Delete';\n","import * as actionTypes from './actionsTypes';\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\n\nfunction updateFile(state, action) {\n\tconst { id, title, content } = action.payload;\n\n\tif ((!title && !content) || !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 (content) {\n\t\tallFiles[id].content = content;\n\t}\n\treturn {\n\t\t...state,\n\t\tallFiles,\n\t};\n}\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\nexport default (state = initialState, action = {}) => {\n\tswitch (action.type) {\n\t\tcase actionTypes.DB_FILES_CREATE: return createFile(state, action);\n\t\tcase actionTypes.DB_FILES_UPDATE: return updateFile(state, action);\n\t\tcase actionTypes.DB_FILES_DELETE: return deleteFile(state, action);\n\t}\n\treturn state;\n};\n","import * as actionTypes from './actionsTypes';\n\nconst initialState = {};\n\nexport default (state = initialState, action = {}) => {\n\tswitch (action.type) {\n\t\tcase actionTypes.DB_OPTION_SET_OPTION_VALUE: {\n\t\t\tconst { context, key, value } = action.payload;\n\n\t\t\tif (!state[context] || !state[context][key]) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst contextOptions = { ...state[context] };\n\t\t\tcontextOptions[key] = {\n\t\t\t\t...contextOptions[key],\n\t\t\t\tvalue\n\t\t\t};\n\n\t\t\tconst newState = {\n\t\t\t\t...state,\n\t\t\t};\n\t\t\tnewState[context] = contextOptions;\n\n\t\t\treturn newState;\n\t\t}\n\t}\n\treturn state;\n};\n","import { combineReducers } from 'redux';\nimport files from './files/reducers';\nimport options from './options/reducers';\n\nexport default combineReducers({\n\tfiles,\n\toptions,\n});\n","export const DB_OPTION_SET_OPTION_VALUE = 'db/options/setOptionValue';\n","export const FILE_MANAGER_SELECT_FILE = 'fileManager/select';\nexport const FILE_MANAGER_ENABLE_RENAME = 'fileManager/enableRename';\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_UPDATE,\n\tDB_FILES_DELETE\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\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_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 UI_LAYOUT_APP_TOGGLE_LEFT_BAR = 'ui/layout/app/toggleLeftBar';\nexport const UI_LAYOUT_APP_TOGGLE_RIGHT_BAR = 'ui/layout/app/toggleRightBar';\nexport const UI_LAYOUT_APP_SET_EDITOR_MODE = 'ui/layout/app/setEditorMode';\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\nconst initialState = {\n\tisLeftBarCollapsed: false,\n\tisRightBarCollapsed: false,\n\teditorMode: 'edit',\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}\n\treturn state;\n}\n","import { combineReducers } from 'redux';\nimport app from './app/_state/reducers';\n\nexport default combineReducers({\n\tapp\n});\n","import _defaultsDeep from 'lodash/defaultsDeep';\n\nimport { createStore as createReduxStore, compose } from 'redux';\n\nimport { loadState, saveState } from './localStorage';\nimport allReducers from './reducers';\nimport seed from './seed';\n\nconst storeEnhancers = [];\n\n/* * /\nimport { applyMiddleware } from 'redux';\nconst logger = () => next => action => {\n\tconsole.log('!!! DISPATCHING ACTION: ', action);\n\tlet result = next(action);\n\treturn result;\n};\nstoreEnhancers.push(applyMiddleware(logger));\n/* */\n\n\nlet store;\n\nexport function createStore() {\n\tif (window.__REDUX_DEVTOOLS_EXTENSION__) {\n\t\tstoreEnhancers.push(window.__REDUX_DEVTOOLS_EXTENSION__({ trace: true }));\n\t}\n\n\tconst persistedState = loadState();\n\tconst initialState = _defaultsDeep(persistedState, seed);\n\n\tstore = createReduxStore(\n\t\tallReducers,\n\t\tinitialState,\n\t\tcompose(...storeEnhancers)\n\t);\n\n\tstore.subscribe(() => {\n\t\tsaveState(store.getState());\n\t});\n}\n\nexport function getStore() {\n\treturn store;\n}\n","import { combineReducers } from 'redux';\nimport layout from './layout/reducers';\n\nexport default combineReducers({\n\tlayout\n});\n","import { combineReducers } from 'redux';\n\nimport db from '../db/reducers';\nimport fileManager from '../fileManager/_state/reducers';\nimport ui from '../ui/reducers';\n\nexport default combineReducers({\n\tdb,\n\tfileManager,\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\trendering: {\n\n\t\t/** Layout */\n\n\t\tdocumentSize: {\n\t\t\tvalue: 'a4',\n\t\t\tdefault: 'a4',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tdocumentMargins: {\n\t\t\tvalue: 3,\n\t\t\tdefault: 3,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tcolumnsCount: {\n\t\t\tvalue: 1,\n\t\t\tdefault: 1,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tcolumnBreakOnParagraph: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\n\n\t\t/** Display */\n\n\t\tstyle: {\n\t\t\tvalue: 'ucc',\n\t\t\tdefault: 'ucc',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\talignBars: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tshowChords: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tinstrument: {\n\t\t\tvalue: 'guitar',\n\t\t\tdefault: 'guitar',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tshowStrummingPattern: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\n\n\n\t\t/** Customize Chords */\n\n\t\ttransposeValue: {\n\t\t\tvalue: 0,\n\t\t\tdefault: 0,\n\t\t\tresetOnSongChange: true,\n\t\t},\n\t\tsimplifyChords: {\n\t\t\tvalue: false,\n\t\t\tdefault: false,\n\t\t\tresetOnSongChange: true,\n\t\t},\n\t\tcapoPosition: {\n\t\t\tvalue: 0,\n\t\t\tdefault: 0,\n\t\t\tresetOnSongChange: true,\n\t\t},\n\t\tharmonizeAccidentals: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: true,\n\t\t},\n\t\tpreferredAccidentals: {\n\t\t\tvalue: 'auto',\n\t\t\tdefault: 'auto',\n\t\t\tresetOnSongChange: true,\n\t\t},\n\n\n\n\t\t/** Format */\n\n\t\tfontSize: {\n\t\t\tvalue: 0,\n\t\t\tdefault: 0,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tprintFontSize: {\n\t\t\tvalue: 0,\n\t\t\tdefault: 0,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tfontStyle: {\n\t\t\tvalue: 'roboto',\n\t\t\tdefault: 'roboto',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tchordsColor: {\n\t\t\tvalue: 'black',\n\t\t\tdefault: 'black',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\thighlightChords: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t}\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","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 {\n\tUI_LAYOUT_APP_TOGGLE_LEFT_BAR,\n\tUI_LAYOUT_APP_TOGGLE_RIGHT_BAR,\n\tUI_LAYOUT_APP_SET_EDITOR_MODE,\n} from './actionsTypes';\n\nimport createAction from '../../../../core/createAction';\n\nexport const toggleLeftBar = () => createAction(UI_LAYOUT_APP_TOGGLE_LEFT_BAR);\n\nexport const toggleRightBar = () => createAction(UI_LAYOUT_APP_TOGGLE_RIGHT_BAR);\n\nexport const setEditorMode = (mode) => createAction(UI_LAYOUT_APP_SET_EDITOR_MODE, { mode });\n\n","export const isLeftBarCollapsed = (state) => state.ui.layout.app.isLeftBarCollapsed;\n\nexport const isRightBarCollapsed = (state) => state.ui.layout.app.isRightBarCollapsed;\n\nexport const getEditorMode = (state) => state.ui.layout.app.editorMode;\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 (\n\t\t{iconName}\n\t);\n}\n\nIcon.propTypes = {\n\ticonName: PropTypes.string.isRequired,\n};\n\nexport default React.memo(Icon);\n","import './Logo.scss';\n\nimport React from 'react';\n\nimport Icon from '../../_components/Icon.js';\n\nfunction Logo() {\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\tChords Charts Studio\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default React.memo(Logo);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon.js';\n\nfunction NavEntry(props) {\n\tconst {\n\t\tlabel,\n\t\ticon,\n\t\teditorMode,\n\t\tsetEditorMode,\n\t\tisActive,\n\t} = props;\n\n\tconst classNames = ['mainNavEntry'];\n\n\tif (isActive) {\n\t\tclassNames.push('mainNavEntry-isActive');\n\t}\n\n\tfunction handleClick() {\n\t\tsetEditorMode(editorMode);\n\t}\n\n\treturn (\n\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};\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 {\n\t\tcurrentMode,\n\t\tallEntries,\n\t\tsetEditorMode,\n\t} = props;\n\n\treturn (\n\t\t\n\t);\n}\n\nNav.propTypes = {\n\tcurrentMode: PropTypes.string.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\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 './Footer.scss';\n\nimport React from 'react';\n\nfunction Footer() {\n\treturn (\n\t\t
\n\t\t\tChords Charts Studio v0.6.0 - Universal Chords Charts v0.2.0\n\t\t
\n\t);\n}\n\nexport default React.memo(Footer);\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: 'Play',\n\t\ticon: 'music_note',\n\t\teditorMode: 'play',\n\t},\n\t{\n\t\tid: 'print',\n\t\tlabel: 'Print / PDF',\n\t\ticon: 'print',\n\t\teditorMode: 'print',\n\t},\n\t{\n\t\tid: 'export',\n\t\tlabel: 'Export',\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 Footer from './Footer';\nimport Icon from '../../../_components/Icon';\n\nimport allNavEntries from '../allNavEntries';\n\nfunction App(props) {\n\tconst {\n\t\tisLeftBarCollapsed,\n\t\tisRightBarCollapsed,\n\t\teditorMode,\n\t\ttoggleLeftBar,\n\t\ttoggleRightBar,\n\t\tsetEditorMode,\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\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\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\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{rightBar}\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\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 { toggleLeftBar, toggleRightBar, setEditorMode} from '../_state/actions';\nimport { isLeftBarCollapsed, isRightBarCollapsed, getEditorMode } from '../_state/selectors';\n\nimport App from '../_components/App';\n\n\nexport default connect(\n\tstate => ({\n\t\tisLeftBarCollapsed: isLeftBarCollapsed(state),\n\t\tisRightBarCollapsed: isRightBarCollapsed(state),\n\t\teditorMode: getEditorMode(state)\n\t}),\n\n\t{\n\t\ttoggleLeftBar,\n\t\ttoggleRightBar,\n\t\tsetEditorMode,\n\t}\n\n)(App);\n\n\n","\nexport const getSelectedId = state => state.fileManager.selected;\n\nexport const getRenamedId = state => state.fileManager.renamed;\n\nexport const getDefaultTitle = state => state.fileManager.defaultTitle;\n","import uuid from 'uuid';\n\nimport createAction from '../../core/createAction';\nimport * as actionTypes from './actionsTypes';\n\n\nexport const createFile = (title) => {\n\tif (!title) {\n\t\tthrow new TypeError('Cannot create a file without title');\n\t}\n\tconst payload = {\n\t\tid: uuid.v4(),\n\t\ttitle,\n\t\tcontent: ''\n\t};\n\treturn createAction(actionTypes.DB_FILES_CREATE, payload);\n};\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\n\nexport const deleteFile = (id) => {\n\treturn createAction(actionTypes.DB_FILES_DELETE, { id });\n};\n\n","import _map from 'lodash/map';\nimport _isEqual from 'lodash/isEqual';\nimport _sortBy from 'lodash/sortBy';\n\nimport { createSelectorCreator, defaultMemoize } from 'reselect';\n\n\n// create a \"selector creator\" that uses lodash.isEqual instead of ===\nconst createDeepEqualSelector = createSelectorCreator(\n\tdefaultMemoize,\n\t_isEqual\n);\n\n\n// return value should not change when file content changes\nexport const getAllTitles = createDeepEqualSelector(\n\tstate => _map(state.db.files.allFiles, ({ title, id }) => ({ title, id })),\n\tallFiles => _sortBy(allFiles, o => o.title.toLowerCase())\n);\n\n\nexport const getOne = (state, id) => {\n\treturn state.db.files.allFiles[id];\n};\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 } = props;\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};\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 { createFile, deleteFile, enableRename } = props;\n\n\tconst allActions = [\n\t\t{\n\t\t\ticon: 'add_circle',\n\t\t\ttext: 'New',\n\t\t\taction: createFile\n\t\t},\n\t\t{\n\t\t\ticon: 'create',\n\t\t\ttext: 'Rename',\n\t\t\taction: enableRename\n\t\t},\n\t\t{\n\t\t\ticon: 'delete',\n\t\t\ttext: 'Delete',\n\t\t\taction: deleteFile\n\t\t},\n\t];\n\n\treturn (\n\t\t
\n\t\t\t{\n\t\t\t\tallActions.map((action, key) =>\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\t\t
\n\t);\n}\n\nFileActions.propTypes = {\n\tcreateFile: PropTypes.func.isRequired,\n\tdeleteFile: PropTypes.func.isRequired,\n\tenableRename: 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 { fileId, isSelected, isRenamed, defaultTitle, selectFile, enableRename, updateFile } = 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 from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../ui/_components/Icon';\nimport FileActions from './FileActions';\nimport FileEntry from './FileEntry';\n\nfunction FileManager(props) {\n\tconst {\n\t\tallTitles,\n\t\tselected,\n\t\trenamed,\n\t\tdefaultTitle,\n\n\t\tselectFile,\n\t\tcreateFile,\n\t\tdeleteFile,\n\t\tenableRename,\n\t\tupdateFile,\n\n\t} = props;\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t createFile(defaultTitle)}\n\t\t\t\t\tdeleteFile={() => deleteFile(selected)}\n\t\t\t\t\tenableRename={() => enableRename(selected)}\n\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t\t{\n\t\t\t\t\t\tallTitles.map(file =>\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\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\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default FileManager;\n","import { connect } from 'react-redux';\n\nimport { selectFile, enableRename } from '../_state/actions';\nimport { getDefaultTitle, getSelectedId, getRenamedId } from '../_state/selectors';\n\nimport { createFile, updateFile, deleteFile } from '../../db/files/actions';\nimport { getAllTitles } from '../../db/files/selectors';\n\nimport FileManager from '../_components/FileManager';\n\nexport default connect(\n\tstate => ({\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}\n\n)(FileManager);\n","import createAction from '../../core/createAction';\n\nimport * as actionsTypes from './actionsTypes';\n\nexport const selectFile = (id) => createAction(actionsTypes.FILE_MANAGER_SELECT_FILE, { id });\n\nexport const enableRename = (id) => createAction(actionsTypes.FILE_MANAGER_ENABLE_RENAME, { id });\n\n\n\n\n","import _mapValues from 'lodash/mapValues';\n\nexport const getOptionValue = (state, context, key) => {\n\tif (!state.db.options[context] || !state.db.options[context][key]) {\n\t\treturn;\n\t}\n\treturn state.db.options[context][key].value;\n};\n\nexport const getContext = (state, context) => {\n\tif (!state.db.options[context]) {\n\t\treturn;\n\t}\n\treturn _mapValues(state.db.options[context], option => option.value);\n};\n","import domPurify from 'dompurify';\n\nexport default function escapeHTML(unescaped) {\n\treturn domPurify.sanitize(unescaped);\n}\n","import domPurify from 'dompurify';\n\nexport default function escapeHTML(unescaped) {\n\treturn domPurify.sanitize(unescaped);\n}\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 _isString from 'lodash/isString';\n\nimport { Chords } from 'momo-chords';\n\nconst chords = new Chords();\n\nexport default function isChord(potentialChord) {\n\treturn _isString(potentialChord) && chords.isChord(potentialChord);\n}\n","import isChord from './isChord';\n\nexport default function isChordLine(line = '') {\n\treturn line\n\t\t.replace(/\\t+/g, ' ')\n\t\t.replace(/ +/g, ' ')\n\t\t.trim()\n\t\t.split(' ')\n\t\t.map(potentialChord => potentialChord.replace(/\\.*$/g, ''))\n\t\t.every(potentialChord => isChord(potentialChord));\n}\n","const allowedTimeSignatures = [\n\t'2/2', '3/2',\n\t'2/4', '3/4', '4/4', '5/4',\n\t'3/8', '6/8', '9/8', '12/8'\n];\n\nexport default function isTimeSignatureString(string) {\n\treturn allowedTimeSignatures.includes(string);\n}\n","import isTimeSignatureString from './isTimeSignatureString';\n\n/**\n * @typedef {Object} TimeSignature\n * @type {Object}\n * @property {String} string - original string\n * @property {Number} count - upper part of time signature\n * @property {Number} value - lower part of time signature\n * @property {Number} beatCount - number of beats per bar\n */\n\n/**\n * @param {String} string\n * @returns {TimeSignature}\n */\nexport default function parseTimeSignature(string) {\n\tif (!isTimeSignatureString(string)) {\n\t\tthrow new TypeError('Expected time signature string, received: ' + string);\n\t}\n\n\tconst array = string.split('/');\n\n\tconst count = Number.parseInt(array[0], 10);\n\tconst value = Number.parseInt(array[1], 10);\n\n\tlet beatCount = count;\n\n\tif (value === 2) {\n\t\tbeatCount = count * 2;\n\n\t} else if (value === 8) {\n\t\tbeatCount = count / 3;\n\t}\n\n\treturn {\n\t\tstring,\n\t\tcount,\n\t\tvalue,\n\t\tbeatCount,\n\t};\n}\n\n","import { Chords } from 'momo-chords';\n\nconst chords = new Chords();\n\n/**\n * @see https://github.com/mdanka/momo-chords/blob/master/src/types.ts\n */\n\n/**\n * @typedef {Object} ChordDef\n * @type {Object}\n * @property {ChordSymbol} symbol\n * @property {Object} structure - whether each degree (1, 2, 3... 11) is present (true/false) in the chord\n */\n\n/**\n * @typedef {Object} ChordSymbol\n * @type {Object}\n * @property {String} rootNote\n * @property {String} [bassNote]\n * @property {String} quality\n * @property {Object} addeds\n * @property {Object} suspended\n * @property {String} [alteredFifth]\n * @property {String} [seventh]\n * @property {String} [ninth]\n * @property {String} [eleventh]\n * @property {String} [thirteenth]\n */\n\n/**\n * @param chordString\n * @returns {ChordDef}\n */\nexport default function parseChord(chordString) {\n\treturn chords.parse(chordString);\n}\n","import _isString from 'lodash/isString';\nimport _isFinite from 'lodash/isFinite';\n\nexport default class IncorrectBeatCountException extends Error {\n\tconstructor(\n\t\t{\n\t\t\tstring,\n\t\t\tduration,\n\t\t\tcurrentBeatCount,\n\t\t\tbeatCount\n\t\t} = {}\n\t) {\n\t\tif (!string || !_isString(string)) {\n\t\t\tthrow new TypeError('IncorrectBeatCountException cannot be created without chord string, received: ' + string);\n\t\t}\n\t\tif (!duration || !_isFinite(duration)) {\n\t\t\tthrow new TypeError('IncorrectBeatCountException cannot be created without chord duration, received: ' + duration);\n\t\t}\n\t\tif (!currentBeatCount || !_isFinite(currentBeatCount)) {\n\t\t\tthrow new TypeError('IncorrectBeatCountException cannot be created without currentBeatCount, received: ' + currentBeatCount);\n\t\t}\n\t\tif (!beatCount || !_isFinite(beatCount)) {\n\t\t\tthrow new TypeError('IncorrectBeatCountException cannot be created without beatCount, received: ' + beatCount);\n\t\t}\n\n\t\tsuper();\n\n\t\tthis.name = 'IncorrectBeatCountException';\n\t\tthis.string = string;\n\t\tthis.duration = duration;\n\t\tthis.currentBeatCount = currentBeatCount;\n\t\tthis.beatCount = beatCount;\n\t}\n}\n\n","import _isString from 'lodash/isString';\n\nexport default class InvalidChordRepetitionException extends Error {\n\tconstructor(\n\t\t{\n\t\t\tstring,\n\t\t} = {}\n\t) {\n\t\tif (!string || !_isString(string)) {\n\t\t\tthrow new TypeError('InvalidChordRepetitionException cannot be created without chord string, received: ' + string);\n\t\t}\n\n\t\tsuper();\n\n\t\tthis.name = 'InvalidChordRepetitionException';\n\t\tthis.string = string;\n\t}\n}\n\n","import _isEqual from 'lodash/isEqual';\nimport _cloneDeep from 'lodash/cloneDeep';\n\nimport parseChord from './parseChord';\nimport parseTimeSignature from './parseTimeSignature';\n\nimport IncorrectBeatCountException from './exceptions/IncorrectBeatCountException';\nimport InvalidChordRepetitionException from './exceptions/InvalidChordRepetitionException';\n\n/**\n * @typedef {Object} ChordLine\n * @type {Object}\n * @property {Number} chordCount - number of chords in the line\n * @property {Bar[]} allBars\n */\n\n/**\n * @typedef {Object} Bar\n * @type {Object}\n * @property {TimeSignature} timeSignature\n * @property {ChordLineChord[]} allChords\n */\n\n/**\n * @typedef {Object} ChordLineChord\n * @type {Object}\n * @property {String} string - original chord string\n * @property {ChordDef} model\n * @property {Number} duration - number of beats the chord lasts\n * @property {Number} beat - beat on which the chord starts\n */\n\n/**\n * @param {String} chordLine\n * @param {TimeSignature} timeSignature\n * @returns {ChordLine}\n */\nexport default function parseChordLine(\n\tchordLine,\n\t{\n\t\ttimeSignature = parseTimeSignature('4/4')\n\t} = {}\n) {\n\tconst { beatCount } = timeSignature;\n\n\tconst allLineChords = chordLine\n\t\t.replace(/ +/g, ' ')\n\t\t.trim()\n\t\t.split(' ');\n\tconst allBars = [];\n\n\tlet bar = { allChords: []};\n\tlet chord = {};\n\tlet model = {};\n\tlet currentBeatCount = 0;\n\tlet chordCount = 0;\n\tlet previousChord = {};\n\n\tallLineChords.forEach(chordString => {\n\t\tmodel = parseChord(chordString.replace(/\\./g, ''));\n\t\tchord = {\n\t\t\tstring: chordString,\n\t\t\tduration: ((chordString.match(/\\./g) || []).length) || beatCount,\n\t\t\tmodel,\n\t\t};\n\t\tchord.beat = currentBeatCount + 1;\n\t\tcurrentBeatCount += chord.duration;\n\n\t\tif (bar.allChords.length > 0) {\n\t\t\tpreviousChord = bar.allChords[bar.allChords.length - 1];\n\t\t\tif (_isEqual(previousChord.model, chord.model)) {\n\t\t\t\tthrow new InvalidChordRepetitionException({\n\t\t\t\t\tstring: chord.string,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tbar.allChords.push(chord);\n\t\tchordCount++;\n\n\t\tif (currentBeatCount === beatCount) {\n\t\t\tbar.timeSignature = timeSignature;\n\n\t\t\tallBars.push(_cloneDeep(bar));\n\n\t\t\tbar = { allChords: []};\n\t\t\tcurrentBeatCount = 0;\n\t\t\tpreviousChord = {};\n\n\t\t} else if (currentBeatCount > beatCount) {\n\t\t\tthrow new IncorrectBeatCountException({\n\t\t\t\tmessage: '',\n\t\t\t\tstring: chord.string,\n\t\t\t\tduration: chord.duration,\n\t\t\t\tcurrentBeatCount,\n\t\t\t\tbeatCount,\n\t\t\t});\n\t\t}\n\t});\n\n\tif (currentBeatCount > 0 && (currentBeatCount < beatCount)) {\n\t\tthrow new IncorrectBeatCountException({\n\t\t\tmessage: '',\n\t\t\tstring: chord.string,\n\t\t\tduration: chord.duration,\n\t\t\tcurrentBeatCount,\n\t\t\tbeatCount,\n\t\t});\n\t}\n\n\treturn {\n\t\tchordCount,\n\t\tallBars\n\t};\n}\n","import _cloneDeep from 'lodash/cloneDeep';\n\n/**\n * @param {SongLine[]} allLines\n * @param {Function} fn - to execute on each chord\n * @returns {SongLine[]}\n */\nexport function forEachChordInSong(allLines, fn) {\n\tconst newLines = _cloneDeep(allLines);\n\n\tnewLines.forEach(line => {\n\t\tif (line.type === 'chord') {\n\t\t\tline.model.allBars.forEach(bar => {\n\t\t\t\tbar.allChords.forEach(chord => {\n\t\t\t\t\tfn(chord);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n\treturn newLines;\n}\n\n/**\n * @param {ChordLine[]} chordLine\n * @param {Function} fn - to execute on each chord\n * @returns {ChordLine[]}\n */\nexport function forEachChordInChordLine(chordLine, fn) {\n\tconst newChordLine = _cloneDeep(chordLine);\n\n\tnewChordLine.allBars.forEach(bar => {\n\t\tbar.allChords.forEach(chord => {\n\t\t\tfn(chord);\n\t\t});\n\t});\n\n\treturn newChordLine;\n}\n","import _isArray from 'lodash/isArray';\n\nimport escapeHTML from '../core/dom/escapeHTML';\nimport stripTags from '../core/dom/stripTags';\n\nimport isChordLine from './isChordLine';\nimport isTimeSignature from './isTimeSignatureString';\n\nimport parseTimeSignature from './parseTimeSignature';\nimport parseChordLine from './parseChordLine';\n\nimport getAllChordsInSong from './getAllChordsInSong';\n\n/**\n * @typedef {Object} SongLine\n * @type {Object}\n * @property {String} string - original line in source file\n * @property {String} type - chord|text|time-signature|...\n * @property {ChordLine|TimeSignature} model\n */\n\n/**\n * @typedef {Object} Song\n * @type {Object}\n * @property {SongLine[]} allLines\n * @property {SongChord[]} allChords\n */\n\n/**\n * @typedef {Object} SongChord\n * @type {Object}\n * @property {ChordDef} model\n * @property {number} occurrences - number of times the chord appears in the song\n */\n\n/**\n * @type {string}\n */\nconst defaultTimeSignature = '4/4';\n\n/**\n * @param {string|array} song\n * @returns {Song}\n */\nexport default function parseSong(song) {\n\tconst songLines = (!_isArray(song)) ? song.split('\\n') : song;\n\n\tlet timeSignature = parseTimeSignature(defaultTimeSignature);\n\n\tconst allLines = songLines\n\t\t.map(escapeHTML)\n\t\t.map(stripTags)\n\t\t.map(string => ({ string }))\n\t\t.map(line => {\n\t\t\tif (isTimeSignature(line.string)) {\n\t\t\t\ttimeSignature = parseTimeSignature(line.string);\n\n\t\t\t\tline.type = 'time-signature';\n\t\t\t\tline.model = timeSignature;\n\n\t\t\t} else if (isChordLine(line.string)) {\n\t\t\t\ttry {\n\t\t\t\t\tline.type = 'chord';\n\t\t\t\t\tline.model = parseChordLine(line.string, { timeSignature });\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tline.type = 'text';\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tline.type = 'text';\n\t\t\t}\n\t\t\treturn line;\n\t\t});\n\n\n\tconst allChords = getAllChordsInSong(allLines);\n\n\treturn {\n\t\tallLines,\n\t\tallChords\n\t};\n}\n","import _findIndex from 'lodash/findIndex';\nimport _isEqual from 'lodash/isEqual';\nimport _cloneDeep from 'lodash/cloneDeep';\n\nimport { forEachChordInSong } from './helper/songs';\n\n/**\n * @param {SongLine[]} allLines\n * @returns {SongChord[]}\n */\nexport default function getAllChordsInSong(allLines) {\n\tconst allChords = [];\n\tlet i;\n\n\tforEachChordInSong(allLines, chord => {\n\t\ti = _findIndex(allChords, o => _isEqual(o.model, chord.model));\n\n\t\tif (i === -1) {\n\t\t\tallChords.push({\n\t\t\t\tmodel: _cloneDeep(chord.model),\n\t\t\t\toccurrences: 1\n\t\t\t});\n\t\t} else {\n\t\t\tallChords[i].occurrences++;\n\t\t}\n\t});\n\n\treturn allChords;\n}\n","import _cloneDeep from 'lodash/cloneDeep';\n\nconst allMasks = {\n\t0: {\n\t\t'': []\n\t},\n\n\t2: {\n\t\t'2': \t[3], \t\t// 'A '\n\t\t'11': \t[3, 2], \t// 'A B ',\n\t},\n\n\t3: {\n\t\t'3': \t[3], \t\t// 'A '\n\t\t'12': \t[2, 4], \t// 'A B '\n\t\t'21': \t[6, 0], \t// 'A C'\n\t\t'111': \t[2, 2, 0], \t// 'A B C'\n\t},\n\n\t4: {\n\t\t'4': \t[3], \t\t// 'A ',\n\t\t'13': \t[1, 4], \t// 'A B ',\n\t\t'22': \t[3, 2], \t// 'A B ',\n\t\t'31': [5, 0], \t// 'A B',\n\t\t'112': [1, 1, 3], \t// 'A B C ',\n\t\t'121': [1, 4, 0], \t// 'A B C',\n\t\t'211': \t[4, 1, 0], \t// 'A B C',\n\t\t'1111': [2, 2, 2], \t// 'A B C D',\n\t},\n};\n\nexport default function space(chordLineInput) {\n\tconst chordLine = _cloneDeep(chordLineInput);\n\n\tlet beatCount = 0;\n\tlet chordPattern = '';\n\tlet chordSpaces = [];\n\n\tchordLine.allBars.forEach(bar => {\n\t\tbeatCount = 0;\n\t\tchordPattern = '';\n\n\t\tbar.allChords.forEach(chord => {\n\t\t\tchordPattern += chord.duration.toString();\n\t\t\tbeatCount += chord.duration;\n\t\t});\n\n\t\tchordSpaces = allMasks[beatCount][chordPattern];\n\n\t\tfor (let i = 0; i < chordPattern.length; i++) {\n\t\t\tbar.allChords[i].spacesAfter = chordSpaces[i];\n\t\t}\n\t});\n\n\treturn chordLine;\n}\n","import _cloneDeep from 'lodash/cloneDeep';\n\nconst spacesAfterDefault = 2;\nconst emptyBeatSpaces = 1;\n\nexport default function space(chordLineInput, maxBeatsWidth) {\n\tconst chordLine = _cloneDeep(chordLineInput);\n\n\tlet beatMaxWidth;\n\n\tchordLine.allBars.forEach((bar, barIndex) => {\n\t\tbar.allChords.forEach(chord => {\n\t\t\tchord.spacesWithin = maxBeatsWidth[barIndex][chord.beat] - chord.symbol.length;\n\t\t\tchord.spacesAfter = 0;\n\n\t\t\tif (chord.beat !== bar.timeSignature.beatCount) {\n\t\t\t\tchord.spacesAfter = spacesAfterDefault;\n\n\t\t\t\tfor (let i = (chord.beat + 1); i < (chord.beat + chord.duration); i++) {\n\t\t\t\t\tbeatMaxWidth = maxBeatsWidth[barIndex][i];\n\n\t\t\t\t\tchord.spacesAfter += (beatMaxWidth)\n\t\t\t\t\t\t? beatMaxWidth\n\t\t\t\t\t\t: emptyBeatSpaces;\n\n\t\t\t\t\tif (i !== bar.timeSignature.beatCount && beatMaxWidth) {\n\t\t\t\t\t\tchord.spacesAfter += spacesAfterDefault;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\treturn chordLine;\n}\n","import _cloneDeep from 'lodash/cloneDeep';\nimport _invert from 'lodash/invert';\n\nconst notes = [\n\t'C',\n\t'C#',\n\t'D',\n\t'D#',\n\t'E',\n\t'F',\n\t'F#',\n\t'G',\n\t'G#',\n\t'A',\n\t'A#',\n\t'B',\n];\n\nconst sharpsToFlats = {\n\t'C#': 'Db',\n\t'D#': 'Eb',\n\t'F#': 'Gb',\n\t'G#': 'Ab',\n\t'A#': 'Bb',\n};\n\nconst flatsToSharps = _invert(sharpsToFlats);\n\nfunction convertToSharp(note) {\n\treturn flatsToSharps[note] || note;\n}\n\nfunction transposeNote(note, value, useFlats) {\n\tconst noteIndex = notes.indexOf(note);\n\tconst transposedIndex = noteIndex + value;\n\n\tconst octaves = Math.floor(transposedIndex / 12);\n\tconst correctedTransposedIndex = transposedIndex - (octaves * 12);\n\n\tconst transposed = notes[correctedTransposedIndex];\n\n\treturn (useFlats)\n\t\t? sharpsToFlats[transposed] || transposed\n\t\t: transposed;\n}\n\nexport default function transposeChord(chord, value, useFlats) {\n\tconst transposedChord = _cloneDeep(chord); // check immutability\n\n\tconst root = transposedChord.symbol.rootNote;\n\tconst bass = transposedChord.symbol.bassNote;\n\n\tconst rootSharp = convertToSharp(root);\n\ttransposedChord.symbol.rootNote = transposeNote(rootSharp, value, useFlats);\n\n\tif (bass) {\n\t\tconst bassSharp = convertToSharp(bass);\n\t\ttransposedChord.symbol.bassNote = transposeNote(bassSharp, value, useFlats);\n\t}\n\n\treturn transposedChord;\n}\n","import _cloneDeep from 'lodash/cloneDeep';\nimport transposeChord from './transposeChord';\nimport getMainAccidental from '../helpers/getMainAccidental';\n\nimport { forEachChordInSong } from '../../parser/helper/songs';\n\n/**\n * @param {SongLine[]} allLines\n * @param {SongChord[]} allChords\n * @param transposeValue\n * @param accidentalsType\n * @param harmonizeAccidentals\n * @returns {SongLine[]} - with added transposedModel property on each chord if needed\n */\nexport default function transposeSong(allLines, allChords, {\n\ttransposeValue = 0,\n\taccidentalsType = 'auto',\n\tharmonizeAccidentals = true\n} = {}) {\n\tlet transposed = _cloneDeep(allLines);\n\n\tlet accidental = (accidentalsType === 'auto')\n\t\t? getMainAccidental(allChords)\n\t\t: accidentalsType;\n\n\tif (harmonizeAccidentals || transposeValue !== 0) {\n\t\ttransposed = forEachChordInSong(transposed, (chord) => {\n\t\t\tchord.transposedModel = transposeChord(\n\t\t\t\tchord.model,\n\t\t\t\ttransposeValue,\n\t\t\t\taccidental === 'flat'\n\t\t\t);\n\t\t});\n\t}\n\n\treturn transposed;\n}\n","/**\n * Returns the most used accidental of a song.\n *\n * @param {SongChord[]} allChords\n * @returns {('flat'|'sharp')}\n */\nexport default function getMainAccidental(allChords) {\n\tlet rootNote = '';\n\tlet flatCount = 0;\n\tlet sharpCount = 0;\n\n\tallChords.forEach(chord => {\n\t\trootNote = chord.model.symbol.rootNote;\n\n\t\tif (rootNote.length === 2) {\n\t\t\tlet accidental = rootNote[1];\n\n\t\t\tif (accidental === 'b') {\n\t\t\t\tflatCount += chord.occurrences;\n\t\t\t} else {\n\t\t\t\tsharpCount += chord.occurrences;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn (flatCount > sharpCount) ? 'flat' : 'sharp';\n}\n","import _isFinite from 'lodash/isFinite';\n\nimport renderChord from './renderChordSymbol';\nimport barContentTpl from './tpl/barContent.hbs';\n\nconst space = ' ';\n\nconst defaultSpacesWithin = 0;\nconst defaultSpacesAfter = 2;\n\n/**\n * @param {Bar} bar\n * @returns {String} rendered html\n */\nexport default function renderBarContent(bar) {\n\tlet spacesWithin = 0;\n\tlet spacesAfter = 0;\n\n\tconst barContent = bar.allChords.reduce((rendering, chord) => {\n\t\tspacesWithin = _isFinite(chord.spacesWithin) ? chord.spacesWithin : defaultSpacesWithin;\n\t\tspacesAfter = _isFinite(chord.spacesAfter) ? chord.spacesAfter : defaultSpacesAfter;\n\n\t\trendering +=\n\t\t\trenderChord(chord.symbol) +\n\t\t\tspace.repeat(spacesWithin) +\n\t\t\tspace.repeat(spacesAfter);\n\n\t\treturn rendering;\n\t}, '');\n\n\treturn barContentTpl({ barContent });\n}\n","import chordSymbolTpl from './tpl/chordSymbol.hbs';\n\n/**\n * @param {String} chordSymbol\n * @returns {String} rendered html\n */\nexport default function renderChordSymbol (chordSymbol) {\n\treturn chordSymbolTpl({ chordSymbol });\n}\n","import { Chords } from 'momo-chords';\n\nconst chords = new Chords();\n\n/**\n * @param {ChordDef} chordDef\n * @returns {string}\n */\nexport default function(chordDef) {\n\treturn chords.print(chordDef.symbol);\n}","import getMaxBeatsWidth from '../spacers/chord/getMaxBeatsWidth';\n\nimport simpleChordSpacer from '../spacers/chord/simple';\nimport alignedChordSpacer from '../spacers/chord/aligned';\n\nimport transposeSong from '../modifiers/transposeSong';\nimport { forEachChordInSong } from '../../parser/helper/songs';\n\nimport renderChordLine from './renderChordLine';\nimport renderTextLine from './renderTextLine';\n\nimport songTpl from './tpl/song.hbs';\nimport getChordSymbol from '../helpers/getChordSymbol';\n\n/**\n * @param {Song} parsedSong\n * @param {Boolean} alignBars\n * @param {Number} transposeValue\n * @param {('auto'|'flat'|'sharp')} accidentalsType\n * @param {Boolean} harmonizeAccidentals\n * @returns {String} rendered HTML\n */\nexport default function renderSong(parsedSong, {\n\talignBars = false,\n\ttransposeValue = 0,\n\taccidentalsType = 'auto',\n\tharmonizeAccidentals = true\n} = {}) {\n\tlet { allLines, allChords } = parsedSong;\n\n\tallLines = transposeSong(allLines, allChords, {\n\t\ttransposeValue,\n\t\taccidentalsType,\n\t\tharmonizeAccidentals\n\t});\n\tallLines = forEachChordInSong(allLines, (chord) => {\n\t\tchord.symbol = (chord.transposedModel)\n\t\t\t? getChordSymbol(chord.transposedModel)\n\t\t\t: getChordSymbol(chord.model);\n\t});\n\n\tconst maxBeatsWidth = getMaxBeatsWidth(allLines);\n\n\tconst song = allLines\n\t\t.map(line => {\n\t\t\tif (line.type === 'chord') {\n\t\t\t\tconst spaced = (alignBars)\n\t\t\t\t\t? alignedChordSpacer(line.model, maxBeatsWidth)\n\t\t\t\t\t: simpleChordSpacer(line.model);\n\n\t\t\t\tline.rendered = renderChordLine(spaced);\n\n\t\t\t} else if (line.type === 'text') {\n\t\t\t\tline.rendered = renderTextLine(line.string);\n\t\t\t}\n\t\t\treturn line;\n\t\t})\n\t\t.filter(line => line.rendered)\n\t\t.map(line => line.rendered)\n\t\t.join('\\n');\n\n\treturn songTpl({ song });\n}\n\n\n","/**\n * @param {SongLine[]} allLines\n * @returns {Array}\n */\nexport default function getMaxBeatsWidth(allLines) {\n\tconst maxBeatsWidth = [];\n\n\tallLines\n\t\t.filter(line => line.type === 'chord')\n\t\t.forEach(line => {\n\t\t\tline.model.allBars.forEach((bar, barIndex) => {\n\t\t\t\tif (!maxBeatsWidth[barIndex]) {\n\t\t\t\t\tmaxBeatsWidth[barIndex] = {};\n\n\t\t\t\t\tfor (let i = 1; i <= bar.timeSignature.beatCount; i++) {\n\t\t\t\t\t\tmaxBeatsWidth[barIndex][i] = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbar.allChords.forEach(chord => {\n\t\t\t\t\tmaxBeatsWidth[barIndex][chord.beat] = Math.max(\n\t\t\t\t\t\tmaxBeatsWidth[barIndex][chord.beat],\n\t\t\t\t\t\tchord.symbol.length\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\treturn maxBeatsWidth;\n}\n","import chordLineTpl from './tpl/chordLine.hbs';\n\nimport renderBarContent from './renderBarContent';\nimport barSeparatorTpl from './tpl/barSeparator.hbs';\n\n/**\n * @param {ChordLine} chordLineModel\n * @returns {String} rendered html\n */\nexport default function renderChordLine(chordLineModel) {\n\tconst allBarsRendered = chordLineModel.allBars\n\t\t.map(bar => renderBarContent(bar));\n\n\tconst barSeparator = barSeparatorTpl();\n\n\tconst chordLine = barSeparator +\n\t\tallBarsRendered.join(barSeparator) +\n\t\tbarSeparator;\n\n\treturn chordLineTpl({ chordLine });\n}\n","import textLineTpl from './tpl/textLine.hbs';\nimport emptyLineTpl from './tpl/emptyLine.hbs';\n\n/**\n * @param {String} textLine\n * @returns {String} rendered html\n */\nexport default function render(textLine) {\n\treturn (textLine === '')\n\t\t? emptyLineTpl()\n\t\t: textLineTpl({ textLine });\n}\n","import { renderSong as renderSongUcc, parseSong } from '@touffi/ucc';\n\nexport default function renderSong(songTxt, renderOptions) {\n\tconst parsed = parseSong(songTxt);\n\treturn renderSongUcc(parsed, renderOptions);\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 renderSong from '../../core/renderSong';\n\nfunction SongRenderer(props) {\n\tconst {\n\t\tcontent\n\t} = props;\n\n\tconst renderOptions = _pick(props, [\n\t\t'alignBars',\n\t\t'harmonizeAccidentals',\n\t\t'accidentalsType',\n\t\t'transposeValue'\n\t]);\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n\nSongRenderer.propTypes = {\n\tcontent: PropTypes.string\n};\n\nSongRenderer.defaultProps = {\n\tcontent: ''\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(\n\tstate => ({\n\t\taccidentalsType: getOptionValue(state, 'rendering', 'preferredAccidentals'),\n\t\talignBars: getOptionValue(state, 'rendering', 'alignBars'),\n\t\tharmonizeAccidentals: getOptionValue(state, 'rendering', 'harmonizeAccidentals'),\n\t\ttransposeValue: getOptionValue(state, 'rendering', 'transposeValue'),\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\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';\nimport { nodes, marks } from 'prosemirror-schema-basic';\n\nconst editorSchema = new Schema({\n\tnodes: nodes,\n\tmarks: marks\n});\n\nexport default editorSchema;","/**\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\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\n\nfunction createEditorState(editorContent) {\n\treturn EditorState.create({\n\t\tdoc: pmDOMParser.fromSchema(editorSchema).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 } = this.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 selectedFileId && (!editorView.current || (previousFileId !== selectedFileId));\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(editorState, updateFile, selectedFileId);\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\n\t\t} else if (isEditorOrphan()) {\n\t\t\tdestroyEditor();\n\t\t}\n\t});\n\n\treturn (\n\t\t
\n\t);\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\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 EditorPreview from '../../../songRenderers/editorPreview/_components/EditorPreview';\nimport ProseMirrorEditorView from '../prosemirror/ProsemirrorEditorView';\n\nfunction EditorLayout(props) {\n\tconst { selectedFile, updateFile } = props;\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n\nEditorLayout.propTypes = {\n\tselectedFile: PropTypes.object,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default EditorLayout;\n","import './ExportPreview.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction ExportPreview(props) {\n\tconst { selectedFile } = props;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n\nExportPreview.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n};\n\nexport default ExportPreview;\n","import './PlayRenderer.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction PlayRenderer(props) {\n\tconst { selectedFile } = props;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n\nPlayRenderer.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n};\n\nexport default PlayRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport escapeHTML from '../../../core/escapeHTML';\n\nfunction Page(props) {\n\tconst { pageHeader, allColumnsLines, documentSize, documentMargins, printFontSize } = props;\n\n\tconst allSectionsRendered = allColumnsLines.map((columnLines, index) => {\n\t\tconst columnLinesTxt = columnLines.join('\\n');\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t});\n\n\tconst pageClasses = ['printPreview-page'];\n\tpageClasses.push('printPreview-page--' + documentSize);\n\tpageClasses.push('printPreview-page--font' + printFontSize);\n\n\tconst pageContentWrapperClasses = ['printPreview-pageContentWrapper'];\n\tpageContentWrapperClasses.push('printPreview-pageContentWrapper--padding' + documentMargins);\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(\n\t\tPropTypes.arrayOf(\n\t\t\tPropTypes.string\n\t\t)\n\t),\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tprintFontSize: 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 (\n\t\t
\n\t\t\t{title}\n\t\t
\n\t);\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: 'ucc-empty-line',\n\tchordLine: 'ucc-chord-line',\n\ttextLine: 'ucc-text-line',\n};\n\n\n/**\n * @param {Object[]} allLinesWithHeight\n * @param {String} allLinesWithHeight.content\n * @param {Number} allLinesWithHeight.height\n * @param {Number} columnsCount\n * @param {Number} firstPageHeight\n * @param {Number} normalPageHeight\n * @param {Boolean} columnBreakOnParagraph\n * @param {Boolean} noEmptyLinesOnColumnStart\n * @param {Boolean} noOrphanTextLine\n * @returns {Array} array of pages, as array of columns\n */\nexport default function mapLinesToColumns(allLinesWithHeight, {\n\tcolumnsCount,\n\tfirstPageHeight,\n\tnormalPageHeight,\n\tcolumnBreakOnParagraph,\n\tnoEmptyLinesOnColumnStart = true,\n\tnoOrphanTextLine = true,\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\n\t\t\tif (shouldRenderLine(layout, line, buffer, noEmptyLinesOnColumnStart)) {\n\t\t\t\tbuffer.push(line);\n\t\t\t\tbufferHeight += line.height;\n\t\t\t}\n\n\t\t\tif (buffer.length > 0 && isBreakable(\n\t\t\t\tline,\n\t\t\t\tallLinesWithHeight[lineIndex + 1],\n\t\t\t\t{ noOrphanTextLine, columnBreakOnParagraph }\n\t\t\t)) {\n\t\t\t\tif (layout.fitsOnCurrentColumn(bufferHeight)) {\n\t\t\t\t\tlayout.insert(buffer);\n\n\t\t\t\t} else if (layout.fitsOnNextColumn(bufferHeight)) {\n\t\t\t\t\tlayout.insertOnNextColumn(buffer);\n\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\t&& buffer.length === 0\n\t\t&& noEmptyLinesOnColumnStart === true\n\t);\n}\n\nfunction isBreakable(currentLine, nextLine, { noOrphanTextLine, columnBreakOnParagraph }) {\n\tif (isEmptyLine(currentLine) || !nextLine) {\n\t\treturn true;\n\t}\n\n\tconst wouldProduceOrphanTextLine = isChordLine(currentLine) && isTextLine(nextLine);\n\tif (noOrphanTextLine === true && wouldProduceOrphanTextLine) {\n\t\treturn false;\n\t}\n\n\tconst isEndOfParagraph = isEmptyLine(nextLine);\n\tif (columnBreakOnParagraph === true && !isEndOfParagraph) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction isEmptyLine(line) {\n\treturn hasClass(line.content, cssClasses.emptyLine);\n}\n\nfunction isChordLine(line) {\n\treturn hasClass(line.content, cssClasses.chordLine);\n}\n\nfunction isTextLine(line) {\n\treturn hasClass(line.content, cssClasses.textLine);\n}\n\nfunction hasClass(line, className) {\n\treturn line.indexOf(className) > -1;\n}\n\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) ? firstPageHeight : 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 = (pageIndex === 0 && columnIndex < columnsCount && firstPageHeight)\n\t\t\t\t? firstPageHeight\n\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\n","import './getDimensionsFromDom.scss';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport default function getDimensionsFromDom(component, measuringFn) {\n\tconst container = document.createElement('div');\n\tcontainer.classList.add('measuring-node');\n\tdocument.body.appendChild(container);\n\n\treturn new Promise(resolve => {\n\t\tReactDOM.render(
{component}
, container, () => {\n\n\t\t\tconst measure = measuringFn(container);\n\n\t\t\tReactDOM.unmountComponentAtNode(container);\n\t\t\tcontainer.parentNode.removeChild(container);\n\n\t\t\tresolve(measure);\n\t\t});\n\t});\n}\n\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: '.ucc-line',\n};\n\nexport default async function getAllLinesHeight(allLines, {\n\tcolumnsCount,\n\tdocumentSize,\n\tdocumentMargins,\n\tprintFontSize\n}) {\n\tconst component = ;\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(title, {\n\tcolumnsCount,\n\tdocumentSize,\n\tdocumentMargins,\n\tprintFontSize\n}) {\n\tconst component = }\n\t\tallColumnsLines={padColumns(columnsCount)}\n\t\tdocumentSize={documentSize}\n\t\tdocumentMargins={documentMargins}\n\t\tprintFontSize={printFontSize}\n\t/>;\n\n\tconst measuringFn = (container) => {\n\t\tconst pageContent = container.querySelector('.printPreview-pageContent');\n\t\tconst pageColumnWrapper = container.querySelector('.printPreview-pageColumnWrapper');\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\n\nfunction AllPages(props) {\n\tconst [ allPagesColumns, setAllPagesColumns ] = useState([]);\n\n\tconst {\n\t\ttitle,\n\t\tallLines,\n\t\tcolumnsCount,\n\t\tcolumnBreakOnParagraph,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tprintFontSize,\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\tprintFontSize\n\t\t\t};\n\n\t\t\tconst allLinesHeight = await getAllLinesHeight(allLines, pageOptions);\n\n\t\t\tconst { normalPageHeight, firstPageHeight } = await getPagesHeight(title, pageOptions);\n\n\t\t\tconst allLinesWithHeight = allLines.map((line, index) => ({\n\t\t\t\tcontent: line,\n\t\t\t\theight: allLinesHeight[index]\n\t\t\t}));\n\n\t\t\tconst mapped = mapLinesToColumns(allLinesWithHeight, {\n\t\t\t\tcolumnsCount,\n\t\t\t\tcolumnBreakOnParagraph,\n\t\t\t\tnormalPageHeight,\n\t\t\t\tfirstPageHeight,\n\t\t\t});\n\n\t\t\tsetAllPagesColumns(mapped);\n\t\t};\n\t\tgetDimensions();\n\t}, [\n\t\tallLines,\n\t\ttitle,\n\t\tcolumnsCount,\n\t\tcolumnBreakOnParagraph,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tprintFontSize,\n\t]);\n\n\tconst allPagesRendered = allPagesColumns.map((pageColumns, index) => {\n\t\treturn : null}\n\t\t\tallColumnsLines={padColumns(columnsCount, pageColumns)}\n\t\t\tdocumentSize={documentSize}\n\t\t\tdocumentMargins={documentMargins}\n\t\t\tprintFontSize={printFontSize}\n\t\t/>;\n\t});\n\n\treturn (\n\t\t\n\t\t\t{allPagesRendered}\n\t\t\n\t);\n}\n\nAllPages.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\tallLines: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tcolumnBreakOnParagraph: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tprintFontSize: 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 renderSong from '../../../core/renderSong';\nimport AllPages from './AllPages';\n\n\nfunction PrintPreview(props) {\n\tconst { selectedFile } = props;\n\n\tconst renderOptions = _pick(props, [\n\t\t'alignBars',\n\t\t'harmonizeAccidentals',\n\t\t'accidentalsType',\n\t\t'transposeValue',\n\t]);\n\n\tconst allLines = renderSong(selectedFile.content, renderOptions).split('\\n');\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n}\nPrintPreview.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tcolumnBreakOnParagraph: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tprintFontSize: PropTypes.number.isRequired,\n};\n\nexport default PrintPreview;\n\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../../db/options/selectors';\n\nimport PrintPreview from '../_components/PrintPreview';\n\nexport default connect(\n\tstate => ({\n\t\tcolumnsCount: getOptionValue(state, 'rendering', 'columnsCount'),\n\t\tcolumnBreakOnParagraph: getOptionValue(state, 'rendering', 'columnBreakOnParagraph'),\n\t\tdocumentSize: getOptionValue(state, 'rendering', 'documentSize'),\n\t\tdocumentMargins: getOptionValue(state, 'rendering', 'documentMargins'),\n\t\taccidentalsType: getOptionValue(state, 'rendering', 'preferredAccidentals'),\n\t\talignBars: getOptionValue(state, 'rendering', 'alignBars'),\n\t\tharmonizeAccidentals: getOptionValue(state, 'rendering', 'harmonizeAccidentals'),\n\t\ttransposeValue: getOptionValue(state, 'rendering', 'transposeValue'),\n\t\tprintFontSize: getOptionValue(state, 'rendering', 'printFontSize'),\n\t})\n)(PrintPreview);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport EditorLayout from '../songEditor/_components/EditorLayout';\nimport ExportPreview from '../../songRenderers/exportPreview/_components/ExportPreview';\nimport PlayRenderer from '../../songRenderers/playRenderer/_components/PlayRenderer';\nimport PrintPreview from '../../songRenderers/printPreview/_containers/PrintPreview';\n\nfunction Editor(props) {\n\tconst { editorMode } = props;\n\n\tswitch (editorMode) {\n\t\tcase 'edit': return ;\n\t\tcase 'play': return ;\n\t\tcase 'print': return ;\n\t\tcase 'export': return ;\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\tstate => ({\n\t\tselectedFile: getOne(state, getSelectedId(state)) || {},\n\t\teditorMode: getEditorMode(state),\n\t}),\n\n\t{\n\t\tupdateFile\n\t}\n\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 = [\n\t\t'optionsPanel',\n\t\t'optionsPanel-' + id\n\t];\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 = !(nonInteractableWidgets.includes(widgetId)) && !(nonInteractableWidgets.includes(groupWidgetId));\n\n\t\t\t\t\t\treturn renderWidget(\n\t\t\t\t\t\t\tgroupWidgetId,\n\t\t\t\t\t\t\tgroupWidget,\n\t\t\t\t\t\t\tisGroupWidgetInteractable\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\tGroupComponent = getEntryComponent(widget.type);\n\t\t\t\tisGroupInteractable = !(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\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 (\n\t\t
\n\t\t\t{renderedWidgets}\n\t\t
\n\t);\n}\n\nOptionsPanel.propTypes = {\n\tid: PropTypes.string.isRequired,\n\tallWidgets: PropTypes.object.isRequired,\n\tnonInteractableWidgets: PropTypes.arrayOf(PropTypes.string).isRequired,\n\thiddenWidgets: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tsetOption: PropTypes.func.isRequired,\n\tgetEntryComponent: PropTypes.func.isRequired,\n};\n\nexport default OptionsPanel;\n","import './OptionsGroup.scss';\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction OptionsGroup(props) {\n\tconst [ isOpened, setIsOpened ] = useState(props.isOpened);\n\n\tconst {\n\t\tisInteractable,\n\t\ticon,\n\t\tlabel\n\t} = props;\n\n\tconst classNames = ['sb-optionsGroup'];\n\tif (!shouldBeInteractable()) {\n\t\tclassNames.push('sb-optionsGroup-isNotInteractable');\n\t}\n\n\tif (shouldBeClosed()) {\n\t\tsetIsOpened(false);\n\t}\n\n\tfunction shouldBeInteractable() {\n\t\treturn isInteractable && props.children && props.children.length > 0;\n\t}\n\n\tfunction shouldBeClosed() {\n\t\treturn isOpened && (!props.children || props.children.length === 0);\n\t}\n\n\tfunction handleClick() {\n\t\tsetIsOpened(!isOpened);\n\t}\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t {label}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t{isOpened && props.children}\n\t\t\t
\n\t\t\n\t);\n}\n\nOptionsGroup.propTypes = {\n\tisOpened: PropTypes.bool,\n\tisInteractable: PropTypes.bool.isRequired,\n\ticon: PropTypes.string.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tchildren: PropTypes.arrayOf(PropTypes.element),\n};\n\nOptionsGroup.defaultProps = {\n\tisOpened: false,\n};\n\nexport default OptionsGroup;\n","import './Select.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction SelectChoice(props) {\n\tconst {\n\t\tisSelected,\n\t\tlabel,\n\t\tonClick\n\t} = 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\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t{isSelected && checkIcon}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{label}\n\t\t\t
\n\t\t\n\t);\n}\n\nSelectChoice.propTypes = {\n\tisSelected: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tonClick: PropTypes.func.isRequired,\n};\n\nexport default React.memo(SelectChoice);\n\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)\n\t\t? null\n\t\t: (\n\t\t\t
\n\t\t\t\t{allChoices.map(choice =>\n\t\t\t\t\t setOption(optionContext, optionKey, choice.value)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t
\n\t\t);\n\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t
{label}
\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(\n\t\t\toptionContext,\n\t\t\toptionKey,\n\t\t\tNumber.parseInt(e.target.value)\n\t\t);\n\t}\n\n\tconst valueDisplay = (optionValue > 0 && showPlusSymbol)\n\t\t? '+' + optionValue\n\t\t: 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\t(optionValue === 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\n\nfunction getEntryComponent(type) {\n\tswitch (type) {\n\t\tcase 'optionsGroup': return OptionsGroup;\n\t\tcase 'select': return Select;\n\t\tcase 'slider': return Slider;\n\t\tcase 'toggle': return 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\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\n","/* eslint-disable max-lines */\nexport default {\n\twidgetsOrder: [\n\t\t'style',\n\t\t'alignBars',\n\n\t\t'layout',\n\t\t'helpers',\n\t\t'chords',\n\t\t'format',\n\t],\n\n\tallWidgets: {\n\t\tstyle: {\n\t\t\tlabel: 'Rendering style',\n\t\t\ttype: 'select',\n\t\t\ttypeOptions: {\n\t\t\t\tallChoices: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'styleUcc',\n\t\t\t\t\t\tlabel: 'UCC',\n\t\t\t\t\t\tvalue: 'ucc'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'styleChordpro',\n\t\t\t\t\t\tlabel: 'ChordPro',\n\t\t\t\t\t\tvalue: 'chordpro'\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\toption: {\n\t\t\t\tcontext: 'rendering',\n\t\t\t\tkey: 'style'\n\t\t\t},\n\t\t},\n\t\talignBars: {\n\t\t\tlabel: 'Align bars',\n\t\t\ttype: 'toggle',\n\t\t\toption: {\n\t\t\t\tcontext: 'rendering',\n\t\t\t\tkey: 'alignBars'\n\t\t\t},\n\t\t},\n\n\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'documentSize',\n\t\t\t\t'documentMargins',\n\t\t\t\t'columnsCount',\n\t\t\t\t'columnBreakOnParagraph',\n\t\t\t],\n\t\t\tallGroupWidgets: {\n\t\t\t\tdocumentSize: {\n\t\t\t\t\tlabel: 'Document size',\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: 'documentSizeA4',\n\t\t\t\t\t\t\t\tlabel: 'A4',\n\t\t\t\t\t\t\t\tvalue: 'a4'\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: 'documentSizeBooxMax2Pro',\n\t\t\t\t\t\t\t\tlabel: 'Boox Max 2 Pro',\n\t\t\t\t\t\t\t\tvalue: 'booxmax2pro'\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: 'rendering',\n\t\t\t\t\t\tkey: 'documentSize'\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: 'rendering',\n\t\t\t\t\t\tkey: 'documentMargins'\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: 3\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'columnsCount'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tcolumnBreakOnParagraph: {\n\t\t\t\t\tlabel: 'Break on paragraph',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'columnBreakOnParagraph'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\n\t\thelpers: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Helpers',\n\t\t\ticon: 'remove_red_eye',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'showChords',\n\t\t\t\t'instrument',\n\t\t\t\t'showStrummingPattern',\n\t\t\t],\n\n\t\t\tallGroupWidgets: {\n\t\t\t\tshowChords: {\n\t\t\t\t\tlabel: 'Show chords diagrams',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'showChords'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tinstrument: {\n\t\t\t\t\tlabel: 'Instrument',\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: 'instrumentGuitar',\n\t\t\t\t\t\t\t\tlabel: 'Guitar',\n\t\t\t\t\t\t\t\tvalue: 'guitar'\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: 'instrumentUkulele',\n\t\t\t\t\t\t\t\tlabel: 'Ukulele',\n\t\t\t\t\t\t\t\tvalue: 'ukulele'\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: 'instrumentMandolin',\n\t\t\t\t\t\t\t\tlabel: 'Mandolin',\n\t\t\t\t\t\t\t\tvalue: 'mandolin'\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: 'instrumentPiano',\n\t\t\t\t\t\t\t\tlabel: 'Piano',\n\t\t\t\t\t\t\t\tvalue: 'piano'\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: 'rendering',\n\t\t\t\t\t\tkey: 'instrument'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tshowStrummingPattern: {\n\t\t\t\t\tlabel: 'Show strumming pattern',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'showStrummingPattern'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\n\t\tchords: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Chords',\n\t\t\ticon: 'music_note',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'transposeValue',\n\t\t\t\t'simplifyChords',\n\t\t\t\t'capoPosition',\n\t\t\t\t'harmonizeAccidentals',\n\t\t\t\t'preferredAccidentals',\n\t\t\t],\n\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: 'rendering',\n\t\t\t\t\t\tkey: 'transposeValue'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tsimplifyChords: {\n\t\t\t\t\tlabel: 'Simplify chords',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'simplifyChords'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tcapoPosition: {\n\t\t\t\t\tlabel: 'Add capo on fret',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\tmax: 11,\n\t\t\t\t\t\tshowPlusSymbol: false,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'capoPosition'\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: 'rendering',\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: 'Sharp (#)',\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: 'Flats (b)',\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: 'rendering',\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\n\t\tformat: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Format',\n\t\t\ticon: 'format_size',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'fontSize',\n\t\t\t\t'printFontSize',\n\t\t\t\t'fontStyle',\n\t\t\t\t'chordsColor',\n\t\t\t\t'highlightChords',\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: 'rendering',\n\t\t\t\t\t\tkey: 'fontSize'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tprintFontSize: {\n\t\t\t\t\tlabel: 'Font size (print)',\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: 'rendering',\n\t\t\t\t\t\tkey: 'printFontSize'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tfontStyle: {\n\t\t\t\t\tlabel: 'Font style',\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: 'fontStyleRoboto',\n\t\t\t\t\t\t\t\tlabel: 'Roboto',\n\t\t\t\t\t\t\t\tvalue: 'roboto'\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: 'rendering',\n\t\t\t\t\t\tkey: 'fontStyle'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tchordsColor: {\n\t\t\t\t\tlabel: 'Chords color',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColor',\n\t\t\t\t\t\t\t\tlabel: 'Black',\n\t\t\t\t\t\t\t\tvalue: 'black'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColorRed',\n\t\t\t\t\t\t\t\tlabel: 'Red',\n\t\t\t\t\t\t\t\tvalue: 'red'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'chordsColor'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\thighlightChords: {\n\t\t\t\t\tlabel: 'Highlight Chords',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'highlightChords'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t},\n};\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../db/options/selectors';\nimport { setOptionValue } from '../../db/options/actions';\n\nexport default function OptionsPanelFactory(allWidgets, getNonInteractableWidgets, getHiddenWidgets, component) {\n\treturn connect(\n\t\tstate => {\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\tif (widget.type === 'optionsGroup') {\n\t\t\t\t\twidget.groupWidgetsOrder.forEach(groupWidgetId => {\n\t\t\t\t\t\tgroupWidget = widget.allGroupWidgets[groupWidgetId];\n\n\t\t\t\t\t\tstateToProps[groupWidget.option.key] = getOptionValue(state, groupWidget.option.context, groupWidget.option.key);\n\t\t\t\t\t});\n\n\t\t\t\t} else {\n\t\t\t\t\tstateToProps[widget.option.key] = getOptionValue(state, widget.option.context, widget.option.key);\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\n\t)(component);\n}\n\n","import Rendering from '../_components/Rendering';\nimport OptionsPanelFactory from '../../_containers/OptionsPanelFactory';\n\nimport allWidgets from '../allWidgets';\nimport { getNonInteractableWidgets, getHiddenWidgets } from '../_state/selectors';\n\nexport default OptionsPanelFactory(allWidgets, getNonInteractableWidgets, getHiddenWidgets, Rendering);\n","import { getEditorMode } from '../../../ui/layout/app/_state/selectors';\nimport { getOptionValue } from '../../../db/options/selectors';\n\nexport const getNonInteractableWidgets = (state) => {\n\tconst nonInteractableWidgets = [];\n\n\tconst editorMode = getEditorMode(state);\n\n\tswitch (editorMode) {\n\t\tcase 'edit': {\n\t\t\tnonInteractableWidgets.push('alignBars');\n\t\t\tnonInteractableWidgets.push('helpers');\n\t\t\tnonInteractableWidgets.push('layout');\n\t\t\tnonInteractableWidgets.push('style');\n\t\t\tbreak;\n\t\t}\n\t\tcase 'play': {\n\t\t\tnonInteractableWidgets.push('documentSize');\n\t\t\tnonInteractableWidgets.push('documentMargins');\n\t\t\tbreak;\n\t\t}\n\t\tcase 'print': {\n\t\t\tbreak;\n\t\t}\n\t\tcase 'export': {\n\t\t\tnonInteractableWidgets.push('format');\n\t\t\tnonInteractableWidgets.push('layout');\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst style = getOptionValue(state, 'rendering', 'style');\n\tif (style !== 'ucc') {\n\t\tnonInteractableWidgets.push('alignBars');\n\t}\n\n\treturn nonInteractableWidgets;\n};\n\nexport const getHiddenWidgets = (state) => {\n\tconst nonVisibleWidgets = [];\n\n\tconst editorMode = getEditorMode(state);\n\n\tconst showChords = getOptionValue(state, 'rendering', 'showChords');\n\tconst harmonizeAccidentals = getOptionValue(state, 'rendering', 'harmonizeAccidentals');\n\n\tif (!showChords) {\n\t\tnonVisibleWidgets.push('instrument');\n\t}\n\tif (!harmonizeAccidentals) {\n\t\tnonVisibleWidgets.push('preferredAccidentals');\n\t}\n\n\tif (editorMode === 'print') {\n\t\tnonVisibleWidgets.push('fontSize');\n\t} else {\n\t\tnonVisibleWidgets.push('printFontSize');\n\t}\n\n\treturn nonVisibleWidgets;\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)\n\t\t\t.then(controller => {\n\t\t\t\treturn renderController(controller);\n\t\t\t});\n\t}\n};\n\n\n","import React from 'react';\nimport ReactDom from 'react-dom';\nimport { Provider } from 'react-redux';\n\nimport { getStore } from './state/store';\n\nimport ErrorBoundary from './ui/_components/ErrorBoundary';\n\nexport default function renderController(Controller) {\n\tReactDom.render(\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t,\n\t\tdocument.getElementById('app')\n\t);\n}\n","import '../scss/styles.scss';\n\nimport { createStore } from './state/store';\nimport router from './router';\n\nexport default function run() {\n\tcreateStore();\n\n\treturn router.navigateTo('/editor');\n}\n","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"

\"\n + ((stack1 = container.lambda((depth0 != null ? depth0.textLine : depth0), depth0)) != null ? stack1 : \"\")\n + \"

\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"\"\n + container.escapeExpression(container.lambda((depth0 != null ? depth0.chordSymbol : depth0), depth0))\n + \"\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"

\"\n + ((stack1 = container.lambda((depth0 != null ? depth0.chordLine : depth0), depth0)) != null ? stack1 : \"\")\n + \"

\";\n},\"useData\":true});"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/main.dbae970e9fc0ba07e9ca.js b/docs/main.dbae970e9fc0ba07e9ca.js new file mode 100644 index 00000000..c54b4fed --- /dev/null +++ b/docs/main.dbae970e9fc0ba07e9ca.js @@ -0,0 +1,2 @@ +!function(e){function t(t){for(var r,i,l=t[0],c=t[1],u=t[2],p=0,d=[];p= 4.0.0"],main:function(e,t,n,r,a){return'

 

'},useData:!0})},"2ywC":function(e,t,n){},"3Z8G":function(e,t,n){},"6/UV":function(e,t,n){},"6EPN":function(e,t,n){},"6joI":function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){var o;return''+(null!=(o=e.lambda(null!=t?t.barContent:t,t))?o:"")+""},useData:!0})},"8PSE":function(e,t,n){},"9hQf":function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){var o;return null!=(o=e.lambda(null!=t?t.song:t,t))?o:""},useData:!0})},BC9S:function(e,t,n){},Ewt9:function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){return'|'},useData:!0})},IA7u:function(e,t,n){},JeH2:function(e,t,n){},PuEf:function(e,t,n){},Sdr1:function(e,t,n){},UUiC:function(e,t,n){},Vtdi:function(e,t,n){"use strict";n.r(t);n("u0UJ");var r=n("P4Tr"),a=n.n(r),o=n("ANjH"),i=function(){try{var e=localStorage.getItem("state");if(!e)return;return JSON.parse(e)}catch(e){return}},l=function(e){try{var t=JSON.stringify(e);localStorage.setItem("state",t)}catch(e){}},c=(n("pNMO"),n("ma9I"),n("TeQF"),n("QWBl"),n("eoL8"),n("5DmW"),n("tkto"),n("FZtP"),"db/files/Create"),u="db/files/Update",s="db/files/Delete";function p(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:f,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case c:return function(e,t){var n=t.payload,r=n.id,a=n.title,o=n.content,i=p({},e.allFiles);return i[r]={id:r,title:a,content:o},p({},e,{allFiles:i})}(e,t);case u:return function(e,t){var n=t.payload,r=n.id,a=n.title,o=n.content;if(!a&&!o||!e.allFiles[r])return e;var i=p({},e.allFiles);return i[r]=p({},i[r]),a&&(i[r].title=a),o&&(i[r].content=o),p({},e,{allFiles:i})}(e,t);case s:return function(e,t){var n=t.payload.id;if(!n||!e.allFiles[n])return e;var r=p({},e.allFiles);return delete r[n],p({},e,{allFiles:r})}(e,t)}return e},options:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case"db/options/setOptionValue":var n=t.payload,r=n.context,a=n.key,o=n.value;if(!e[r]||!e[r][a])return e;var i=m({},e[r]);i[a]=m({},i[a],{value:o});var l=m({},e);return l[r]=i,l}return e}}),v="fileManager/select",b="fileManager/enableRename";function E(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:x,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case S:return N({},e,{isLeftBarCollapsed:!e.isLeftBarCollapsed});case w:return N({},e,{isRightBarCollapsed:!e.isRightBarCollapsed});case R:return N({},e,{editorMode:t.payload.mode})}return e}}),q=Object(o.b)({layout:k}),T=Object(o.b)({db:y,fileManager:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:O,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case c:var n=t.payload.id;return E({},e,{selected:n,renamed:n});case u:return E({},e,{renamed:""});case s:return E({},e,{selected:"",renamed:""});case v:var r=t.payload.id;return E({},e,{selected:r,renamed:r===e.renamed?r:""});case b:return E({},e,{renamed:t.payload.id})}return e},ui:q}),B={db:{options:{rendering:{documentSize:{value:"a4",default:"a4",resetOnSongChange:!1},documentMargins:{value:3,default:3,resetOnSongChange:!1},columnsCount:{value:1,default:1,resetOnSongChange:!1},columnBreakOnParagraph:{value:!0,default:!0,resetOnSongChange:!1},style:{value:"ucc",default:"ucc",resetOnSongChange:!1},alignBars:{value:!0,default:!0,resetOnSongChange:!1},showChords:{value:!0,default:!0,resetOnSongChange:!1},instrument:{value:"guitar",default:"guitar",resetOnSongChange:!1},showStrummingPattern:{value:!0,default:!0,resetOnSongChange:!1},transposeValue:{value:0,default:0,resetOnSongChange:!0},simplifyChords:{value:!1,default:!1,resetOnSongChange:!0},capoPosition:{value:0,default:0,resetOnSongChange:!0},harmonizeAccidentals:{value:!0,default:!0,resetOnSongChange:!0},preferredAccidentals:{value:"auto",default:"auto",resetOnSongChange:!0},fontSize:{value:0,default:0,resetOnSongChange:!1},printFontSize:{value:0,default:0,resetOnSongChange:!1},fontStyle:{value:"roboto",default:"roboto",resetOnSongChange:!1},chordsColor:{value:"black",default:"black",resetOnSongChange:!1},highlightChords:{value:!0,default:!0,resetOnSongChange:!1}}}}},F=[];var M=n("d/CZ"),z=n("q1tI"),_=n.n(z),L=n("i8i4"),A=n.n(L),I=n("/MKj"),D=(n("4Brf"),n("0oug"),n("4mDm"),n("DQNa"),n("uL8W"),n("NBAS"),n("ExoC"),n("07d7"),n("JfAA"),n("PKPk"),n("3bBZ"),n("WoyN"),n("17x9")),W=n.n(D);function V(e){return(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})(e)}function G(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.title,r=t.content;if(!e)throw new TypeError("Cannot update a file without an id");return Z(u,{id:e,title:n,content:r})},be=n("3WF5"),Ee=n.n(be),Ce=n("Y+p1"),Oe=n.n(Ce),Se=n("xweI"),we=n.n(Se),Re=n("G4qV"),Ne=Object(Re.a)(Re.b,Oe.a)(function(e){return Ee()(e.db.files.allFiles,function(e){return{title:e.title,id:e.id}})},function(e){return we()(e,function(e){return e.title.toLowerCase()})}),Pe=function(e,t){return e.db.files.allFiles[t]};n("kGR0");function xe(e){var t=e.icon,n=e.text,r=e.action;return _.a.createElement("span",{className:"fileManagerAction",onClick:r},_.a.createElement("span",{className:"fileManagerAction-icon"},_.a.createElement(te,{iconName:t})," ",n))}xe.propTypes={icon:W.a.string.isRequired,text:W.a.string.isRequired,action:W.a.func.isRequired};var je=_.a.memo(xe);function ke(){return(ke=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"").replace(/\t+/g," ").replace(/ +/g," ").trim().split(" ").map(function(e){return e.replace(/\.*$/g,"")}).every(function(e){return function(e){return Ye()(e)&&et.isChord(e)}(e)})}n("Ecbk");var nt=["2/2","3/2","2/4","3/4","4/4","5/4","3/8","6/8","9/8","12/8"];function rt(e){return nt.includes(e)}n("0T4K"),n("Dzwt");function at(e){if(!rt(e))throw new TypeError("Expected time signature string, received: "+e);var t=e.split("/"),n=Number.parseInt(t[0],10),r=Number.parseInt(t[1],10),a=n;return 2===r?a=2*n:8===r&&(a=n/3),{string:e,count:n,value:r,beatCount:a}}n("ZFc4"),n("rmJO"),n("5ktT");var ot=n("wfLL"),it=n.n(ot),lt=n("XhyR"),ct=n.n(lt),ut=new $e.Chords;n("IHQ4"),n("cvC6"),n("jDvd"),n("wt4b"),n("GZld"),n("uae+"),n("okNV"),n("7kcN"),n("6tnn"),n("SFce"),n("nXTL"),n("ruy4"),n("rt9K"),n("8iCz"),n("jpAq"),n("aLnL"),n("O0Hx");var st=n("okNX"),pt=n.n(st);function dt(e){return(dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ft(e,t){return!t||"object"!==dt(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function mt(e){var t="function"==typeof Map?new Map:void 0;return(mt=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return gt(e,arguments,yt(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),ht(r,e)})(e)}function gt(e,t,n){return(gt=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&ht(a,n.prototype),a}).apply(null,arguments)}function ht(e,t){return(ht=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function yt(e){return(yt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var vt=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.string,a=n.duration,o=n.currentBeatCount,i=n.beatCount;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),!r||!Ye()(r))throw new TypeError("IncorrectBeatCountException cannot be created without chord string, received: "+r);if(!a||!pt()(a))throw new TypeError("IncorrectBeatCountException cannot be created without chord duration, received: "+a);if(!o||!pt()(o))throw new TypeError("IncorrectBeatCountException cannot be created without currentBeatCount, received: "+o);if(!i||!pt()(i))throw new TypeError("IncorrectBeatCountException cannot be created without beatCount, received: "+i);return(e=ft(this,yt(t).call(this))).name="IncorrectBeatCountException",e.string=r,e.duration=a,e.currentBeatCount=o,e.beatCount=i,e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ht(e,t)}(t,mt(Error)),t}();function bt(e){return(bt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Et(e,t){return!t||"object"!==bt(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function Ct(e){var t="function"==typeof Map?new Map:void 0;return(Ct=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return Ot(e,arguments,wt(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),St(r,e)})(e)}function Ot(e,t,n){return(Ot=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&St(a,n.prototype),a}).apply(null,arguments)}function St(e,t){return(St=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function wt(e){return(wt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var Rt=function(e){function t(){var e,n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).string;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),!n||!Ye()(n))throw new TypeError("InvalidChordRepetitionException cannot be created without chord string, received: "+n);return(e=Et(this,wt(t).call(this))).name="InvalidChordRepetitionException",e.string=n,e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&St(e,t)}(t,Ct(Error)),t}();function Nt(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).timeSignature,n=void 0===t?at("4/4"):t,r=n.beatCount,a=e.replace(/ +/g," ").trim().split(" "),o=[],i={allChords:[]},l={},c={},u=0,s=0,p={};if(a.forEach(function(e){if(c=function(e){return ut.parse(e)}(e.replace(/\./g,"")),(l={string:e,duration:(e.match(/\./g)||[]).length||r,model:c}).beat=u+1,u+=l.duration,i.allChords.length>0&&(p=i.allChords[i.allChords.length-1],it()(p.model,l.model)))throw new Rt({string:l.string});if(i.allChords.push(l),s++,u===r)i.timeSignature=n,o.push(ct()(i)),i={allChords:[]},u=0,p={};else if(u>r)throw new vt({message:"",string:l.string,duration:l.duration,currentBeatCount:u,beatCount:r})}),u>0&&u2&&void 0!==arguments[2]?arguments[2]:{},r=n.transposeValue,a=void 0===r?0:r,o=n.accidentalsType,i=void 0===o?"auto":o,l=n.harmonizeAccidentals,c=void 0===l||l,u=ct()(e),s="auto"===i?function(e){var t="",n=0,r=0;return e.forEach(function(e){2===(t=e.model.symbol.rootNote).length&&("b"===t[1]?n+=e.occurrences:r+=e.occurrences)}),n>r?"flat":"sharp"}(t):i;return(c||0!==a)&&(u=jt(u,function(e){e.transposedModel=function(e,t,n){var r=ct()(e),a=r.symbol.rootNote,o=r.symbol.bassNote,i=At(a);if(r.symbol.rootNote=It(i,t,n),o){var l=At(o);r.symbol.bassNote=It(l,t,n)}return r}(e.model,a,"flat"===s)})),u}var Wt=n("uVib"),Vt=n.n(Wt),Gt=(n("eWUb"),n("FxsW"),n("lb95")),Ht=n.n(Gt);var Jt=n("6joI"),Kt=n.n(Jt),Ut=" ",Xt=0,Zt=2;function Qt(e){var t=0,n=0,r=e.allChords.reduce(function(e,r){var a;return t=pt()(r.spacesWithin)?r.spacesWithin:Xt,n=pt()(r.spacesAfter)?r.spacesAfter:Zt,e+=(a=r.symbol,Ht()({chordSymbol:a})+Ut.repeat(t)+Ut.repeat(n))},"");return Kt()({barContent:r})}var Yt=n("Ewt9"),$t=n.n(Yt);var en=n("d6nv"),tn=n.n(en),nn=n("/BFp"),rn=n.n(nn);var an=n("9hQf"),on=n.n(an),ln=new $e.Chords,cn=function(e){return ln.print(e.symbol)};function un(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.alignBars,r=void 0!==n&&n,a=t.transposeValue,o=void 0===a?0:a,i=t.accidentalsType,l=void 0===i?"auto":i,c=t.harmonizeAccidentals,u=void 0===c||c,s=e.allLines,p=function(e){var t=[];return e.filter(function(e){return"chord"===e.type}).forEach(function(e){e.model.allBars.forEach(function(e,n){if(!t[n]){t[n]={};for(var r=1;r<=e.timeSignature.beatCount;r++)t[n][r]=0}e.allChords.forEach(function(e){t[n][e.beat]=Math.max(t[n][e.beat],e.symbol.length)})})}),t}(s=jt(s=Dt(s,e.allChords,{transposeValue:o,accidentalsType:l,harmonizeAccidentals:u}),function(e){e.symbol=e.transposedModel?cn(e.transposedModel):cn(e.model)})),d=s.map(function(e){if("chord"===e.type){var t=r?function(e,t){var n,r=ct()(e);return r.allBars.forEach(function(e,r){e.allChords.forEach(function(a){if(a.spacesWithin=t[r][a.beat]-a.symbol.length,a.spacesAfter=0,a.beat!==e.timeSignature.beatCount){a.spacesAfter=Bt;for(var o=a.beat+1;o".concat(e,"

")}).join(""),r=document.createElement("div"),r.innerHTML=Rn(n),r),{preserveWhitespace:"full"}),plugins:[Object(Cn.history)(),Object(bn.keymap)({"Mod-z":Cn.undo,"Mod-y":Cn.redo}),Object(bn.keymap)(En.baseKeymap)]});var t,n,r}(a);i.current=function(e,t,n){return new yn.EditorView(null,{state:e,dispatchTransaction:function(e){var r=this.state.applyTransaction(e),a=r.state,o=r.transactions;this.updateState(a),o.some(function(e){return e.docChanged})&&t(n,{content:wn(a)})}})}(e,o,r),l.current.appendChild(i.current.dom),Nn.editorView=i.current}}),_.a.createElement("div",{className:"prosemirrorWrapper",ref:l})}Nn.defaultProps={selectedFileId:"",editorContent:""},Nn.propTypes={selectedFileId:W.a.string,editorContent:W.a.string,updateFile:W.a.func.isRequired};var Pn=Nn;function xn(e){var t=e.selectedFile,n=e.updateFile;return _.a.createElement("div",{className:"songEditor"},_.a.createElement("div",{className:"songEditor-source"},_.a.createElement(Pn,{editorContent:t.content,updateFile:n,selectedFileId:t.id})),_.a.createElement("div",{className:"songEditor-preview"},_.a.createElement(gn,{selectedFile:t})))}xn.propTypes={selectedFile:W.a.object,updateFile:W.a.func.isRequired};var jn=xn;n("IA7u");function kn(e){var t=e.selectedFile;return _.a.createElement("div",{className:"exportPreview exp-SongRenderer"},_.a.createElement(fn,{content:t.content}))}kn.propTypes={selectedFile:W.a.object.isRequired};var qn=kn;n("eLJI");function Tn(e){var t=e.selectedFile;return _.a.createElement("div",{className:"playRenderer pr-SongRenderer"},_.a.createElement(fn,{content:t.content}))}Tn.propTypes={selectedFile:W.a.object.isRequired};var Bn=Tn;n("fNiH"),n("5s+n"),n("ls82");function Fn(e){var t=e.pageHeader,n=e.allColumnsLines,r=e.documentSize,a=e.documentMargins,o=e.printFontSize,i=n.map(function(e,t){var n=e.join("\n");return _.a.createElement("div",{key:t,className:"printPreview-pageColumn","data-testid":"printPreview-pageColumn",dangerouslySetInnerHTML:{__html:Ge(n)}})}),l=["printPreview-page"];l.push("printPreview-page--"+r),l.push("printPreview-page--font"+o);var c=["printPreview-pageContentWrapper"];return c.push("printPreview-pageContentWrapper--padding"+a),_.a.createElement("div",{className:l.join(" "),"data-testid":"printPreview-page"},_.a.createElement("div",{className:c.join(" "),"data-testid":"printPreview-pageContentWrapper"},_.a.createElement("div",{className:"printPreview-pageContent"},t,_.a.createElement("div",{className:"printPreview-pageColumnWrapper"},i))))}Fn.defaultProps={allColumnsLines:[]},Fn.propTypes={pageHeader:W.a.element,allColumnsLines:W.a.arrayOf(W.a.arrayOf(W.a.string)),documentSize:W.a.string.isRequired,documentMargins:W.a.number.isRequired,printFontSize:W.a.number.isRequired};var Mn=_.a.memo(Fn);function zn(e){var t=e.title;return _.a.createElement("div",{className:"printPreview-pageHeader"},t)}zn.defaultProps={allColumnsLines:[]},zn.propTypes={title:W.a.string.isRequired};var _n=_.a.memo(zn),Ln=(n("yXV3"),{emptyLine:"ucc-empty-line",chordLine:"ucc-chord-line",textLine:"ucc-text-line"});function An(e,t){var n=t.columnsCount,r=t.firstPageHeight,a=t.normalPageHeight,o=t.columnBreakOnParagraph,i=t.noEmptyLinesOnColumnStart,l=void 0===i||i,c=t.noOrphanTextLine,u=void 0===c||c,s=function(e){var t=e.firstPageHeight,n=e.normalPageHeight,r=e.columnsCount,a=[],o=0,i=0,l=s(),c=0;function u(e){e.forEach(function(e){c+e.height>l&&p(),a[o][i].push(e.content),c+=e.height})}function s(){return 0===o&&t?t:n}function p(){i===r-1?(a[++o]=[],i=0):i++,a[o][i]=[],c=0,l=s()}return a[o]=[],a[o][i]=[],{insert:function(e){u(e)},insertOnNextColumn:function(e){p(),u(e)},fitsOnCurrentColumn:function(e){return c+e<=l},fitsOnNextColumn:function(e){return e<=(0===o&&i0&&e.forEach(function(t,n){(function(e,t,n,r){return!(In(t)&&!e.fitsOnCurrentColumn(t.height)&&0===n.length&&!0===r)})(s,t,p,l)&&(p.push(t),d+=t.height),p.length>0&&function(e,t,n){var r=n.noOrphanTextLine,a=n.columnBreakOnParagraph;if(In(e)||!t)return!0;var o=(i=e,Dn(i.content,Ln.chordLine)&&function(e){return Dn(e.content,Ln.textLine)}(t));var i;if(!0===r&&o)return!1;var l=In(t);if(!0===a&&!l)return!1;return!0}(t,e[n+1],{noOrphanTextLine:u,columnBreakOnParagraph:o})&&(s.fitsOnCurrentColumn(d)?s.insert(p):s.fitsOnNextColumn(d)?s.insertOnNextColumn(p):s.insert(p),p=[],d=0)}),s.get()}function In(e){return Dn(e.content,Ln.emptyLine)}function Dn(e,t){return e.indexOf(t)>-1}n("ddDh");function Wn(e,t){var n=document.createElement("div");return n.classList.add("measuring-node"),document.body.appendChild(n),new Promise(function(r){A.a.render(_.a.createElement("div",null,e),n,function(){var e=t(n);A.a.unmountComponentAtNode(n),n.parentNode.removeChild(n),r(e)})})}function Vn(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length||0;n0}return c()||l.push("sb-optionsGroup-isNotInteractable"),!n||e.children&&0!==e.children.length||r(!1),_.a.createElement("div",{className:l.join(" ")},_.a.createElement("div",{className:"sb-optionsGroup-title",onClick:c()?function(){r(!n)}:null},_.a.createElement("div",{className:"sb-optionsGroup-label"},_.a.createElement("span",{className:"sb-optionsGroup-iconTitle"},_.a.createElement(te,{iconName:o}))," ",i),_.a.createElement("div",{className:"sb-optionsGroup-toggle"},_.a.createElement("span",{className:"sb-optionsGroup-iconToggle"},_.a.createElement(te,{iconName:n?"unfold_less":"unfold_more"})))),_.a.createElement("div",{className:"sb-optionsGroup-content"},n&&e.children))}dr.propTypes={isOpened:W.a.bool,isInteractable:W.a.bool.isRequired,icon:W.a.string.isRequired,label:W.a.string.isRequired,children:W.a.arrayOf(W.a.element)},dr.defaultProps={isOpened:!1};var fr=dr;n("2ywC");function mr(e){var t,n=e.isSelected,r=e.label,a=e.onClick,o=["sb-optionSelectChoice"];return n&&(o.push("sb-optionSelectChoice-isSelected"),t=_.a.createElement("span",{className:"sb-optionSelectChoice-checkIcon"},_.a.createElement(te,{iconName:"check"}))),_.a.createElement("div",{className:o.join(" "),onClick:a},_.a.createElement("div",{className:"sb-optionSelectChoice-check"},n&&t),_.a.createElement("div",{className:"sb-optionSelectChoice-label"},r))}mr.propTypes={isSelected:W.a.bool.isRequired,label:W.a.string.isRequired,onClick:W.a.func.isRequired};var gr=_.a.memo(mr);function hr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{r||null==l.return||l.return()}finally{if(a)throw o}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function yr(e){var t=hr(Object(z.useState)(!1),2),n=t[0],r=t[1],a=e.isInteractable,o=e.label,i=e.allChoices,l=e.optionContext,c=e.optionKey,u=e.optionValue,s=e.setOption,p=["sb-optionSelect"];a||p.push("sb-optionSelect-isNotInteractable");var d=n?"keyboard_arrow_down":"keyboard_arrow_right";var f=n?_.a.createElement("div",{className:"sb-optionSelect-choices"},i.map(function(e){return _.a.createElement(gr,{key:e.value,label:e.label,isSelected:u===e.value,onClick:function(){return s(l,c,e.value)}})})):null;return _.a.createElement("div",{className:p.join(" ")},_.a.createElement("div",{className:"sb-optionSelect-title",onClick:a?function(){r(!n)}:null},_.a.createElement("div",{className:"sb-optionSelect-desc"},o),_.a.createElement("div",{className:"sb-optionSelect-toggle"},_.a.createElement("span",{className:"sb-optionSelect-icon"},_.a.createElement(te,{iconName:d})))),f)}yr.propTypes={isInteractable:W.a.bool.isRequired,label:W.a.string.isRequired,allChoices:W.a.array.isRequired,optionContext:W.a.string.isRequired,optionKey:W.a.string.isRequired,optionValue:W.a.string.isRequired,setOption:W.a.func.isRequired};var vr=yr;n("qePV"),n("JevA"),n("6EPN");function br(e){var t=e.isInteractable,n=e.label,r=e.min,a=e.max,o=e.showPlusSymbol,i=e.optionContext,l=e.optionKey,c=e.optionValue,u=e.setOption,s=["sb-optionSlider"];t||s.push("sb-optionSlider-isNotInteractable");var p=c>0&&o?"+"+c:c;return _.a.createElement("div",{className:s.join(" ")},_.a.createElement("div",{className:"sb-optionSlider-desc"},n),_.a.createElement("div",{className:"sb-optionSlider-value"},p),_.a.createElement("div",{className:"sb-optionSlider-range"},_.a.createElement("input",{min:r,max:a,value:c,type:"range",onChange:t?function(e){u(i,l,Number.parseInt(e.target.value))}:null,disabled:!t})))}br.propTypes={isInteractable:W.a.bool.isRequired,label:W.a.string.isRequired,min:W.a.number.isRequired,max:W.a.number.isRequired,showPlusSymbol:W.a.bool,optionContext:W.a.string.isRequired,optionKey:W.a.string.isRequired,optionValue:W.a.number.isRequired,setOption:W.a.func.isRequired},br.defaultProps={showPlusSymbol:!0};var Er=_.a.memo(br);n("UUiC");function Cr(e){var t=e.isInteractable,n=e.label,r=e.optionContext,a=e.optionKey,o=e.optionValue,i=e.setOption,l=["sb-optionToggle"];return l.push(!0===o?"sb-optionToggle-isOn":"sb-optionToggle-isOff"),t||l.push("sb-optionToggle-isNotInteractable"),_.a.createElement("div",{className:l.join(" "),onClick:t?function(){i(r,a,!o)}:null},_.a.createElement("div",{className:"sb-optionToggle-desc"},n),_.a.createElement("div",{className:"sb-optionToggle-icon"},_.a.createElement("span",{className:"sb-optionToggle-icon"},_.a.createElement(te,{iconName:!0===o?"toggle_on":"toggle_off"}))))}Cr.propTypes={isInteractable:W.a.bool.isRequired,label:W.a.string.isRequired,optionContext:W.a.string.isRequired,optionKey:W.a.string.isRequired,optionValue:W.a.bool.isRequired,setOption:W.a.func.isRequired};var Or=_.a.memo(Cr);function Sr(){return(Sr=Object.assign||function(e){for(var t=1;t= 4.0.0"],main:function(e,t,n,r,a){var o;return'

'+(null!=(o=e.lambda(null!=t?t.textLine:t,t))?o:"")+"

"},useData:!0})},ddDh:function(e,t,n){},eLJI:function(e,t,n){},fNiH:function(e,t,n){},g3KT:function(e,t,n){},kGR0:function(e,t,n){},lb95:function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){return''+e.escapeExpression(e.lambda(null!=t?t.chordSymbol:t,t))+""},useData:!0})},u0UJ:function(e,t,n){},uVib:function(e,t,n){var r=n("3O+N");e.exports=(r.default||r).template({compiler:[7,">= 4.0.0"],main:function(e,t,n,r,a){var o;return'

'+(null!=(o=e.lambda(null!=t?t.chordLine:t,t))?o:"")+"

"},useData:!0})},xeFo:function(e,t,n){},zIDs:function(e,t,n){}}); +//# sourceMappingURL=main.dbae970e9fc0ba07e9ca.js.map \ No newline at end of file diff --git a/docs/main.dbae970e9fc0ba07e9ca.js.map b/docs/main.dbae970e9fc0ba07e9ca.js.map new file mode 100644 index 00000000..ab758ab4 --- /dev/null +++ b/docs/main.dbae970e9fc0ba07e9ca.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../ucc/src/renderer/components/tpl/emptyLine.hbs","webpack:///../ucc/src/renderer/components/tpl/barContent.hbs","webpack:///../ucc/src/renderer/components/tpl/song.hbs","webpack:///../ucc/src/renderer/components/tpl/barSeparator.hbs","webpack:///./src/state/localStorage.js","webpack:///./src/db/files/actionsTypes.js","webpack:///./src/db/files/reducers.js","webpack:///./src/db/options/reducers.js","webpack:///./src/db/reducers.js","webpack:///./src/db/options/actionsTypes.js","webpack:///./src/fileManager/_state/actionsTypes.js","webpack:///./src/fileManager/_state/reducers.js","webpack:///./src/ui/layout/app/_state/actionsTypes.js","webpack:///./src/ui/layout/app/_state/reducers.js","webpack:///./src/ui/layout/reducers.js","webpack:///./src/state/store.js","webpack:///./src/ui/reducers.js","webpack:///./src/state/reducers.js","webpack:///./src/state/seed.js","webpack:///./src/db/seed.js","webpack:///./src/db/options/seed.js","webpack:///./src/ui/_components/ErrorBoundary.js","webpack:///./src/core/createAction.js","webpack:///./src/ui/layout/app/_state/actions.js","webpack:///./src/ui/layout/app/_state/selectors.js","webpack:///./src/ui/_components/Icon.js","webpack:///./src/ui/sideBar/_components/Logo.js","webpack:///./src/ui/layout/app/_components/NavEntry.js","webpack:///./src/ui/layout/app/_components/Nav.js","webpack:///./src/ui/layout/app/_components/Footer.js","webpack:///./src/ui/layout/app/allNavEntries.js","webpack:///./src/ui/layout/app/_components/App.js","webpack:///./src/ui/layout/app/_containers/App.js","webpack:///./src/fileManager/_state/selectors.js","webpack:///./src/db/files/actions.js","webpack:///./src/db/files/selectors.js","webpack:///./src/fileManager/_components/FileActionEntry.js","webpack:///./src/fileManager/_components/FileActions.js","webpack:///./src/fileManager/_components/FileEntry.js","webpack:///./src/fileManager/_components/FileManager.js","webpack:///./src/fileManager/_containers/FileManager.js","webpack:///./src/fileManager/_state/actions.js","webpack:///./src/db/options/selectors.js","webpack:///./src/core/escapeHTML.js","webpack:///../ucc/src/core/dom/escapeHTML.js","webpack:///../ucc/src/core/dom/stripTags.js","webpack:///../ucc/src/parser/isChord.js","webpack:///../ucc/src/parser/isChordLine.js","webpack:///../ucc/src/parser/isTimeSignatureString.js","webpack:///../ucc/src/parser/parseTimeSignature.js","webpack:///../ucc/src/parser/parseChord.js","webpack:///../ucc/src/parser/exceptions/IncorrectBeatCountException.js","webpack:///../ucc/src/parser/exceptions/InvalidChordRepetitionException.js","webpack:///../ucc/src/parser/parseChordLine.js","webpack:///../ucc/src/parser/helper/songs.js","webpack:///../ucc/src/parser/parseSong.js","webpack:///../ucc/src/parser/getAllChordsInSong.js","webpack:///../ucc/src/renderer/spacers/chord/simple.js","webpack:///../ucc/src/renderer/spacers/chord/aligned.js","webpack:///../ucc/src/renderer/modifiers/transposeChord.js","webpack:///../ucc/src/renderer/modifiers/transposeSong.js","webpack:///../ucc/src/renderer/helpers/getMainAccidental.js","webpack:///../ucc/src/renderer/components/renderBarContent.js","webpack:///../ucc/src/renderer/components/renderChordSymbol.js","webpack:///../ucc/src/renderer/helpers/getChordSymbol.js","webpack:///../ucc/src/renderer/components/renderSong.js","webpack:///../ucc/src/renderer/spacers/chord/getMaxBeatsWidth.js","webpack:///../ucc/src/renderer/components/renderChordLine.js","webpack:///../ucc/src/renderer/components/renderTextLine.js","webpack:///./src/core/renderSong.js","webpack:///./src/songRenderers/_components/SongRenderer.js","webpack:///./src/songRenderers/_containers/SongRenderer.js","webpack:///./src/songRenderers/editorPreview/_components/EditorPreview.js","webpack:///./src/editor/songEditor/prosemirror/schema.js","webpack:///./src/editor/songEditor/prosemirror/converters/stateToText.js","webpack:///./src/editor/songEditor/prosemirror/converters/toSafeHtml.js","webpack:///./src/editor/songEditor/prosemirror/ProsemirrorEditorView.js","webpack:///./src/editor/songEditor/prosemirror/converters/textToDom.js","webpack:///./src/editor/songEditor/prosemirror/getPlugins.js","webpack:///./src/editor/songEditor/_components/EditorLayout.js","webpack:///./src/songRenderers/exportPreview/_components/ExportPreview.js","webpack:///./src/songRenderers/playRenderer/_components/PlayRenderer.js","webpack:///./src/songRenderers/printPreview/_components/Page.js","webpack:///./src/songRenderers/printPreview/_components/PageHeader.js","webpack:///./src/songRenderers/printPreview/helpers/mapLinesToColumns.js","webpack:///./src/songRenderers/printPreview/helpers/getDimensionsFromDom.js","webpack:///./src/songRenderers/printPreview/helpers/padColumns.js","webpack:///./src/songRenderers/printPreview/helpers/element.js","webpack:///./src/songRenderers/printPreview/helpers/getAllLinesHeight.js","webpack:///./src/songRenderers/printPreview/helpers/getPagesHeight.js","webpack:///./src/songRenderers/printPreview/_components/AllPages.js","webpack:///./src/songRenderers/printPreview/_components/PrintPreview.js","webpack:///./src/songRenderers/printPreview/_containers/PrintPreview.js","webpack:///./src/editor/_components/Editor.js","webpack:///./src/editor/_containers/Editor.js","webpack:///./src/optionsPanels/_components/OptionsPanel.js","webpack:///./src/ui/sideBar/options/_components/OptionsGroup.js","webpack:///./src/ui/sideBar/options/_components/SelectChoice.js","webpack:///./src/ui/sideBar/options/_components/Select.js","webpack:///./src/ui/sideBar/options/_components/Slider.js","webpack:///./src/ui/sideBar/options/_components/Toggle.js","webpack:///./src/ui/sideBar/options/_components/SidebarOptionsPanel.js","webpack:///./src/db/options/actions.js","webpack:///./src/optionsPanels/rendering/allWidgets.js","webpack:///./src/optionsPanels/_containers/OptionsPanelFactory.js","webpack:///./src/optionsPanels/rendering/_containers/Rendering.js","webpack:///./src/optionsPanels/rendering/_state/selectors.js","webpack:///./src/optionsPanels/rendering/_components/Rendering.js","webpack:///./src/controllers/Editor.js","webpack:///./src/router.js","webpack:///./src/renderController.js","webpack:///./src/app.js","webpack:///../ucc/src/renderer/components/tpl/textLine.hbs","webpack:///../ucc/src/renderer/components/tpl/chordSymbol.hbs","webpack:///../ucc/src/renderer/components/tpl/chordLine.hbs"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","Handlebars","template","compiler","main","container","depth0","helpers","partials","useData","stack1","lambda","barContent","song","loadState","serializedState","localStorage","getItem","JSON","parse","err","saveState","state","stringify","setItem","DB_FILES_CREATE","DB_FILES_UPDATE","DB_FILES_DELETE","initialState","allFiles","combineReducers","files","arguments","undefined","action","type","actionTypes","_action$payload","payload","id","title","content","_objectSpread","createFile","_action$payload2","updateFile","deleteFile","options","context","contextOptions","reducers_objectSpread","newState","FILE_MANAGER_SELECT_FILE","FILE_MANAGER_ENABLE_RENAME","selected","renamed","defaultTitle","UI_LAYOUT_APP_TOGGLE_LEFT_BAR","UI_LAYOUT_APP_TOGGLE_RIGHT_BAR","UI_LAYOUT_APP_SET_EDITOR_MODE","isLeftBarCollapsed","isRightBarCollapsed","editorMode","store","app","app_state_reducers_objectSpread","layout","db","fileManager","_state_reducers_objectSpread","ui","state_seed","rendering","documentSize","default","resetOnSongChange","documentMargins","columnsCount","columnBreakOnParagraph","style","alignBars","showChords","instrument","showStrummingPattern","transposeValue","simplifyChords","capoPosition","harmonizeAccidentals","preferredAccidentals","fontSize","printFontSize","fontStyle","chordsColor","highlightChords","storeEnhancers","ErrorBoundary","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","error","errorInfo","React","Component","setState","react_default","a","createElement","className","whiteSpace","open","toString","componentStack","children","propTypes","PropTypes","any","createAction","TypeError","getEditorMode","Icon","iconName","join","string","isRequired","memo","_components_Icon","NavEntry","label","icon","setEditorMode","classNames","isActive","onClick","func","bool","Nav","currentMode","allEntries","map","entry","_components_NavEntry","_extends","arrayOf","shape","allNavEntries","App","toggleLeftBar","toggleRightBar","leftBar","rightBar","leftBarClassNames","rightBarClassNames","_components_Logo","data-testid","_components_Nav","_components_Footer","element","defaultProps","connect","getSelectedId","getRenamedId","getDefaultTitle","_ref","getAllTitles","createSelectorCreator","defaultMemoize","_isEqual","createDeepEqualSelector","_map","_sortBy","toLowerCase","getOne","FileActionEntry","text","FileActions","allActions","enableRename","_components_FileActionEntry","FileActions_extends","FileEntry","_useState2","_slicedToArray","useState","setTitle","fileId","isSelected","isRenamed","selectFile","classList","inputRef","createRef","saveTitle","newTitle","current","scrollLeft","useEffect","focus","onDoubleClick","e","target","select","ref","readOnly","autoFocus","onChange","onBlur","onFocus","onKeyPress","which","preventDefault","getSelection","removeAllRanges","FileManager","allTitles","_components_FileActions","file","_components_FileEntry","actionsTypes","uuid","v4","getOptionValue","escapeHTML","unescaped","domPurify","sanitize","stripTags","html","ALLOWED_TAGS","KEEP_CONTENT","chords","Chords","isChordLine","replace","trim","split","potentialChord","every","_isString","isChord","allowedTimeSignatures","isTimeSignatureString","includes","parseTimeSignature","array","count","Number","parseInt","beatCount","IncorrectBeatCountException","duration","currentBeatCount","IncorrectBeatCountException_classCallCheck","_isFinite","IncorrectBeatCountException_possibleConstructorReturn","IncorrectBeatCountException_getPrototypeOf","Error","InvalidChordRepetitionException","InvalidChordRepetitionException_classCallCheck","InvalidChordRepetitionException_possibleConstructorReturn","InvalidChordRepetitionException_getPrototypeOf","parseChordLine","chordLine","_ref$timeSignature","timeSignature","allLineChords","allBars","bar","allChords","chord","model","chordCount","previousChord","forEach","chordString","parseChord","match","beat","_cloneDeep","message","forEachChordInSong","allLines","fn","newLines","line","defaultTimeSignature","parseSong","songLines","_isArray","isTimeSignature","_findIndex","occurrences","getAllChordsInSong","allMasks","","2","11","3","12","21","111","4","13","22","31","112","121","211","1111","spacesAfterDefault","emptyBeatSpaces","notes","sharpsToFlats","C#","D#","F#","G#","A#","flatsToSharps","_invert","convertToSharp","note","transposeNote","useFlats","transposedIndex","indexOf","octaves","Math","floor","transposed","transposeSong","_ref$transposeValue","_ref$accidentalsType","accidentalsType","_ref$harmonizeAcciden","accidental","rootNote","flatCount","sharpCount","symbol","getMainAccidental","transposedModel","transposedChord","root","bass","bassNote","rootSharp","bassSharp","transposeChord","space","defaultSpacesWithin","defaultSpacesAfter","renderBarContent","spacesWithin","spacesAfter","reduce","chordSymbol","chordSymbolTpl","repeat","barContentTpl","getChordSymbol","chordDef","print","renderSong","parsedSong","_ref$alignBars","maxBeatsWidth","filter","barIndex","max","getMaxBeatsWidth","spaced","chordLineInput","beatMaxWidth","alignedChordSpacer","chordPattern","chordSpaces","rendered","chordLineModel","allBarsRendered","barSeparator","barSeparatorTpl","chordLineTpl","renderChordLine","textLine","emptyLineTpl","textLineTpl","songTpl","songTxt","renderOptions","renderSongUcc","SongRenderer","_pick","dangerouslySetInnerHTML","__html","EditorPreview","selectedFile","_containers_SongRenderer","editorSchema","Schema","nodes","marks","stateToText","toJSON","doc","paragraph","acc","toSafeHtml","dirty","ProseMirrorEditorView","selectedFileId","editorContent","editorView","useRef","editorDom","previousFileId","editorExists","dom","parentNode","destroyEditor","removeChild","editorState","EditorState","pmDOMParser","fromSchema","concat","div","document","innerHTML","preserveWhitespace","plugins","pmHistory","keymap","Mod-z","undo","Mod-y","redo","baseKeymap","createEditorState","EditorView","dispatchTransaction","transaction","_this$state$applyTran","applyTransaction","transactions","updateState","some","tr","docChanged","createEditorView","appendChild","EditorLayout","prosemirror_ProsemirrorEditorView","_components_EditorPreview","ExportPreview","PlayRenderer","Page","pageHeader","allColumnsLines","allSectionsRendered","columnLines","index","columnLinesTxt","pageClasses","pageContentWrapperClasses","number","PageHeader","cssClasses","emptyLine","mapLinesToColumns","allLinesWithHeight","firstPageHeight","normalPageHeight","_ref$noEmptyLinesOnCo","noEmptyLinesOnColumnStart","_ref$noOrphanTextLine","noOrphanTextLine","_ref3","allPagesColumns","pageIndex","columnIndex","maxColumnHeight","getMaxColumnHeight","currentColumnHeight","flushBuffer","buffer","height","changeColumn","insert","insertOnNextColumn","fitsOnCurrentColumn","bufferHeight","fitsOnNextColumn","layoutFactory","lineIndex","isEmptyLine","shouldRenderLine","currentLine","nextLine","_ref2","wouldProduceOrphanTextLine","hasClass","isTextLine","isEndOfParagraph","isBreakable","getDimensionsFromDom","component","measuringFn","add","body","Promise","resolve","ReactDOM","render","measure","unmountComponentAtNode","padColumns","columnCount","allColumns","getClientHeight","clientHeight","cssSelectors","getAllLinesHeight","_x","_x2","_getAllLinesHeight","_callee","regeneratorRuntime","wrap","_context","prev","next","_components_Page","allLinesHeight","querySelectorAll","offsetHeight","abrupt","sent","stop","helpers_getPagesHeight_getAllLinesHeight","_components_PageHeader","pageContent","querySelector","AllPages","AllPages_slicedToArray","setAllPagesColumns","useLayoutEffect","mark","pageOptions","mapped","getPagesHeight","getDimensions","allPagesRendered","pageColumns","Fragment","PrintPreview","_components_AllPages","Editor","_components_EditorLayout","_components_PlayRenderer","_containers_PrintPreview","_components_ExportPreview","OptionsPanel","widget","groupWidget","WidgetComponent","GroupComponent","isGroupInteractable","isGroupWidgetInteractable","renderedGroupWidgets","allWidgets","nonInteractableWidgets","hiddenWidgets","setOption","getEntryComponent","renderedWidgets","widgetsOrder","widgetId","groupWidgetsOrder","groupWidgetId","allGroupWidgets","renderWidget","isInteractable","localWidget","OptionsPanel_extends","optionContext","option","optionKey","optionValue","typeOptions","OptionsGroup","OptionsGroup_slicedToArray","isOpened","setIsOpened","shouldBeInteractable","SelectChoice","checkIcon","Select","Select_slicedToArray","isOpen","setIsOpen","allChoices","renderedChoices","choice","_components_SelectChoice","Slider","min","showPlusSymbol","valueDisplay","disabled","Toggle","SidebarOptionPanel","_components_OptionsPanel","SidebarOptionsPanel_extends","setOptionValue","getNonInteractableWidgets","getHiddenWidgets","OptionsPanelFactory","format","nonVisibleWidgets","Rendering_extends","stateToProps","Edit","fm","_containers_FileManager","rightBarPanel","_containers_Rendering","_containers_App","_containers_Editor","routes","path","universalRouter","UniversalRouter","router","navigateTo","then","controller","Controller","ReactDom","es","StrictMode","ui_components_ErrorBoundary","getElementById","__REDUX_DEVTOOLS_EXTENSION__","trace","persistedState","_defaultsDeep","seed","createReduxStore","allReducers","compose","subscribe","getState","createStore","escapeExpression"],"mappings":"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","file":"main.dbae970e9fc0ba07e9ca.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"Vtdi\",1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"

 

\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"\"\n + ((stack1 = container.lambda((depth0 != null ? depth0.barContent : depth0), depth0)) != null ? stack1 : \"\")\n + \"\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return ((stack1 = container.lambda((depth0 != null ? depth0.song : depth0), depth0)) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"|\";\n},\"useData\":true});","// @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\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 const DB_FILES_CREATE = 'db/files/Create';\nexport const DB_FILES_UPDATE = 'db/files/Update';\nexport const DB_FILES_DELETE = 'db/files/Delete';\n","import * as actionTypes from './actionsTypes';\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\n\nfunction updateFile(state, action) {\n\tconst { id, title, content } = action.payload;\n\n\tif ((!title && !content) || !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 (content) {\n\t\tallFiles[id].content = content;\n\t}\n\treturn {\n\t\t...state,\n\t\tallFiles,\n\t};\n}\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\nexport default (state = initialState, action = {}) => {\n\tswitch (action.type) {\n\t\tcase actionTypes.DB_FILES_CREATE: return createFile(state, action);\n\t\tcase actionTypes.DB_FILES_UPDATE: return updateFile(state, action);\n\t\tcase actionTypes.DB_FILES_DELETE: return deleteFile(state, action);\n\t}\n\treturn state;\n};\n","import * as actionTypes from './actionsTypes';\n\nconst initialState = {};\n\nexport default (state = initialState, action = {}) => {\n\tswitch (action.type) {\n\t\tcase actionTypes.DB_OPTION_SET_OPTION_VALUE: {\n\t\t\tconst { context, key, value } = action.payload;\n\n\t\t\tif (!state[context] || !state[context][key]) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\tconst contextOptions = { ...state[context] };\n\t\t\tcontextOptions[key] = {\n\t\t\t\t...contextOptions[key],\n\t\t\t\tvalue\n\t\t\t};\n\n\t\t\tconst newState = {\n\t\t\t\t...state,\n\t\t\t};\n\t\t\tnewState[context] = contextOptions;\n\n\t\t\treturn newState;\n\t\t}\n\t}\n\treturn state;\n};\n","import { combineReducers } from 'redux';\nimport files from './files/reducers';\nimport options from './options/reducers';\n\nexport default combineReducers({\n\tfiles,\n\toptions,\n});\n","export const DB_OPTION_SET_OPTION_VALUE = 'db/options/setOptionValue';\n","export const FILE_MANAGER_SELECT_FILE = 'fileManager/select';\nexport const FILE_MANAGER_ENABLE_RENAME = 'fileManager/enableRename';\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_UPDATE,\n\tDB_FILES_DELETE\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\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_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 UI_LAYOUT_APP_TOGGLE_LEFT_BAR = 'ui/layout/app/toggleLeftBar';\nexport const UI_LAYOUT_APP_TOGGLE_RIGHT_BAR = 'ui/layout/app/toggleRightBar';\nexport const UI_LAYOUT_APP_SET_EDITOR_MODE = 'ui/layout/app/setEditorMode';\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\nconst initialState = {\n\tisLeftBarCollapsed: false,\n\tisRightBarCollapsed: false,\n\teditorMode: 'edit',\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}\n\treturn state;\n}\n","import { combineReducers } from 'redux';\nimport app from './app/_state/reducers';\n\nexport default combineReducers({\n\tapp\n});\n","import _defaultsDeep from 'lodash/defaultsDeep';\n\nimport { createStore as createReduxStore, compose } from 'redux';\n\nimport { loadState, saveState } from './localStorage';\nimport allReducers from './reducers';\nimport seed from './seed';\n\nconst storeEnhancers = [];\n\n/* * /\nimport { applyMiddleware } from 'redux';\nconst logger = () => next => action => {\n\tconsole.log('!!! DISPATCHING ACTION: ', action);\n\tlet result = next(action);\n\treturn result;\n};\nstoreEnhancers.push(applyMiddleware(logger));\n/* */\n\n\nlet store;\n\nexport function createStore() {\n\tif (window.__REDUX_DEVTOOLS_EXTENSION__) {\n\t\tstoreEnhancers.push(window.__REDUX_DEVTOOLS_EXTENSION__({ trace: true }));\n\t}\n\n\tconst persistedState = loadState();\n\tconst initialState = _defaultsDeep(persistedState, seed);\n\n\tstore = createReduxStore(\n\t\tallReducers,\n\t\tinitialState,\n\t\tcompose(...storeEnhancers)\n\t);\n\n\tstore.subscribe(() => {\n\t\tsaveState(store.getState());\n\t});\n}\n\nexport function getStore() {\n\treturn store;\n}\n","import { combineReducers } from 'redux';\nimport layout from './layout/reducers';\n\nexport default combineReducers({\n\tlayout\n});\n","import { combineReducers } from 'redux';\n\nimport db from '../db/reducers';\nimport fileManager from '../fileManager/_state/reducers';\nimport ui from '../ui/reducers';\n\nexport default combineReducers({\n\tdb,\n\tfileManager,\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\trendering: {\n\n\t\t/** Layout */\n\n\t\tdocumentSize: {\n\t\t\tvalue: 'a4',\n\t\t\tdefault: 'a4',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tdocumentMargins: {\n\t\t\tvalue: 3,\n\t\t\tdefault: 3,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tcolumnsCount: {\n\t\t\tvalue: 1,\n\t\t\tdefault: 1,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tcolumnBreakOnParagraph: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\n\n\t\t/** Display */\n\n\t\tstyle: {\n\t\t\tvalue: 'ucc',\n\t\t\tdefault: 'ucc',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\talignBars: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tshowChords: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tinstrument: {\n\t\t\tvalue: 'guitar',\n\t\t\tdefault: 'guitar',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tshowStrummingPattern: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\n\n\n\t\t/** Customize Chords */\n\n\t\ttransposeValue: {\n\t\t\tvalue: 0,\n\t\t\tdefault: 0,\n\t\t\tresetOnSongChange: true,\n\t\t},\n\t\tsimplifyChords: {\n\t\t\tvalue: false,\n\t\t\tdefault: false,\n\t\t\tresetOnSongChange: true,\n\t\t},\n\t\tcapoPosition: {\n\t\t\tvalue: 0,\n\t\t\tdefault: 0,\n\t\t\tresetOnSongChange: true,\n\t\t},\n\t\tharmonizeAccidentals: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: true,\n\t\t},\n\t\tpreferredAccidentals: {\n\t\t\tvalue: 'auto',\n\t\t\tdefault: 'auto',\n\t\t\tresetOnSongChange: true,\n\t\t},\n\n\n\n\t\t/** Format */\n\n\t\tfontSize: {\n\t\t\tvalue: 0,\n\t\t\tdefault: 0,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tprintFontSize: {\n\t\t\tvalue: 0,\n\t\t\tdefault: 0,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tfontStyle: {\n\t\t\tvalue: 'roboto',\n\t\t\tdefault: 'roboto',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\tchordsColor: {\n\t\t\tvalue: 'black',\n\t\t\tdefault: 'black',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t\thighlightChords: {\n\t\t\tvalue: true,\n\t\t\tdefault: true,\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t}\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","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 {\n\tUI_LAYOUT_APP_TOGGLE_LEFT_BAR,\n\tUI_LAYOUT_APP_TOGGLE_RIGHT_BAR,\n\tUI_LAYOUT_APP_SET_EDITOR_MODE,\n} from './actionsTypes';\n\nimport createAction from '../../../../core/createAction';\n\nexport const toggleLeftBar = () => createAction(UI_LAYOUT_APP_TOGGLE_LEFT_BAR);\n\nexport const toggleRightBar = () => createAction(UI_LAYOUT_APP_TOGGLE_RIGHT_BAR);\n\nexport const setEditorMode = (mode) => createAction(UI_LAYOUT_APP_SET_EDITOR_MODE, { mode });\n\n","export const isLeftBarCollapsed = (state) => state.ui.layout.app.isLeftBarCollapsed;\n\nexport const isRightBarCollapsed = (state) => state.ui.layout.app.isRightBarCollapsed;\n\nexport const getEditorMode = (state) => state.ui.layout.app.editorMode;\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 (\n\t\t{iconName}\n\t);\n}\n\nIcon.propTypes = {\n\ticonName: PropTypes.string.isRequired,\n};\n\nexport default React.memo(Icon);\n","import './Logo.scss';\n\nimport React from 'react';\n\nimport Icon from '../../_components/Icon.js';\n\nfunction Logo() {\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\tChords Charts Studio\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default React.memo(Logo);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon.js';\n\nfunction NavEntry(props) {\n\tconst {\n\t\tlabel,\n\t\ticon,\n\t\teditorMode,\n\t\tsetEditorMode,\n\t\tisActive,\n\t} = props;\n\n\tconst classNames = ['mainNavEntry'];\n\n\tif (isActive) {\n\t\tclassNames.push('mainNavEntry-isActive');\n\t}\n\n\tfunction handleClick() {\n\t\tsetEditorMode(editorMode);\n\t}\n\n\treturn (\n\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};\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 {\n\t\tcurrentMode,\n\t\tallEntries,\n\t\tsetEditorMode,\n\t} = props;\n\n\treturn (\n\t\t\n\t);\n}\n\nNav.propTypes = {\n\tcurrentMode: PropTypes.string.isRequired,\n\tsetEditorMode: PropTypes.func.isRequired,\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 './Footer.scss';\n\nimport React from 'react';\n\nfunction Footer() {\n\treturn (\n\t\t
\n\t\t\tChords Charts Studio v0.6.0 - ChordMark v0.2.0\n\t\t
\n\t);\n}\n\nexport default React.memo(Footer);\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: 'Play',\n\t\ticon: 'music_note',\n\t\teditorMode: 'play',\n\t},\n\t{\n\t\tid: 'print',\n\t\tlabel: 'Print / PDF',\n\t\ticon: 'print',\n\t\teditorMode: 'print',\n\t},\n\t{\n\t\tid: 'export',\n\t\tlabel: 'Export',\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 Footer from './Footer';\nimport Icon from '../../../_components/Icon';\n\nimport allNavEntries from '../allNavEntries';\n\nfunction App(props) {\n\tconst {\n\t\tisLeftBarCollapsed,\n\t\tisRightBarCollapsed,\n\t\teditorMode,\n\t\ttoggleLeftBar,\n\t\ttoggleRightBar,\n\t\tsetEditorMode,\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\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\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\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{rightBar}\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\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 { toggleLeftBar, toggleRightBar, setEditorMode} from '../_state/actions';\nimport { isLeftBarCollapsed, isRightBarCollapsed, getEditorMode } from '../_state/selectors';\n\nimport App from '../_components/App';\n\n\nexport default connect(\n\tstate => ({\n\t\tisLeftBarCollapsed: isLeftBarCollapsed(state),\n\t\tisRightBarCollapsed: isRightBarCollapsed(state),\n\t\teditorMode: getEditorMode(state)\n\t}),\n\n\t{\n\t\ttoggleLeftBar,\n\t\ttoggleRightBar,\n\t\tsetEditorMode,\n\t}\n\n)(App);\n\n\n","\nexport const getSelectedId = state => state.fileManager.selected;\n\nexport const getRenamedId = state => state.fileManager.renamed;\n\nexport const getDefaultTitle = state => state.fileManager.defaultTitle;\n","import uuid from 'uuid';\n\nimport createAction from '../../core/createAction';\nimport * as actionTypes from './actionsTypes';\n\n\nexport const createFile = (title) => {\n\tif (!title) {\n\t\tthrow new TypeError('Cannot create a file without title');\n\t}\n\tconst payload = {\n\t\tid: uuid.v4(),\n\t\ttitle,\n\t\tcontent: ''\n\t};\n\treturn createAction(actionTypes.DB_FILES_CREATE, payload);\n};\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\n\nexport const deleteFile = (id) => {\n\treturn createAction(actionTypes.DB_FILES_DELETE, { id });\n};\n\n","import _map from 'lodash/map';\nimport _isEqual from 'lodash/isEqual';\nimport _sortBy from 'lodash/sortBy';\n\nimport { createSelectorCreator, defaultMemoize } from 'reselect';\n\n\n// create a \"selector creator\" that uses lodash.isEqual instead of ===\nconst createDeepEqualSelector = createSelectorCreator(\n\tdefaultMemoize,\n\t_isEqual\n);\n\n\n// return value should not change when file content changes\nexport const getAllTitles = createDeepEqualSelector(\n\tstate => _map(state.db.files.allFiles, ({ title, id }) => ({ title, id })),\n\tallFiles => _sortBy(allFiles, o => o.title.toLowerCase())\n);\n\n\nexport const getOne = (state, id) => {\n\treturn state.db.files.allFiles[id];\n};\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 } = props;\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};\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 { createFile, deleteFile, enableRename } = props;\n\n\tconst allActions = [\n\t\t{\n\t\t\ticon: 'add_circle',\n\t\t\ttext: 'New',\n\t\t\taction: createFile\n\t\t},\n\t\t{\n\t\t\ticon: 'create',\n\t\t\ttext: 'Rename',\n\t\t\taction: enableRename\n\t\t},\n\t\t{\n\t\t\ticon: 'delete',\n\t\t\ttext: 'Delete',\n\t\t\taction: deleteFile\n\t\t},\n\t];\n\n\treturn (\n\t\t
\n\t\t\t{\n\t\t\t\tallActions.map((action, key) =>\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\t\t
\n\t);\n}\n\nFileActions.propTypes = {\n\tcreateFile: PropTypes.func.isRequired,\n\tdeleteFile: PropTypes.func.isRequired,\n\tenableRename: 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 { fileId, isSelected, isRenamed, defaultTitle, selectFile, enableRename, updateFile } = 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 from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../ui/_components/Icon';\nimport FileActions from './FileActions';\nimport FileEntry from './FileEntry';\n\nfunction FileManager(props) {\n\tconst {\n\t\tallTitles,\n\t\tselected,\n\t\trenamed,\n\t\tdefaultTitle,\n\n\t\tselectFile,\n\t\tcreateFile,\n\t\tdeleteFile,\n\t\tenableRename,\n\t\tupdateFile,\n\n\t} = props;\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t createFile(defaultTitle)}\n\t\t\t\t\tdeleteFile={() => deleteFile(selected)}\n\t\t\t\t\tenableRename={() => enableRename(selected)}\n\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t\t{\n\t\t\t\t\t\tallTitles.map(file =>\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\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\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default FileManager;\n","import { connect } from 'react-redux';\n\nimport { selectFile, enableRename } from '../_state/actions';\nimport { getDefaultTitle, getSelectedId, getRenamedId } from '../_state/selectors';\n\nimport { createFile, updateFile, deleteFile } from '../../db/files/actions';\nimport { getAllTitles } from '../../db/files/selectors';\n\nimport FileManager from '../_components/FileManager';\n\nexport default connect(\n\tstate => ({\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}\n\n)(FileManager);\n","import createAction from '../../core/createAction';\n\nimport * as actionsTypes from './actionsTypes';\n\nexport const selectFile = (id) => createAction(actionsTypes.FILE_MANAGER_SELECT_FILE, { id });\n\nexport const enableRename = (id) => createAction(actionsTypes.FILE_MANAGER_ENABLE_RENAME, { id });\n\n\n\n\n","import _mapValues from 'lodash/mapValues';\n\nexport const getOptionValue = (state, context, key) => {\n\tif (!state.db.options[context] || !state.db.options[context][key]) {\n\t\treturn;\n\t}\n\treturn state.db.options[context][key].value;\n};\n\nexport const getContext = (state, context) => {\n\tif (!state.db.options[context]) {\n\t\treturn;\n\t}\n\treturn _mapValues(state.db.options[context], option => option.value);\n};\n","import domPurify from 'dompurify';\n\nexport default function escapeHTML(unescaped) {\n\treturn domPurify.sanitize(unescaped);\n}\n","import domPurify from 'dompurify';\n\nexport default function escapeHTML(unescaped) {\n\treturn domPurify.sanitize(unescaped);\n}\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 _isString from 'lodash/isString';\n\nimport { Chords } from 'momo-chords';\n\nconst chords = new Chords();\n\nexport default function isChord(potentialChord) {\n\treturn _isString(potentialChord) && chords.isChord(potentialChord);\n}\n","import isChord from './isChord';\n\nexport default function isChordLine(line = '') {\n\treturn line\n\t\t.replace(/\\t+/g, ' ')\n\t\t.replace(/ +/g, ' ')\n\t\t.trim()\n\t\t.split(' ')\n\t\t.map(potentialChord => potentialChord.replace(/\\.*$/g, ''))\n\t\t.every(potentialChord => isChord(potentialChord));\n}\n","const allowedTimeSignatures = [\n\t'2/2', '3/2',\n\t'2/4', '3/4', '4/4', '5/4',\n\t'3/8', '6/8', '9/8', '12/8'\n];\n\nexport default function isTimeSignatureString(string) {\n\treturn allowedTimeSignatures.includes(string);\n}\n","import isTimeSignatureString from './isTimeSignatureString';\n\n/**\n * @typedef {Object} TimeSignature\n * @type {Object}\n * @property {String} string - original string\n * @property {Number} count - upper part of time signature\n * @property {Number} value - lower part of time signature\n * @property {Number} beatCount - number of beats per bar\n */\n\n/**\n * @param {String} string\n * @returns {TimeSignature}\n */\nexport default function parseTimeSignature(string) {\n\tif (!isTimeSignatureString(string)) {\n\t\tthrow new TypeError('Expected time signature string, received: ' + string);\n\t}\n\n\tconst array = string.split('/');\n\n\tconst count = Number.parseInt(array[0], 10);\n\tconst value = Number.parseInt(array[1], 10);\n\n\tlet beatCount = count;\n\n\tif (value === 2) {\n\t\tbeatCount = count * 2;\n\n\t} else if (value === 8) {\n\t\tbeatCount = count / 3;\n\t}\n\n\treturn {\n\t\tstring,\n\t\tcount,\n\t\tvalue,\n\t\tbeatCount,\n\t};\n}\n\n","import { Chords } from 'momo-chords';\n\nconst chords = new Chords();\n\n/**\n * @see https://github.com/mdanka/momo-chords/blob/master/src/types.ts\n */\n\n/**\n * @typedef {Object} ChordDef\n * @type {Object}\n * @property {ChordSymbol} symbol\n * @property {Object} structure - whether each degree (1, 2, 3... 11) is present (true/false) in the chord\n */\n\n/**\n * @typedef {Object} ChordSymbol\n * @type {Object}\n * @property {String} rootNote\n * @property {String} [bassNote]\n * @property {String} quality\n * @property {Object} addeds\n * @property {Object} suspended\n * @property {String} [alteredFifth]\n * @property {String} [seventh]\n * @property {String} [ninth]\n * @property {String} [eleventh]\n * @property {String} [thirteenth]\n */\n\n/**\n * @param chordString\n * @returns {ChordDef}\n */\nexport default function parseChord(chordString) {\n\treturn chords.parse(chordString);\n}\n","import _isString from 'lodash/isString';\nimport _isFinite from 'lodash/isFinite';\n\nexport default class IncorrectBeatCountException extends Error {\n\tconstructor(\n\t\t{\n\t\t\tstring,\n\t\t\tduration,\n\t\t\tcurrentBeatCount,\n\t\t\tbeatCount\n\t\t} = {}\n\t) {\n\t\tif (!string || !_isString(string)) {\n\t\t\tthrow new TypeError('IncorrectBeatCountException cannot be created without chord string, received: ' + string);\n\t\t}\n\t\tif (!duration || !_isFinite(duration)) {\n\t\t\tthrow new TypeError('IncorrectBeatCountException cannot be created without chord duration, received: ' + duration);\n\t\t}\n\t\tif (!currentBeatCount || !_isFinite(currentBeatCount)) {\n\t\t\tthrow new TypeError('IncorrectBeatCountException cannot be created without currentBeatCount, received: ' + currentBeatCount);\n\t\t}\n\t\tif (!beatCount || !_isFinite(beatCount)) {\n\t\t\tthrow new TypeError('IncorrectBeatCountException cannot be created without beatCount, received: ' + beatCount);\n\t\t}\n\n\t\tsuper();\n\n\t\tthis.name = 'IncorrectBeatCountException';\n\t\tthis.string = string;\n\t\tthis.duration = duration;\n\t\tthis.currentBeatCount = currentBeatCount;\n\t\tthis.beatCount = beatCount;\n\t}\n}\n\n","import _isString from 'lodash/isString';\n\nexport default class InvalidChordRepetitionException extends Error {\n\tconstructor(\n\t\t{\n\t\t\tstring,\n\t\t} = {}\n\t) {\n\t\tif (!string || !_isString(string)) {\n\t\t\tthrow new TypeError('InvalidChordRepetitionException cannot be created without chord string, received: ' + string);\n\t\t}\n\n\t\tsuper();\n\n\t\tthis.name = 'InvalidChordRepetitionException';\n\t\tthis.string = string;\n\t}\n}\n\n","import _isEqual from 'lodash/isEqual';\nimport _cloneDeep from 'lodash/cloneDeep';\n\nimport parseChord from './parseChord';\nimport parseTimeSignature from './parseTimeSignature';\n\nimport IncorrectBeatCountException from './exceptions/IncorrectBeatCountException';\nimport InvalidChordRepetitionException from './exceptions/InvalidChordRepetitionException';\n\n/**\n * @typedef {Object} ChordLine\n * @type {Object}\n * @property {Number} chordCount - number of chords in the line\n * @property {Bar[]} allBars\n */\n\n/**\n * @typedef {Object} Bar\n * @type {Object}\n * @property {TimeSignature} timeSignature\n * @property {ChordLineChord[]} allChords\n */\n\n/**\n * @typedef {Object} ChordLineChord\n * @type {Object}\n * @property {String} string - original chord string\n * @property {ChordDef} model\n * @property {Number} duration - number of beats the chord lasts\n * @property {Number} beat - beat on which the chord starts\n */\n\n/**\n * @param {String} chordLine\n * @param {TimeSignature} timeSignature\n * @returns {ChordLine}\n */\nexport default function parseChordLine(\n\tchordLine,\n\t{\n\t\ttimeSignature = parseTimeSignature('4/4')\n\t} = {}\n) {\n\tconst { beatCount } = timeSignature;\n\n\tconst allLineChords = chordLine\n\t\t.replace(/ +/g, ' ')\n\t\t.trim()\n\t\t.split(' ');\n\tconst allBars = [];\n\n\tlet bar = { allChords: []};\n\tlet chord = {};\n\tlet model = {};\n\tlet currentBeatCount = 0;\n\tlet chordCount = 0;\n\tlet previousChord = {};\n\n\tallLineChords.forEach(chordString => {\n\t\tmodel = parseChord(chordString.replace(/\\./g, ''));\n\t\tchord = {\n\t\t\tstring: chordString,\n\t\t\tduration: ((chordString.match(/\\./g) || []).length) || beatCount,\n\t\t\tmodel,\n\t\t};\n\t\tchord.beat = currentBeatCount + 1;\n\t\tcurrentBeatCount += chord.duration;\n\n\t\tif (bar.allChords.length > 0) {\n\t\t\tpreviousChord = bar.allChords[bar.allChords.length - 1];\n\t\t\tif (_isEqual(previousChord.model, chord.model)) {\n\t\t\t\tthrow new InvalidChordRepetitionException({\n\t\t\t\t\tstring: chord.string,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tbar.allChords.push(chord);\n\t\tchordCount++;\n\n\t\tif (currentBeatCount === beatCount) {\n\t\t\tbar.timeSignature = timeSignature;\n\n\t\t\tallBars.push(_cloneDeep(bar));\n\n\t\t\tbar = { allChords: []};\n\t\t\tcurrentBeatCount = 0;\n\t\t\tpreviousChord = {};\n\n\t\t} else if (currentBeatCount > beatCount) {\n\t\t\tthrow new IncorrectBeatCountException({\n\t\t\t\tmessage: '',\n\t\t\t\tstring: chord.string,\n\t\t\t\tduration: chord.duration,\n\t\t\t\tcurrentBeatCount,\n\t\t\t\tbeatCount,\n\t\t\t});\n\t\t}\n\t});\n\n\tif (currentBeatCount > 0 && (currentBeatCount < beatCount)) {\n\t\tthrow new IncorrectBeatCountException({\n\t\t\tmessage: '',\n\t\t\tstring: chord.string,\n\t\t\tduration: chord.duration,\n\t\t\tcurrentBeatCount,\n\t\t\tbeatCount,\n\t\t});\n\t}\n\n\treturn {\n\t\tchordCount,\n\t\tallBars\n\t};\n}\n","import _cloneDeep from 'lodash/cloneDeep';\n\n/**\n * @param {SongLine[]} allLines\n * @param {Function} fn - to execute on each chord\n * @returns {SongLine[]}\n */\nexport function forEachChordInSong(allLines, fn) {\n\tconst newLines = _cloneDeep(allLines);\n\n\tnewLines.forEach(line => {\n\t\tif (line.type === 'chord') {\n\t\t\tline.model.allBars.forEach(bar => {\n\t\t\t\tbar.allChords.forEach(chord => {\n\t\t\t\t\tfn(chord);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t});\n\treturn newLines;\n}\n\n/**\n * @param {ChordLine[]} chordLine\n * @param {Function} fn - to execute on each chord\n * @returns {ChordLine[]}\n */\nexport function forEachChordInChordLine(chordLine, fn) {\n\tconst newChordLine = _cloneDeep(chordLine);\n\n\tnewChordLine.allBars.forEach(bar => {\n\t\tbar.allChords.forEach(chord => {\n\t\t\tfn(chord);\n\t\t});\n\t});\n\n\treturn newChordLine;\n}\n","import _isArray from 'lodash/isArray';\n\nimport escapeHTML from '../core/dom/escapeHTML';\nimport stripTags from '../core/dom/stripTags';\n\nimport isChordLine from './isChordLine';\nimport isTimeSignature from './isTimeSignatureString';\n\nimport parseTimeSignature from './parseTimeSignature';\nimport parseChordLine from './parseChordLine';\n\nimport getAllChordsInSong from './getAllChordsInSong';\n\n/**\n * @typedef {Object} SongLine\n * @type {Object}\n * @property {String} string - original line in source file\n * @property {String} type - chord|text|time-signature|...\n * @property {ChordLine|TimeSignature} model\n */\n\n/**\n * @typedef {Object} Song\n * @type {Object}\n * @property {SongLine[]} allLines\n * @property {SongChord[]} allChords\n */\n\n/**\n * @typedef {Object} SongChord\n * @type {Object}\n * @property {ChordDef} model\n * @property {number} occurrences - number of times the chord appears in the song\n */\n\n/**\n * @type {string}\n */\nconst defaultTimeSignature = '4/4';\n\n/**\n * @param {string|array} song\n * @returns {Song}\n */\nexport default function parseSong(song) {\n\tconst songLines = (!_isArray(song)) ? song.split('\\n') : song;\n\n\tlet timeSignature = parseTimeSignature(defaultTimeSignature);\n\n\tconst allLines = songLines\n\t\t.map(escapeHTML)\n\t\t.map(stripTags)\n\t\t.map(string => ({ string }))\n\t\t.map(line => {\n\t\t\tif (isTimeSignature(line.string)) {\n\t\t\t\ttimeSignature = parseTimeSignature(line.string);\n\n\t\t\t\tline.type = 'time-signature';\n\t\t\t\tline.model = timeSignature;\n\n\t\t\t} else if (isChordLine(line.string)) {\n\t\t\t\ttry {\n\t\t\t\t\tline.type = 'chord';\n\t\t\t\t\tline.model = parseChordLine(line.string, { timeSignature });\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tline.type = 'text';\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tline.type = 'text';\n\t\t\t}\n\t\t\treturn line;\n\t\t});\n\n\n\tconst allChords = getAllChordsInSong(allLines);\n\n\treturn {\n\t\tallLines,\n\t\tallChords\n\t};\n}\n","import _findIndex from 'lodash/findIndex';\nimport _isEqual from 'lodash/isEqual';\nimport _cloneDeep from 'lodash/cloneDeep';\n\nimport { forEachChordInSong } from './helper/songs';\n\n/**\n * @param {SongLine[]} allLines\n * @returns {SongChord[]}\n */\nexport default function getAllChordsInSong(allLines) {\n\tconst allChords = [];\n\tlet i;\n\n\tforEachChordInSong(allLines, chord => {\n\t\ti = _findIndex(allChords, o => _isEqual(o.model, chord.model));\n\n\t\tif (i === -1) {\n\t\t\tallChords.push({\n\t\t\t\tmodel: _cloneDeep(chord.model),\n\t\t\t\toccurrences: 1\n\t\t\t});\n\t\t} else {\n\t\t\tallChords[i].occurrences++;\n\t\t}\n\t});\n\n\treturn allChords;\n}\n","import _cloneDeep from 'lodash/cloneDeep';\n\nconst allMasks = {\n\t0: {\n\t\t'': []\n\t},\n\n\t2: {\n\t\t'2': \t[3], \t\t// 'A '\n\t\t'11': \t[3, 2], \t// 'A B ',\n\t},\n\n\t3: {\n\t\t'3': \t[3], \t\t// 'A '\n\t\t'12': \t[2, 4], \t// 'A B '\n\t\t'21': \t[6, 0], \t// 'A C'\n\t\t'111': \t[2, 2, 0], \t// 'A B C'\n\t},\n\n\t4: {\n\t\t'4': \t[3], \t\t// 'A ',\n\t\t'13': \t[1, 4], \t// 'A B ',\n\t\t'22': \t[3, 2], \t// 'A B ',\n\t\t'31': [5, 0], \t// 'A B',\n\t\t'112': [1, 1, 3], \t// 'A B C ',\n\t\t'121': [1, 4, 0], \t// 'A B C',\n\t\t'211': \t[4, 1, 0], \t// 'A B C',\n\t\t'1111': [2, 2, 2], \t// 'A B C D',\n\t},\n};\n\nexport default function space(chordLineInput) {\n\tconst chordLine = _cloneDeep(chordLineInput);\n\n\tlet beatCount = 0;\n\tlet chordPattern = '';\n\tlet chordSpaces = [];\n\n\tchordLine.allBars.forEach(bar => {\n\t\tbeatCount = 0;\n\t\tchordPattern = '';\n\n\t\tbar.allChords.forEach(chord => {\n\t\t\tchordPattern += chord.duration.toString();\n\t\t\tbeatCount += chord.duration;\n\t\t});\n\n\t\tchordSpaces = allMasks[beatCount][chordPattern];\n\n\t\tfor (let i = 0; i < chordPattern.length; i++) {\n\t\t\tbar.allChords[i].spacesAfter = chordSpaces[i];\n\t\t}\n\t});\n\n\treturn chordLine;\n}\n","import _cloneDeep from 'lodash/cloneDeep';\n\nconst spacesAfterDefault = 2;\nconst emptyBeatSpaces = 1;\n\nexport default function space(chordLineInput, maxBeatsWidth) {\n\tconst chordLine = _cloneDeep(chordLineInput);\n\n\tlet beatMaxWidth;\n\n\tchordLine.allBars.forEach((bar, barIndex) => {\n\t\tbar.allChords.forEach(chord => {\n\t\t\tchord.spacesWithin = maxBeatsWidth[barIndex][chord.beat] - chord.symbol.length;\n\t\t\tchord.spacesAfter = 0;\n\n\t\t\tif (chord.beat !== bar.timeSignature.beatCount) {\n\t\t\t\tchord.spacesAfter = spacesAfterDefault;\n\n\t\t\t\tfor (let i = (chord.beat + 1); i < (chord.beat + chord.duration); i++) {\n\t\t\t\t\tbeatMaxWidth = maxBeatsWidth[barIndex][i];\n\n\t\t\t\t\tchord.spacesAfter += (beatMaxWidth)\n\t\t\t\t\t\t? beatMaxWidth\n\t\t\t\t\t\t: emptyBeatSpaces;\n\n\t\t\t\t\tif (i !== bar.timeSignature.beatCount && beatMaxWidth) {\n\t\t\t\t\t\tchord.spacesAfter += spacesAfterDefault;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\treturn chordLine;\n}\n","import _cloneDeep from 'lodash/cloneDeep';\nimport _invert from 'lodash/invert';\n\nconst notes = [\n\t'C',\n\t'C#',\n\t'D',\n\t'D#',\n\t'E',\n\t'F',\n\t'F#',\n\t'G',\n\t'G#',\n\t'A',\n\t'A#',\n\t'B',\n];\n\nconst sharpsToFlats = {\n\t'C#': 'Db',\n\t'D#': 'Eb',\n\t'F#': 'Gb',\n\t'G#': 'Ab',\n\t'A#': 'Bb',\n};\n\nconst flatsToSharps = _invert(sharpsToFlats);\n\nfunction convertToSharp(note) {\n\treturn flatsToSharps[note] || note;\n}\n\nfunction transposeNote(note, value, useFlats) {\n\tconst noteIndex = notes.indexOf(note);\n\tconst transposedIndex = noteIndex + value;\n\n\tconst octaves = Math.floor(transposedIndex / 12);\n\tconst correctedTransposedIndex = transposedIndex - (octaves * 12);\n\n\tconst transposed = notes[correctedTransposedIndex];\n\n\treturn (useFlats)\n\t\t? sharpsToFlats[transposed] || transposed\n\t\t: transposed;\n}\n\nexport default function transposeChord(chord, value, useFlats) {\n\tconst transposedChord = _cloneDeep(chord); // check immutability\n\n\tconst root = transposedChord.symbol.rootNote;\n\tconst bass = transposedChord.symbol.bassNote;\n\n\tconst rootSharp = convertToSharp(root);\n\ttransposedChord.symbol.rootNote = transposeNote(rootSharp, value, useFlats);\n\n\tif (bass) {\n\t\tconst bassSharp = convertToSharp(bass);\n\t\ttransposedChord.symbol.bassNote = transposeNote(bassSharp, value, useFlats);\n\t}\n\n\treturn transposedChord;\n}\n","import _cloneDeep from 'lodash/cloneDeep';\nimport transposeChord from './transposeChord';\nimport getMainAccidental from '../helpers/getMainAccidental';\n\nimport { forEachChordInSong } from '../../parser/helper/songs';\n\n/**\n * @param {SongLine[]} allLines\n * @param {SongChord[]} allChords\n * @param transposeValue\n * @param accidentalsType\n * @param harmonizeAccidentals\n * @returns {SongLine[]} - with added transposedModel property on each chord if needed\n */\nexport default function transposeSong(allLines, allChords, {\n\ttransposeValue = 0,\n\taccidentalsType = 'auto',\n\tharmonizeAccidentals = true\n} = {}) {\n\tlet transposed = _cloneDeep(allLines);\n\n\tlet accidental = (accidentalsType === 'auto')\n\t\t? getMainAccidental(allChords)\n\t\t: accidentalsType;\n\n\tif (harmonizeAccidentals || transposeValue !== 0) {\n\t\ttransposed = forEachChordInSong(transposed, (chord) => {\n\t\t\tchord.transposedModel = transposeChord(\n\t\t\t\tchord.model,\n\t\t\t\ttransposeValue,\n\t\t\t\taccidental === 'flat'\n\t\t\t);\n\t\t});\n\t}\n\n\treturn transposed;\n}\n","/**\n * Returns the most used accidental of a song.\n *\n * @param {SongChord[]} allChords\n * @returns {('flat'|'sharp')}\n */\nexport default function getMainAccidental(allChords) {\n\tlet rootNote = '';\n\tlet flatCount = 0;\n\tlet sharpCount = 0;\n\n\tallChords.forEach(chord => {\n\t\trootNote = chord.model.symbol.rootNote;\n\n\t\tif (rootNote.length === 2) {\n\t\t\tlet accidental = rootNote[1];\n\n\t\t\tif (accidental === 'b') {\n\t\t\t\tflatCount += chord.occurrences;\n\t\t\t} else {\n\t\t\t\tsharpCount += chord.occurrences;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn (flatCount > sharpCount) ? 'flat' : 'sharp';\n}\n","import _isFinite from 'lodash/isFinite';\n\nimport renderChord from './renderChordSymbol';\nimport barContentTpl from './tpl/barContent.hbs';\n\nconst space = ' ';\n\nconst defaultSpacesWithin = 0;\nconst defaultSpacesAfter = 2;\n\n/**\n * @param {Bar} bar\n * @returns {String} rendered html\n */\nexport default function renderBarContent(bar) {\n\tlet spacesWithin = 0;\n\tlet spacesAfter = 0;\n\n\tconst barContent = bar.allChords.reduce((rendering, chord) => {\n\t\tspacesWithin = _isFinite(chord.spacesWithin) ? chord.spacesWithin : defaultSpacesWithin;\n\t\tspacesAfter = _isFinite(chord.spacesAfter) ? chord.spacesAfter : defaultSpacesAfter;\n\n\t\trendering +=\n\t\t\trenderChord(chord.symbol) +\n\t\t\tspace.repeat(spacesWithin) +\n\t\t\tspace.repeat(spacesAfter);\n\n\t\treturn rendering;\n\t}, '');\n\n\treturn barContentTpl({ barContent });\n}\n","import chordSymbolTpl from './tpl/chordSymbol.hbs';\n\n/**\n * @param {String} chordSymbol\n * @returns {String} rendered html\n */\nexport default function renderChordSymbol (chordSymbol) {\n\treturn chordSymbolTpl({ chordSymbol });\n}\n","import { Chords } from 'momo-chords';\n\nconst chords = new Chords();\n\n/**\n * @param {ChordDef} chordDef\n * @returns {string}\n */\nexport default function(chordDef) {\n\treturn chords.print(chordDef.symbol);\n}","import getMaxBeatsWidth from '../spacers/chord/getMaxBeatsWidth';\n\nimport simpleChordSpacer from '../spacers/chord/simple';\nimport alignedChordSpacer from '../spacers/chord/aligned';\n\nimport transposeSong from '../modifiers/transposeSong';\nimport { forEachChordInSong } from '../../parser/helper/songs';\n\nimport renderChordLine from './renderChordLine';\nimport renderTextLine from './renderTextLine';\n\nimport songTpl from './tpl/song.hbs';\nimport getChordSymbol from '../helpers/getChordSymbol';\n\n/**\n * @param {Song} parsedSong\n * @param {Boolean} alignBars\n * @param {Number} transposeValue\n * @param {('auto'|'flat'|'sharp')} accidentalsType\n * @param {Boolean} harmonizeAccidentals\n * @returns {String} rendered HTML\n */\nexport default function renderSong(parsedSong, {\n\talignBars = false,\n\ttransposeValue = 0,\n\taccidentalsType = 'auto',\n\tharmonizeAccidentals = true\n} = {}) {\n\tlet { allLines, allChords } = parsedSong;\n\n\tallLines = transposeSong(allLines, allChords, {\n\t\ttransposeValue,\n\t\taccidentalsType,\n\t\tharmonizeAccidentals\n\t});\n\tallLines = forEachChordInSong(allLines, (chord) => {\n\t\tchord.symbol = (chord.transposedModel)\n\t\t\t? getChordSymbol(chord.transposedModel)\n\t\t\t: getChordSymbol(chord.model);\n\t});\n\n\tconst maxBeatsWidth = getMaxBeatsWidth(allLines);\n\n\tconst song = allLines\n\t\t.map(line => {\n\t\t\tif (line.type === 'chord') {\n\t\t\t\tconst spaced = (alignBars)\n\t\t\t\t\t? alignedChordSpacer(line.model, maxBeatsWidth)\n\t\t\t\t\t: simpleChordSpacer(line.model);\n\n\t\t\t\tline.rendered = renderChordLine(spaced);\n\n\t\t\t} else if (line.type === 'text') {\n\t\t\t\tline.rendered = renderTextLine(line.string);\n\t\t\t}\n\t\t\treturn line;\n\t\t})\n\t\t.filter(line => line.rendered)\n\t\t.map(line => line.rendered)\n\t\t.join('\\n');\n\n\treturn songTpl({ song });\n}\n\n\n","/**\n * @param {SongLine[]} allLines\n * @returns {Array}\n */\nexport default function getMaxBeatsWidth(allLines) {\n\tconst maxBeatsWidth = [];\n\n\tallLines\n\t\t.filter(line => line.type === 'chord')\n\t\t.forEach(line => {\n\t\t\tline.model.allBars.forEach((bar, barIndex) => {\n\t\t\t\tif (!maxBeatsWidth[barIndex]) {\n\t\t\t\t\tmaxBeatsWidth[barIndex] = {};\n\n\t\t\t\t\tfor (let i = 1; i <= bar.timeSignature.beatCount; i++) {\n\t\t\t\t\t\tmaxBeatsWidth[barIndex][i] = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbar.allChords.forEach(chord => {\n\t\t\t\t\tmaxBeatsWidth[barIndex][chord.beat] = Math.max(\n\t\t\t\t\t\tmaxBeatsWidth[barIndex][chord.beat],\n\t\t\t\t\t\tchord.symbol.length\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\treturn maxBeatsWidth;\n}\n","import chordLineTpl from './tpl/chordLine.hbs';\n\nimport renderBarContent from './renderBarContent';\nimport barSeparatorTpl from './tpl/barSeparator.hbs';\n\n/**\n * @param {ChordLine} chordLineModel\n * @returns {String} rendered html\n */\nexport default function renderChordLine(chordLineModel) {\n\tconst allBarsRendered = chordLineModel.allBars\n\t\t.map(bar => renderBarContent(bar));\n\n\tconst barSeparator = barSeparatorTpl();\n\n\tconst chordLine = barSeparator +\n\t\tallBarsRendered.join(barSeparator) +\n\t\tbarSeparator;\n\n\treturn chordLineTpl({ chordLine });\n}\n","import textLineTpl from './tpl/textLine.hbs';\nimport emptyLineTpl from './tpl/emptyLine.hbs';\n\n/**\n * @param {String} textLine\n * @returns {String} rendered html\n */\nexport default function render(textLine) {\n\treturn (textLine === '')\n\t\t? emptyLineTpl()\n\t\t: textLineTpl({ textLine });\n}\n","import { renderSong as renderSongUcc, parseSong } from '@touffi/ucc';\n\nexport default function renderSong(songTxt, renderOptions) {\n\tconst parsed = parseSong(songTxt);\n\treturn renderSongUcc(parsed, renderOptions);\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 renderSong from '../../core/renderSong';\n\nfunction SongRenderer(props) {\n\tconst {\n\t\tcontent\n\t} = props;\n\n\tconst renderOptions = _pick(props, [\n\t\t'alignBars',\n\t\t'harmonizeAccidentals',\n\t\t'accidentalsType',\n\t\t'transposeValue'\n\t]);\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n\nSongRenderer.propTypes = {\n\tcontent: PropTypes.string\n};\n\nSongRenderer.defaultProps = {\n\tcontent: ''\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(\n\tstate => ({\n\t\taccidentalsType: getOptionValue(state, 'rendering', 'preferredAccidentals'),\n\t\talignBars: getOptionValue(state, 'rendering', 'alignBars'),\n\t\tharmonizeAccidentals: getOptionValue(state, 'rendering', 'harmonizeAccidentals'),\n\t\ttransposeValue: getOptionValue(state, 'rendering', 'transposeValue'),\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\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';\nimport { nodes, marks } from 'prosemirror-schema-basic';\n\nconst editorSchema = new Schema({\n\tnodes: nodes,\n\tmarks: marks\n});\n\nexport default editorSchema;","/**\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\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\n\nfunction createEditorState(editorContent) {\n\treturn EditorState.create({\n\t\tdoc: pmDOMParser.fromSchema(editorSchema).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 } = this.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 selectedFileId && (!editorView.current || (previousFileId !== selectedFileId));\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(editorState, updateFile, selectedFileId);\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\n\t\t} else if (isEditorOrphan()) {\n\t\t\tdestroyEditor();\n\t\t}\n\t});\n\n\treturn (\n\t\t
\n\t);\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\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 EditorPreview from '../../../songRenderers/editorPreview/_components/EditorPreview';\nimport ProseMirrorEditorView from '../prosemirror/ProsemirrorEditorView';\n\nfunction EditorLayout(props) {\n\tconst { selectedFile, updateFile } = props;\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n\nEditorLayout.propTypes = {\n\tselectedFile: PropTypes.object,\n\tupdateFile: PropTypes.func.isRequired,\n};\n\nexport default EditorLayout;\n","import './ExportPreview.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction ExportPreview(props) {\n\tconst { selectedFile } = props;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n\nExportPreview.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n};\n\nexport default ExportPreview;\n","import './PlayRenderer.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction PlayRenderer(props) {\n\tconst { selectedFile } = props;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n\nPlayRenderer.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n};\n\nexport default PlayRenderer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport escapeHTML from '../../../core/escapeHTML';\n\nfunction Page(props) {\n\tconst { pageHeader, allColumnsLines, documentSize, documentMargins, printFontSize } = props;\n\n\tconst allSectionsRendered = allColumnsLines.map((columnLines, index) => {\n\t\tconst columnLinesTxt = columnLines.join('\\n');\n\n\t\treturn (\n\t\t\t\n\t\t);\n\t});\n\n\tconst pageClasses = ['printPreview-page'];\n\tpageClasses.push('printPreview-page--' + documentSize);\n\tpageClasses.push('printPreview-page--font' + printFontSize);\n\n\tconst pageContentWrapperClasses = ['printPreview-pageContentWrapper'];\n\tpageContentWrapperClasses.push('printPreview-pageContentWrapper--padding' + documentMargins);\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(\n\t\tPropTypes.arrayOf(\n\t\t\tPropTypes.string\n\t\t)\n\t),\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tprintFontSize: 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 (\n\t\t
\n\t\t\t{title}\n\t\t
\n\t);\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: 'ucc-empty-line',\n\tchordLine: 'ucc-chord-line',\n\ttextLine: 'ucc-text-line',\n};\n\n\n/**\n * @param {Object[]} allLinesWithHeight\n * @param {String} allLinesWithHeight.content\n * @param {Number} allLinesWithHeight.height\n * @param {Number} columnsCount\n * @param {Number} firstPageHeight\n * @param {Number} normalPageHeight\n * @param {Boolean} columnBreakOnParagraph\n * @param {Boolean} noEmptyLinesOnColumnStart\n * @param {Boolean} noOrphanTextLine\n * @returns {Array} array of pages, as array of columns\n */\nexport default function mapLinesToColumns(allLinesWithHeight, {\n\tcolumnsCount,\n\tfirstPageHeight,\n\tnormalPageHeight,\n\tcolumnBreakOnParagraph,\n\tnoEmptyLinesOnColumnStart = true,\n\tnoOrphanTextLine = true,\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\n\t\t\tif (shouldRenderLine(layout, line, buffer, noEmptyLinesOnColumnStart)) {\n\t\t\t\tbuffer.push(line);\n\t\t\t\tbufferHeight += line.height;\n\t\t\t}\n\n\t\t\tif (buffer.length > 0 && isBreakable(\n\t\t\t\tline,\n\t\t\t\tallLinesWithHeight[lineIndex + 1],\n\t\t\t\t{ noOrphanTextLine, columnBreakOnParagraph }\n\t\t\t)) {\n\t\t\t\tif (layout.fitsOnCurrentColumn(bufferHeight)) {\n\t\t\t\t\tlayout.insert(buffer);\n\n\t\t\t\t} else if (layout.fitsOnNextColumn(bufferHeight)) {\n\t\t\t\t\tlayout.insertOnNextColumn(buffer);\n\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\t&& buffer.length === 0\n\t\t&& noEmptyLinesOnColumnStart === true\n\t);\n}\n\nfunction isBreakable(currentLine, nextLine, { noOrphanTextLine, columnBreakOnParagraph }) {\n\tif (isEmptyLine(currentLine) || !nextLine) {\n\t\treturn true;\n\t}\n\n\tconst wouldProduceOrphanTextLine = isChordLine(currentLine) && isTextLine(nextLine);\n\tif (noOrphanTextLine === true && wouldProduceOrphanTextLine) {\n\t\treturn false;\n\t}\n\n\tconst isEndOfParagraph = isEmptyLine(nextLine);\n\tif (columnBreakOnParagraph === true && !isEndOfParagraph) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nfunction isEmptyLine(line) {\n\treturn hasClass(line.content, cssClasses.emptyLine);\n}\n\nfunction isChordLine(line) {\n\treturn hasClass(line.content, cssClasses.chordLine);\n}\n\nfunction isTextLine(line) {\n\treturn hasClass(line.content, cssClasses.textLine);\n}\n\nfunction hasClass(line, className) {\n\treturn line.indexOf(className) > -1;\n}\n\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) ? firstPageHeight : 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 = (pageIndex === 0 && columnIndex < columnsCount && firstPageHeight)\n\t\t\t\t? firstPageHeight\n\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\n","import './getDimensionsFromDom.scss';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport default function getDimensionsFromDom(component, measuringFn) {\n\tconst container = document.createElement('div');\n\tcontainer.classList.add('measuring-node');\n\tdocument.body.appendChild(container);\n\n\treturn new Promise(resolve => {\n\t\tReactDOM.render(
{component}
, container, () => {\n\n\t\t\tconst measure = measuringFn(container);\n\n\t\t\tReactDOM.unmountComponentAtNode(container);\n\t\t\tcontainer.parentNode.removeChild(container);\n\n\t\t\tresolve(measure);\n\t\t});\n\t});\n}\n\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: '.ucc-line',\n};\n\nexport default async function getAllLinesHeight(allLines, {\n\tcolumnsCount,\n\tdocumentSize,\n\tdocumentMargins,\n\tprintFontSize\n}) {\n\tconst component = ;\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(title, {\n\tcolumnsCount,\n\tdocumentSize,\n\tdocumentMargins,\n\tprintFontSize\n}) {\n\tconst component = }\n\t\tallColumnsLines={padColumns(columnsCount)}\n\t\tdocumentSize={documentSize}\n\t\tdocumentMargins={documentMargins}\n\t\tprintFontSize={printFontSize}\n\t/>;\n\n\tconst measuringFn = (container) => {\n\t\tconst pageContent = container.querySelector('.printPreview-pageContent');\n\t\tconst pageColumnWrapper = container.querySelector('.printPreview-pageColumnWrapper');\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\n\nfunction AllPages(props) {\n\tconst [ allPagesColumns, setAllPagesColumns ] = useState([]);\n\n\tconst {\n\t\ttitle,\n\t\tallLines,\n\t\tcolumnsCount,\n\t\tcolumnBreakOnParagraph,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tprintFontSize,\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\tprintFontSize\n\t\t\t};\n\n\t\t\tconst allLinesHeight = await getAllLinesHeight(allLines, pageOptions);\n\n\t\t\tconst { normalPageHeight, firstPageHeight } = await getPagesHeight(title, pageOptions);\n\n\t\t\tconst allLinesWithHeight = allLines.map((line, index) => ({\n\t\t\t\tcontent: line,\n\t\t\t\theight: allLinesHeight[index]\n\t\t\t}));\n\n\t\t\tconst mapped = mapLinesToColumns(allLinesWithHeight, {\n\t\t\t\tcolumnsCount,\n\t\t\t\tcolumnBreakOnParagraph,\n\t\t\t\tnormalPageHeight,\n\t\t\t\tfirstPageHeight,\n\t\t\t});\n\n\t\t\tsetAllPagesColumns(mapped);\n\t\t};\n\t\tgetDimensions();\n\t}, [\n\t\tallLines,\n\t\ttitle,\n\t\tcolumnsCount,\n\t\tcolumnBreakOnParagraph,\n\t\tdocumentSize,\n\t\tdocumentMargins,\n\t\tprintFontSize,\n\t]);\n\n\tconst allPagesRendered = allPagesColumns.map((pageColumns, index) => {\n\t\treturn : null}\n\t\t\tallColumnsLines={padColumns(columnsCount, pageColumns)}\n\t\t\tdocumentSize={documentSize}\n\t\t\tdocumentMargins={documentMargins}\n\t\t\tprintFontSize={printFontSize}\n\t\t/>;\n\t});\n\n\treturn (\n\t\t\n\t\t\t{allPagesRendered}\n\t\t\n\t);\n}\n\nAllPages.propTypes = {\n\ttitle: PropTypes.string.isRequired,\n\tallLines: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tcolumnBreakOnParagraph: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tprintFontSize: 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 renderSong from '../../../core/renderSong';\nimport AllPages from './AllPages';\n\n\nfunction PrintPreview(props) {\n\tconst { selectedFile } = props;\n\n\tconst renderOptions = _pick(props, [\n\t\t'alignBars',\n\t\t'harmonizeAccidentals',\n\t\t'accidentalsType',\n\t\t'transposeValue',\n\t]);\n\n\tconst allLines = renderSong(selectedFile.content, renderOptions).split('\\n');\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n}\nPrintPreview.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n\tcolumnsCount: PropTypes.number.isRequired,\n\tcolumnBreakOnParagraph: PropTypes.bool.isRequired,\n\tdocumentSize: PropTypes.string.isRequired,\n\tdocumentMargins: PropTypes.number.isRequired,\n\tprintFontSize: PropTypes.number.isRequired,\n};\n\nexport default PrintPreview;\n\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../../db/options/selectors';\n\nimport PrintPreview from '../_components/PrintPreview';\n\nexport default connect(\n\tstate => ({\n\t\tcolumnsCount: getOptionValue(state, 'rendering', 'columnsCount'),\n\t\tcolumnBreakOnParagraph: getOptionValue(state, 'rendering', 'columnBreakOnParagraph'),\n\t\tdocumentSize: getOptionValue(state, 'rendering', 'documentSize'),\n\t\tdocumentMargins: getOptionValue(state, 'rendering', 'documentMargins'),\n\t\taccidentalsType: getOptionValue(state, 'rendering', 'preferredAccidentals'),\n\t\talignBars: getOptionValue(state, 'rendering', 'alignBars'),\n\t\tharmonizeAccidentals: getOptionValue(state, 'rendering', 'harmonizeAccidentals'),\n\t\ttransposeValue: getOptionValue(state, 'rendering', 'transposeValue'),\n\t\tprintFontSize: getOptionValue(state, 'rendering', 'printFontSize'),\n\t})\n)(PrintPreview);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport EditorLayout from '../songEditor/_components/EditorLayout';\nimport ExportPreview from '../../songRenderers/exportPreview/_components/ExportPreview';\nimport PlayRenderer from '../../songRenderers/playRenderer/_components/PlayRenderer';\nimport PrintPreview from '../../songRenderers/printPreview/_containers/PrintPreview';\n\nfunction Editor(props) {\n\tconst { editorMode } = props;\n\n\tswitch (editorMode) {\n\t\tcase 'edit': return ;\n\t\tcase 'play': return ;\n\t\tcase 'print': return ;\n\t\tcase 'export': return ;\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\tstate => ({\n\t\tselectedFile: getOne(state, getSelectedId(state)) || {},\n\t\teditorMode: getEditorMode(state),\n\t}),\n\n\t{\n\t\tupdateFile\n\t}\n\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 = [\n\t\t'optionsPanel',\n\t\t'optionsPanel-' + id\n\t];\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 = !(nonInteractableWidgets.includes(widgetId)) && !(nonInteractableWidgets.includes(groupWidgetId));\n\n\t\t\t\t\t\treturn renderWidget(\n\t\t\t\t\t\t\tgroupWidgetId,\n\t\t\t\t\t\t\tgroupWidget,\n\t\t\t\t\t\t\tisGroupWidgetInteractable\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\tGroupComponent = getEntryComponent(widget.type);\n\t\t\t\tisGroupInteractable = !(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\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 (\n\t\t
\n\t\t\t{renderedWidgets}\n\t\t
\n\t);\n}\n\nOptionsPanel.propTypes = {\n\tid: PropTypes.string.isRequired,\n\tallWidgets: PropTypes.object.isRequired,\n\tnonInteractableWidgets: PropTypes.arrayOf(PropTypes.string).isRequired,\n\thiddenWidgets: PropTypes.arrayOf(PropTypes.string).isRequired,\n\tsetOption: PropTypes.func.isRequired,\n\tgetEntryComponent: PropTypes.func.isRequired,\n};\n\nexport default OptionsPanel;\n","import './OptionsGroup.scss';\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction OptionsGroup(props) {\n\tconst [ isOpened, setIsOpened ] = useState(props.isOpened);\n\n\tconst {\n\t\tisInteractable,\n\t\ticon,\n\t\tlabel\n\t} = props;\n\n\tconst classNames = ['sb-optionsGroup'];\n\tif (!shouldBeInteractable()) {\n\t\tclassNames.push('sb-optionsGroup-isNotInteractable');\n\t}\n\n\tif (shouldBeClosed()) {\n\t\tsetIsOpened(false);\n\t}\n\n\tfunction shouldBeInteractable() {\n\t\treturn isInteractable && props.children && props.children.length > 0;\n\t}\n\n\tfunction shouldBeClosed() {\n\t\treturn isOpened && (!props.children || props.children.length === 0);\n\t}\n\n\tfunction handleClick() {\n\t\tsetIsOpened(!isOpened);\n\t}\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t {label}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t{isOpened && props.children}\n\t\t\t
\n\t\t\n\t);\n}\n\nOptionsGroup.propTypes = {\n\tisOpened: PropTypes.bool,\n\tisInteractable: PropTypes.bool.isRequired,\n\ticon: PropTypes.string.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tchildren: PropTypes.arrayOf(PropTypes.element),\n};\n\nOptionsGroup.defaultProps = {\n\tisOpened: false,\n};\n\nexport default OptionsGroup;\n","import './Select.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Icon from '../../../_components/Icon';\n\nfunction SelectChoice(props) {\n\tconst {\n\t\tisSelected,\n\t\tlabel,\n\t\tonClick\n\t} = 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\n\treturn (\n\t\t\n\t\t\t
\n\t\t\t\t{isSelected && checkIcon}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{label}\n\t\t\t
\n\t\t\n\t);\n}\n\nSelectChoice.propTypes = {\n\tisSelected: PropTypes.bool.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tonClick: PropTypes.func.isRequired,\n};\n\nexport default React.memo(SelectChoice);\n\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)\n\t\t? null\n\t\t: (\n\t\t\t
\n\t\t\t\t{allChoices.map(choice =>\n\t\t\t\t\t setOption(optionContext, optionKey, choice.value)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t
\n\t\t);\n\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t
{label}
\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(\n\t\t\toptionContext,\n\t\t\toptionKey,\n\t\t\tNumber.parseInt(e.target.value)\n\t\t);\n\t}\n\n\tconst valueDisplay = (optionValue > 0 && showPlusSymbol)\n\t\t? '+' + optionValue\n\t\t: 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\t(optionValue === 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\n\nfunction getEntryComponent(type) {\n\tswitch (type) {\n\t\tcase 'optionsGroup': return OptionsGroup;\n\t\tcase 'select': return Select;\n\t\tcase 'slider': return Slider;\n\t\tcase 'toggle': return 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\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\n","/* eslint-disable max-lines */\nexport default {\n\twidgetsOrder: [\n\t\t'style',\n\t\t'alignBars',\n\n\t\t'layout',\n\t\t'helpers',\n\t\t'chords',\n\t\t'format',\n\t],\n\n\tallWidgets: {\n\t\tstyle: {\n\t\t\tlabel: 'Rendering style',\n\t\t\ttype: 'select',\n\t\t\ttypeOptions: {\n\t\t\t\tallChoices: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'styleUcc',\n\t\t\t\t\t\tlabel: 'UCC',\n\t\t\t\t\t\tvalue: 'ucc'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'styleChordpro',\n\t\t\t\t\t\tlabel: 'ChordPro',\n\t\t\t\t\t\tvalue: 'chordpro'\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\toption: {\n\t\t\t\tcontext: 'rendering',\n\t\t\t\tkey: 'style'\n\t\t\t},\n\t\t},\n\t\talignBars: {\n\t\t\tlabel: 'Align bars',\n\t\t\ttype: 'toggle',\n\t\t\toption: {\n\t\t\t\tcontext: 'rendering',\n\t\t\t\tkey: 'alignBars'\n\t\t\t},\n\t\t},\n\n\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'documentSize',\n\t\t\t\t'documentMargins',\n\t\t\t\t'columnsCount',\n\t\t\t\t'columnBreakOnParagraph',\n\t\t\t],\n\t\t\tallGroupWidgets: {\n\t\t\t\tdocumentSize: {\n\t\t\t\t\tlabel: 'Document size',\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: 'documentSizeA4',\n\t\t\t\t\t\t\t\tlabel: 'A4',\n\t\t\t\t\t\t\t\tvalue: 'a4'\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: 'documentSizeBooxMax2Pro',\n\t\t\t\t\t\t\t\tlabel: 'Boox Max 2 Pro',\n\t\t\t\t\t\t\t\tvalue: 'booxmax2pro'\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: 'rendering',\n\t\t\t\t\t\tkey: 'documentSize'\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: 'rendering',\n\t\t\t\t\t\tkey: 'documentMargins'\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: 3\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'columnsCount'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tcolumnBreakOnParagraph: {\n\t\t\t\t\tlabel: 'Break on paragraph',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'columnBreakOnParagraph'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\n\t\thelpers: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Helpers',\n\t\t\ticon: 'remove_red_eye',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'showChords',\n\t\t\t\t'instrument',\n\t\t\t\t'showStrummingPattern',\n\t\t\t],\n\n\t\t\tallGroupWidgets: {\n\t\t\t\tshowChords: {\n\t\t\t\t\tlabel: 'Show chords diagrams',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'showChords'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tinstrument: {\n\t\t\t\t\tlabel: 'Instrument',\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: 'instrumentGuitar',\n\t\t\t\t\t\t\t\tlabel: 'Guitar',\n\t\t\t\t\t\t\t\tvalue: 'guitar'\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: 'instrumentUkulele',\n\t\t\t\t\t\t\t\tlabel: 'Ukulele',\n\t\t\t\t\t\t\t\tvalue: 'ukulele'\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: 'instrumentMandolin',\n\t\t\t\t\t\t\t\tlabel: 'Mandolin',\n\t\t\t\t\t\t\t\tvalue: 'mandolin'\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: 'instrumentPiano',\n\t\t\t\t\t\t\t\tlabel: 'Piano',\n\t\t\t\t\t\t\t\tvalue: 'piano'\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: 'rendering',\n\t\t\t\t\t\tkey: 'instrument'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tshowStrummingPattern: {\n\t\t\t\t\tlabel: 'Show strumming pattern',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'showStrummingPattern'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\n\t\tchords: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Chords',\n\t\t\ticon: 'music_note',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'transposeValue',\n\t\t\t\t'simplifyChords',\n\t\t\t\t'capoPosition',\n\t\t\t\t'harmonizeAccidentals',\n\t\t\t\t'preferredAccidentals',\n\t\t\t],\n\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: 'rendering',\n\t\t\t\t\t\tkey: 'transposeValue'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tsimplifyChords: {\n\t\t\t\t\tlabel: 'Simplify chords',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'simplifyChords'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tcapoPosition: {\n\t\t\t\t\tlabel: 'Add capo on fret',\n\t\t\t\t\ttype: 'slider',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\tmax: 11,\n\t\t\t\t\t\tshowPlusSymbol: false,\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'capoPosition'\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: 'rendering',\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: 'Sharp (#)',\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: 'Flats (b)',\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: 'rendering',\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\n\t\tformat: {\n\t\t\ttype: 'optionsGroup',\n\t\t\tlabel: 'Format',\n\t\t\ticon: 'format_size',\n\n\t\t\tgroupWidgetsOrder: [\n\t\t\t\t'fontSize',\n\t\t\t\t'printFontSize',\n\t\t\t\t'fontStyle',\n\t\t\t\t'chordsColor',\n\t\t\t\t'highlightChords',\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: 'rendering',\n\t\t\t\t\t\tkey: 'fontSize'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tprintFontSize: {\n\t\t\t\t\tlabel: 'Font size (print)',\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: 'rendering',\n\t\t\t\t\t\tkey: 'printFontSize'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tfontStyle: {\n\t\t\t\t\tlabel: 'Font style',\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: 'fontStyleRoboto',\n\t\t\t\t\t\t\t\tlabel: 'Roboto',\n\t\t\t\t\t\t\t\tvalue: 'roboto'\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: 'rendering',\n\t\t\t\t\t\tkey: 'fontStyle'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\tchordsColor: {\n\t\t\t\t\tlabel: 'Chords color',\n\t\t\t\t\ttype: 'select',\n\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\tallChoices: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColor',\n\t\t\t\t\t\t\t\tlabel: 'Black',\n\t\t\t\t\t\t\t\tvalue: 'black'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'chordsColorRed',\n\t\t\t\t\t\t\t\tlabel: 'Red',\n\t\t\t\t\t\t\t\tvalue: 'red'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'chordsColor'\n\t\t\t\t\t},\n\t\t\t\t},\n\n\t\t\t\thighlightChords: {\n\t\t\t\t\tlabel: 'Highlight Chords',\n\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\toption: {\n\t\t\t\t\t\tcontext: 'rendering',\n\t\t\t\t\t\tkey: 'highlightChords'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t},\n};\n","import { connect } from 'react-redux';\n\nimport { getOptionValue } from '../../db/options/selectors';\nimport { setOptionValue } from '../../db/options/actions';\n\nexport default function OptionsPanelFactory(allWidgets, getNonInteractableWidgets, getHiddenWidgets, component) {\n\treturn connect(\n\t\tstate => {\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\tif (widget.type === 'optionsGroup') {\n\t\t\t\t\twidget.groupWidgetsOrder.forEach(groupWidgetId => {\n\t\t\t\t\t\tgroupWidget = widget.allGroupWidgets[groupWidgetId];\n\n\t\t\t\t\t\tstateToProps[groupWidget.option.key] = getOptionValue(state, groupWidget.option.context, groupWidget.option.key);\n\t\t\t\t\t});\n\n\t\t\t\t} else {\n\t\t\t\t\tstateToProps[widget.option.key] = getOptionValue(state, widget.option.context, widget.option.key);\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\n\t)(component);\n}\n\n","import Rendering from '../_components/Rendering';\nimport OptionsPanelFactory from '../../_containers/OptionsPanelFactory';\n\nimport allWidgets from '../allWidgets';\nimport { getNonInteractableWidgets, getHiddenWidgets } from '../_state/selectors';\n\nexport default OptionsPanelFactory(allWidgets, getNonInteractableWidgets, getHiddenWidgets, Rendering);\n","import { getEditorMode } from '../../../ui/layout/app/_state/selectors';\nimport { getOptionValue } from '../../../db/options/selectors';\n\nexport const getNonInteractableWidgets = (state) => {\n\tconst nonInteractableWidgets = [];\n\n\tconst editorMode = getEditorMode(state);\n\n\tswitch (editorMode) {\n\t\tcase 'edit': {\n\t\t\tnonInteractableWidgets.push('alignBars');\n\t\t\tnonInteractableWidgets.push('helpers');\n\t\t\tnonInteractableWidgets.push('layout');\n\t\t\tnonInteractableWidgets.push('style');\n\t\t\tbreak;\n\t\t}\n\t\tcase 'play': {\n\t\t\tnonInteractableWidgets.push('documentSize');\n\t\t\tnonInteractableWidgets.push('documentMargins');\n\t\t\tbreak;\n\t\t}\n\t\tcase 'print': {\n\t\t\tbreak;\n\t\t}\n\t\tcase 'export': {\n\t\t\tnonInteractableWidgets.push('format');\n\t\t\tnonInteractableWidgets.push('layout');\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst style = getOptionValue(state, 'rendering', 'style');\n\tif (style !== 'ucc') {\n\t\tnonInteractableWidgets.push('alignBars');\n\t}\n\n\treturn nonInteractableWidgets;\n};\n\nexport const getHiddenWidgets = (state) => {\n\tconst nonVisibleWidgets = [];\n\n\tconst editorMode = getEditorMode(state);\n\n\tconst showChords = getOptionValue(state, 'rendering', 'showChords');\n\tconst harmonizeAccidentals = getOptionValue(state, 'rendering', 'harmonizeAccidentals');\n\n\tif (!showChords) {\n\t\tnonVisibleWidgets.push('instrument');\n\t}\n\tif (!harmonizeAccidentals) {\n\t\tnonVisibleWidgets.push('preferredAccidentals');\n\t}\n\n\tif (editorMode === 'print') {\n\t\tnonVisibleWidgets.push('fontSize');\n\t} else {\n\t\tnonVisibleWidgets.push('printFontSize');\n\t}\n\n\treturn nonVisibleWidgets;\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)\n\t\t\t.then(controller => {\n\t\t\t\treturn renderController(controller);\n\t\t\t});\n\t}\n};\n\n\n","import React from 'react';\nimport ReactDom from 'react-dom';\nimport { Provider } from 'react-redux';\n\nimport { getStore } from './state/store';\n\nimport ErrorBoundary from './ui/_components/ErrorBoundary';\n\nexport default function renderController(Controller) {\n\tReactDom.render(\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t,\n\t\tdocument.getElementById('app')\n\t);\n}\n","import '../scss/styles.scss';\n\nimport { createStore } from './state/store';\nimport router from './router';\n\nexport default function run() {\n\tcreateStore();\n\n\treturn router.navigateTo('/editor');\n}\n","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"

\"\n + ((stack1 = container.lambda((depth0 != null ? depth0.textLine : depth0), depth0)) != null ? stack1 : \"\")\n + \"

\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"\"\n + container.escapeExpression(container.lambda((depth0 != null ? depth0.chordSymbol : depth0), depth0))\n + \"\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../chords-charts-studio/node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"

\"\n + ((stack1 = container.lambda((depth0 != null ? depth0.chordLine : depth0), depth0)) != null ? stack1 : \"\")\n + \"

\";\n},\"useData\":true});"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/vendors~main.5193b2580c35e5309aae.js b/docs/vendors~main.dbae970e9fc0ba07e9ca.js similarity index 99% rename from docs/vendors~main.5193b2580c35e5309aae.js rename to docs/vendors~main.dbae970e9fc0ba07e9ca.js index ff0ae7b4..397d9223 100644 --- a/docs/vendors~main.5193b2580c35e5309aae.js +++ b/docs/vendors~main.dbae970e9fc0ba07e9ca.js @@ -52,4 +52,4 @@ var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Arr * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var r=n("q1tI"),o=n("MgzW"),i=n("QCnb");function a(t){for(var e=arguments.length-1,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=0;rthis.eventPool.length&&this.eventPool.push(t)}function ft(t){t.eventPool=[],t.getPooled=ct,t.release=lt}o(ut.prototype,{preventDefault:function(){this.defaultPrevented=!0;var t=this.nativeEvent;t&&(t.preventDefault?t.preventDefault():"unknown"!=typeof t.returnValue&&(t.returnValue=!1),this.isDefaultPrevented=at)},stopPropagation:function(){var t=this.nativeEvent;t&&(t.stopPropagation?t.stopPropagation():"unknown"!=typeof t.cancelBubble&&(t.cancelBubble=!0),this.isPropagationStopped=at)},persist:function(){this.isPersistent=at},isPersistent:st,destructor:function(){var t,e=this.constructor.Interface;for(t in e)this[t]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=st,this._dispatchInstances=this._dispatchListeners=null}}),ut.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},ut.extend=function(t){function e(){}function n(){return r.apply(this,arguments)}var r=this;e.prototype=r.prototype;var i=new e;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,t),n.extend=r.extend,ft(n),n},ft(ut);var pt=ut.extend({data:null}),dt=ut.extend({data:null}),ht=[9,13,27,32],vt=q&&"CompositionEvent"in window,mt=null;q&&"documentMode"in document&&(mt=document.documentMode);var yt=q&&"TextEvent"in window&&!mt,gt=q&&(!vt||mt&&8=mt),bt=String.fromCharCode(32),xt={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},wt=!1;function St(t,e){switch(t){case"keyup":return-1!==ht.indexOf(e.keyCode);case"keydown":return 229!==e.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function kt(t){return"object"==typeof(t=t.detail)&&"data"in t?t.data:null}var Ot=!1;var Tt={eventTypes:xt,extractEvents:function(t,e,n,r){var o=void 0,i=void 0;if(vt)t:{switch(t){case"compositionstart":o=xt.compositionStart;break t;case"compositionend":o=xt.compositionEnd;break t;case"compositionupdate":o=xt.compositionUpdate;break t}o=void 0}else Ot?St(t,n)&&(o=xt.compositionEnd):"keydown"===t&&229===n.keyCode&&(o=xt.compositionStart);return o?(gt&&"ko"!==n.locale&&(Ot||o!==xt.compositionStart?o===xt.compositionEnd&&Ot&&(i=it()):(rt="value"in(nt=r)?nt.value:nt.textContent,Ot=!0)),o=pt.getPooled(o,e,n,r),i?o.data=i:null!==(i=kt(n))&&(o.data=i),W(o),i=o):i=null,(t=yt?function(t,e){switch(t){case"compositionend":return kt(e);case"keypress":return 32!==e.which?null:(wt=!0,bt);case"textInput":return(t=e.data)===bt&&wt?null:t;default:return null}}(t,n):function(t,e){if(Ot)return"compositionend"===t||!vt&&St(t,e)?(t=it(),ot=rt=nt=null,Ot=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1