diff --git a/.eslintrc.js b/.eslintrc.js index 0a347fd2..2ace10ca 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -6,7 +6,8 @@ module.exports = { 'plugins': [ 'import', 'no-unsanitized', - 'react-hooks' + 'react-hooks', + 'jam3', // for dangerouslySetInnerHTML ], 'extends': [ @@ -46,13 +47,15 @@ module.exports = { } ], + 'jam3/no-sanitizer-with-danger': ['error', { wrapperName: ['escapeHTML'] }], + 'no-unsanitized/property': [ 'error', { escape: { methods: ['escapeHTML'] } } ], 'no-unsanitized/method': [ 'error' ], 'react/prop-types': [ 'error' ], 'react-hooks/rules-of-hooks': [ 'error' ], - 'react-hooks/exhaustive-deps': [ 'warn' ] + 'react-hooks/exhaustive-deps': [ 'warn' ], }, 'settings': { diff --git a/.idea/.name b/.idea/.name index 612b25e1..bd0e5a9c 100644 --- a/.idea/.name +++ b/.idea/.name @@ -1 +1 @@ -ucc-demo \ No newline at end of file +chords-charts-studio \ No newline at end of file diff --git a/.idea/ucc-demo.iml b/.idea/chords-charts-studio.iml similarity index 100% rename from .idea/ucc-demo.iml rename to .idea/chords-charts-studio.iml diff --git a/.idea/modules.xml b/.idea/modules.xml index fceac803..edf32640 100755 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file 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 d57428fe..1a72c069 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## v0.6.0 (28/04/2019) + +#### New features: + +- Added print preview functionality +- adopted new versioning schema as semver does not make sense here + +--- + ## v0.5.0 (14/04/2019) #### New features: diff --git a/SLOC b/SLOC index 6f59fdb3..fcbe5d06 100644 --- a/SLOC +++ b/SLOC @@ -2,17 +2,17 @@ Source code: ---------- Result ------------ - Physical : 3535 - Source : 2802 - Comment : 42 - Single-line comment : 10 - Block comment : 32 + Physical : 4298 + Source : 3419 + Comment : 67 + Single-line comment : 19 + Block comment : 48 Mixed : 0 Empty block comment : 0 - Empty : 691 + Empty : 812 To Do : 0 -Number of files read : 94 +Number of files read : 108 ---------------------------- @@ -20,17 +20,17 @@ Tests: ---------- Result ------------ - Physical : 3342 - Source : 2559 - Comment : 33 - Single-line comment : 30 - Block comment : 3 + Physical : 4060 + Source : 3137 + Comment : 42 + Single-line comment : 37 + Block comment : 5 Mixed : 0 Empty block comment : 0 - Empty : 750 + Empty : 881 To Do : 0 -Number of files read : 40 +Number of files read : 48 ---------------------------- @@ -38,17 +38,17 @@ Total: ---------- Result ------------ - Physical : 6877 - Source : 5361 - Comment : 75 - Single-line comment : 40 - Block comment : 35 + Physical : 8358 + Source : 6556 + Comment : 109 + Single-line comment : 56 + Block comment : 53 Mixed : 0 Empty block comment : 0 - Empty : 1441 + Empty : 1693 To Do : 0 -Number of files read : 134 +Number of files read : 156 ---------------------------- diff --git a/assets/index.html b/assets/index.html index bd323c19..f8a7947b 100755 --- a/assets/index.html +++ b/assets/index.html @@ -6,7 +6,7 @@ <%= htmlWebpackPlugin.options.title %> - + diff --git a/docs/css/main.1c344598d7d62d4c882b.css b/docs/css/main.1c344598d7d62d4c882b.css deleted file mode 100644 index 44a8149f..00000000 --- a/docs/css/main.1c344598d7d62d4c882b.css +++ /dev/null @@ -1,2 +0,0 @@ -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}#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}.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}.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}.appLayout-content{overflow-y:auto;flex-grow:1}.theme-dark .appLayout-content{background-color:#2e4052}.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}.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}.ucc-song{font-family:consolas,courier,monospace;font-size:1.4rem}.ucc-song .ucc-chord-line{font-weight:700;white-space:pre-wrap;background-color:rgba(0,0,0,.1)}.ucc-song .ucc-chord-line .ucc-bar-separator{margin:0 10px;color:#999}.ucc-song .ucc-chord-line .ucc-bar-separator:first-of-type{margin-left:0}.ucc-song .ucc-chord-line .ucc-bar-separator:last-of-type{margin-right:0}.prosemirrorWrapper{flex:1 1 auto;overflow-y:scroll;padding:1rem}.theme-dark .prosemirrorWrapper{background-color:#1c2731}.ProseMirror{overflow-y:scroll;outline:none;font-family: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{width:100%;height:100%;padding:20px;overflow-y:scroll}.theme-dark .printPreview{background-color:#2e4052}.printPreview-page{margin:0 auto;width:210mm;height:297mm;padding:15mm;background-color:#fff;border:1px solid #000}.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.1c344598d7d62d4c882b.css.map */ \ No newline at end of file diff --git a/docs/css/main.1c344598d7d62d4c882b.css.map b/docs/css/main.1c344598d7d62d4c882b.css.map deleted file mode 100644 index 826cf498..00000000 --- a/docs/css/main.1c344598d7d62d4c882b.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///scss/styles.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:///ucc/scss/ucc.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/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.1c344598d7d62d4c882b.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","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\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\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\n.appLayout-content {\n overflow-y: auto;\n flex-grow: 1; }\n .theme-dark .appLayout-content {\n background-color: #2e4052; }\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",".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",".ucc-song {\n font-family: consolas, courier, monospace;\n font-size: 1.4rem; }\n .ucc-song .ucc-chord-line {\n font-weight: bold;\n white-space: pre-wrap;\n background-color: rgba(0, 0, 0, 0.1); }\n .ucc-song .ucc-chord-line .ucc-bar-separator {\n margin: 0 10px;\n color: #999; }\n .ucc-song .ucc-chord-line .ucc-bar-separator:first-of-type {\n margin-left: 0; }\n .ucc-song .ucc-chord-line .ucc-bar-separator:last-of-type {\n margin-right: 0; }\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: 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 width: 100%;\n height: 100%;\n padding: 20px;\n overflow-y: scroll; }\n .theme-dark .printPreview {\n background-color: #2e4052; }\n\n.printPreview-page {\n margin: 0 auto;\n width: 210mm;\n height: 297mm;\n padding: 15mm;\n background-color: white;\n border: black 1px solid; }\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/main.dbae970e9fc0ba07e9ca.css b/docs/css/main.dbae970e9fc0ba07e9ca.css new file mode 100644 index 00000000..016cc6db --- /dev/null +++ b/docs/css/main.dbae970e9fc0ba07e9ca.css @@ -0,0 +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.dbae970e9fc0ba07e9ca.css.map */ \ No newline at end of file diff --git a/docs/css/main.dbae970e9fc0ba07e9ca.css.map b/docs/css/main.dbae970e9fc0ba07e9ca.css.map new file mode 100644 index 00000000..786610c2 --- /dev/null +++ b/docs/css/main.dbae970e9fc0ba07e9ca.css.map @@ -0,0 +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.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.1c344598d7d62d4c882b.css b/docs/css/vendors~main.dbae970e9fc0ba07e9ca.css similarity index 97% rename from docs/css/vendors~main.1c344598d7d62d4c882b.css rename to docs/css/vendors~main.dbae970e9fc0ba07e9ca.css index 082882bd..60ca2506 100644 --- a/docs/css/vendors~main.1c344598d7d62d4c882b.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.1c344598d7d62d4c882b.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.1c344598d7d62d4c882b.css.map b/docs/css/vendors~main.dbae970e9fc0ba07e9ca.css.map similarity index 99% rename from docs/css/vendors~main.1c344598d7d62d4c882b.css.map rename to docs/css/vendors~main.dbae970e9fc0ba07e9ca.css.map index a99e8efc..41c12a6a 100644 --- a/docs/css/vendors~main.1c344598d7d62d4c882b.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.1c344598d7d62d4c882b.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 4e9786dd..21a4cdf1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,10 +6,10 @@ Chords Charts Studio - + - +
- + diff --git a/docs/main.1c344598d7d62d4c882b.js b/docs/main.1c344598d7d62d4c882b.js deleted file mode 100644 index dadf6996..00000000 --- a/docs/main.1c344598d7d62d4c882b.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],d=0,p=[];d= 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){},NoTV: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 d(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=d({},e.allFiles);return i[r]={id:r,title:a,content:o},d({},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=d({},e.allFiles);return i[r]=d({},i[r]),a&&(i[r].title=a),o&&(i[r].content=o),d({},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=d({},e.allFiles);return delete r[n],d({},e,{allFiles:r})}(e,t)}return e},options:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b,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}}),h="fileManager/select",v="fileManager/enableRename";function E(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:j,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(t.type){case w:return N({},e,{isLeftBarCollapsed:!e.isLeftBarCollapsed});case S:return N({},e,{isRightBarCollapsed:!e.isRightBarCollapsed});case R:return N({},e,{editorMode:t.payload.mode})}return e}}),k=Object(o.b)({layout:T}),q=Object(o.b)({db:y,fileManager:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:C,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 h:var r=t.payload.id;return E({},e,{selected:r,renamed:r===e.renamed?r:""});case v:return E({},e,{renamed:t.payload.id})}return e},ui:k}),B={db:{options:{rendering:{documentSize:{value:"a4",default:"a4",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},fontStyle:{value:"roboto",default:"roboto",resetOnSongChange:!1},highlightChords:{value:!0,default:!0,resetOnSongChange:!1},chordsColor:{value:"black",default:"black",resetOnSongChange:!1}}}}},F=[];var M=n("d/CZ"),_=n("q1tI"),I=n.n(_),A=n("i8i4"),L=n.n(A),z=n("/MKj");function D(e,t){if(!e)throw new TypeError("Cannot create an action without an action type");return{type:e,payload:t}}var G=function(e){return e.ui.layout.app.isLeftBarCollapsed},W=function(e){return e.ui.layout.app.isRightBarCollapsed},V=function(e){return e.ui.layout.app.editorMode},U=(n("oVuX"),n("JeH2"),n("17x9")),K=n.n(U);n("6/UV"),n("PuEf");function J(e){var t=e.iconName;return I.a.createElement("i",{className:["icon","material-icons"].join(" ")},t)}J.propTypes={iconName:K.a.string.isRequired};var H=I.a.memo(J);var Z=I.a.memo(function(){return I.a.createElement("div",{className:"logo"},I.a.createElement("div",{className:"logo-isCollapsed"},I.a.createElement(H,{iconName:"queue_music"})),I.a.createElement("div",{className:"logo-isExpanded"},I.a.createElement("span",{className:"logo-icon"},I.a.createElement(H,{iconName:"queue_music"})),"Chords Charts Studio"))});n("2B1R"),n("zKZe"),n("g3KT");function X(e){var t=e.label,n=e.icon,r=e.editorMode,a=e.setEditorMode,o=["mainNavEntry"];return e.isActive&&o.push("mainNavEntry-isActive"),I.a.createElement("li",{className:o.join(" "),onClick:function(){a(r)}},I.a.createElement("span",{className:"mainNavEntry-icon"},I.a.createElement(H,{iconName:n})),t)}X.propTypes={label:K.a.string.isRequired,icon:K.a.string.isRequired,editorMode:K.a.string.isRequired,setEditorMode:K.a.func.isRequired,isActive:K.a.bool.isRequired};var Q=I.a.memo(X);function Y(){return(Y=Object.assign||function(e){for(var t=1;t1&&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 D(u,{id:e,title:n,content:r})},pe=n("3WF5"),fe=n.n(pe),me=n("Y+p1"),ge=n.n(me),be=n("xweI"),ye=n.n(be),he=n("G4qV"),ve=Object(he.a)(he.b,ge.a)(function(e){return fe()(e.db.files.allFiles,function(e){return{title:e.title,id:e.id}})},function(e){return ye()(e,function(e){return e.title.toLowerCase()})}),Ee=function(e,t){return e.db.files.allFiles[t]};n("kGR0");function Oe(e){var t=e.icon,n=e.text,r=e.action;return I.a.createElement("span",{className:"fileManagerAction",onClick:r},I.a.createElement("span",{className:"fileManagerAction-icon"},I.a.createElement(H,{iconName:t})," ",n))}Oe.propTypes={icon:K.a.string.isRequired,text:K.a.string.isRequired,action:K.a.func.isRequired};var Ce=I.a.memo(Oe);function we(){return(we=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 Ge()(e)&&Ve.isChord(e)}(e)})}n("Ecbk");var Ke=["2/2","3/2","3/4","4/4","5/4","3/8","6/8","9/8","12/8"];function Je(e){return Ke.includes(e)}n("0T4K"),n("Dzwt");function He(e){if(!Je(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 Ze=n("wfLL"),Xe=n.n(Ze),Qe=n("XhyR"),Ye=n.n(Qe),$e=new We.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 et=n("okNX"),tt=n.n(et);function nt(e){return(nt="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 rt(e,t){return!t||"object"!==nt(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 at(e){var t="function"==typeof Map?new Map:void 0;return(at=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,lt(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),it(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&&it(a,n.prototype),a}).apply(null,arguments)}function it(e,t){return(it=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function lt(e){return(lt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var ct=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||!Ge()(r))throw new TypeError("IncorrectBeatCountException cannot be created without chord string, received: "+r);if(!a||!tt()(a))throw new TypeError("IncorrectBeatCountException cannot be created without chord duration, received: "+a);if(!o||!tt()(o))throw new TypeError("IncorrectBeatCountException cannot be created without currentBeatCount, received: "+o);if(!i||!tt()(i))throw new TypeError("IncorrectBeatCountException cannot be created without beatCount, received: "+i);return(e=rt(this,lt(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&&it(e,t)}(t,at(Error)),t}();function ut(e){return(ut="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 st(e,t){return!t||"object"!==ut(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 dt(e){var t="function"==typeof Map?new Map:void 0;return(dt=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 pt(e,arguments,mt(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),ft(r,e)})(e)}function pt(e,t,n){return(pt=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&&ft(a,n.prototype),a}).apply(null,arguments)}function ft(e,t){return(ft=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function mt(e){return(mt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var gt=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||!Ge()(n))throw new TypeError("InvalidChordRepetitionException cannot be created without chord string, received: "+n);return(e=st(this,mt(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&&ft(e,t)}(t,dt(Error)),t}();function bt(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).timeSignature,n=void 0===t?He("4/4"):t,r=n.beatCount,a=e.replace(/ +/g," ").trim().split(" "),o=[],i={allChords:[]},l={},c={},u=0,s=0,d={};if(a.forEach(function(e){if(c=function(e){return $e.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&&(d=i.allChords[i.allChords.length-1],Xe()(d.model,l.model)))throw new gt({string:l.string});if(i.allChords.push(l),s++,u===r)i.timeSignature=n,o.push(Ye()(i)),i={allChords:[]},u=0,d={};else if(u>r)throw new ct({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=Ye()(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=vt(u,function(e){e.transposedModel=function(e,t,n){var r=Ye()(e),a=r.symbol.rootNote,o=r.symbol.bassNote,i=Pt(a);if(r.symbol.rootNote=Tt(i,t,n),o){var l=Pt(o);r.symbol.bassNote=Tt(l,t,n)}return r}(e.model,a,"flat"===s)})),u}var qt=n("uVib"),Bt=n.n(qt),Ft=(n("eWUb"),n("FxsW"),n("lb95")),Mt=n.n(Ft);var _t=n("6joI"),It=n.n(_t),At=" ",Lt=0,zt=2;function Dt(e){var t=0,n=0,r=e.allChords.reduce(function(e,r){var a;return t=tt()(r.spacesWithin)?r.spacesWithin:Lt,n=tt()(r.spacesAfter)?r.spacesAfter:zt,e+=(a=r.symbol,Mt()({chordSymbol:a})+At.repeat(t)+At.repeat(n))},"");return It()({barContent:r})}var Gt=n("Ewt9"),Wt=n.n(Gt);var Vt=n("d6nv"),Ut=n.n(Vt);var Kt=n("9hQf"),Jt=n.n(Kt),Ht=new We.Chords,Zt=function(e){return Ht.print(e.symbol)};function Xt(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,d=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=vt(s=kt(s,e.allChords,{transposeValue:o,accidentalsType:l,harmonizeAccidentals:u}),function(e){e.symbol=e.transposedModel?Zt(e.transposedModel):Zt(e.model)})),p=s.map(function(e){if("chord"===e.type){var t=r?function(e,t){var n,r=Ye()(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=wt;for(var o=a.beat+1;o".concat(e,"

")}).join(""),r=document.createElement("div"),r.innerHTML=gn(n),r),{preserveWhitespace:"full"}),plugins:[Object(un.history)(),Object(ln.keymap)({"Mod-z":un.undo,"Mod-y":un.redo}),Object(ln.keymap)(cn.baseKeymap)]});var t,n,r}(a);i.current=function(e,t,n){return new an.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:pn(a)})}})}(e,o,r),l.current.appendChild(i.current.dom),bn.editorView=i.current}}),I.a.createElement("div",{className:"prosemirrorWrapper",ref:l})}bn.defaultProps={selectedFileId:"",editorContent:""},bn.propTypes={selectedFileId:K.a.string,editorContent:K.a.string,updateFile:K.a.func.isRequired};var yn=bn;function hn(e){var t=e.selectedFile,n=e.updateFile;return I.a.createElement("div",{className:"songEditor"},I.a.createElement("div",{className:"songEditor-source"},I.a.createElement(yn,{editorContent:t.content,updateFile:n,selectedFileId:t.id})),I.a.createElement("div",{className:"songEditor-preview"},I.a.createElement(nn,{selectedFile:t})))}hn.propTypes={selectedFile:K.a.object,updateFile:K.a.func.isRequired};var vn=hn;n("IA7u");function En(e){var t=e.selectedFile;return I.a.createElement("div",{className:"exportPreview exp-SongRenderer"},I.a.createElement(en,{content:t.content}))}En.propTypes={selectedFile:K.a.object.isRequired};var On=En;n("eLJI");function Cn(e){var t=e.selectedFile;return I.a.createElement("div",{className:"playRenderer pr-SongRenderer"},I.a.createElement(en,{content:t.content}))}Cn.propTypes={selectedFile:K.a.object.isRequired};var wn=Cn;n("fNiH");function Sn(e){var t=e.selectedFile;return I.a.createElement("div",{className:"printPreview"},I.a.createElement("div",{className:"printPreview-page pp-SongRenderer"},I.a.createElement(en,{content:t.content})))}Sn.propTypes={selectedFile:K.a.object.isRequired};var Rn=Sn;function Nn(e){switch(e.editorMode){case"edit":return I.a.createElement(vn,e);case"play":return I.a.createElement(wn,e);case"print":return I.a.createElement(Rn,e);case"export":return I.a.createElement(On,e)}}Nn.propTypes={editorMode:K.a.string.isRequired};var xn=Nn,jn=Object(z.b)(function(e){return{selectedFile:Ee(e,ie(e))||{},editorMode:V(e)}},{updateFile:de})(xn);n("3Z8G"),n("xeFo"),n("yq1k"),n("JTJg");function Pn(){return(Pn=Object.assign||function(e){for(var t=1;t0}return c()||l.push("sb-optionsGroup-isNotInteractable"),!n||e.children&&0!==e.children.length||r(!1),I.a.createElement("div",{className:l.join(" ")},I.a.createElement("div",{className:"sb-optionsGroup-title",onClick:c()?function(){r(!n)}:null},I.a.createElement("div",{className:"sb-optionsGroup-label"},I.a.createElement("span",{className:"sb-optionsGroup-iconTitle"},I.a.createElement(H,{iconName:o}))," ",i),I.a.createElement("div",{className:"sb-optionsGroup-toggle"},I.a.createElement("span",{className:"sb-optionsGroup-iconToggle"},I.a.createElement(H,{iconName:n?"unfold_less":"unfold_more"})))),I.a.createElement("div",{className:"sb-optionsGroup-content"},n&&e.children))}Bn.propTypes={isOpened:K.a.bool,isInteractable:K.a.bool.isRequired,icon:K.a.string.isRequired,label:K.a.string.isRequired,children:K.a.arrayOf(K.a.element)},Bn.defaultProps={isOpened:!1};var Fn=Bn;n("2ywC");function Mn(e){var t,n=e.isSelected,r=e.label,a=e.onClick,o=["sb-optionSelectChoice"];return n&&(o.push("sb-optionSelectChoice-isSelected"),t=I.a.createElement("span",{className:"sb-optionSelectChoice-checkIcon"},I.a.createElement(H,{iconName:"check"}))),I.a.createElement("div",{className:o.join(" "),onClick:a},I.a.createElement("div",{className:"sb-optionSelectChoice-check"},n&&t),I.a.createElement("div",{className:"sb-optionSelectChoice-label"},r))}Mn.propTypes={isSelected:K.a.bool.isRequired,label:K.a.string.isRequired,onClick:K.a.func.isRequired};var _n=I.a.memo(Mn);function In(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 An(e){var t=In(Object(_.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,d=["sb-optionSelect"];a||d.push("sb-optionSelect-isNotInteractable");var p=n?"keyboard_arrow_down":"keyboard_arrow_right";var f=n?I.a.createElement("div",{className:"sb-optionSelect-choices"},i.map(function(e){return I.a.createElement(_n,{key:e.value,label:e.label,isSelected:u===e.value,onClick:function(){return s(l,c,e.value)}})})):null;return I.a.createElement("div",{className:d.join(" ")},I.a.createElement("div",{className:"sb-optionSelect-title",onClick:a?function(){r(!n)}:null},I.a.createElement("div",{className:"sb-optionSelect-desc"},o),I.a.createElement("div",{className:"sb-optionSelect-toggle"},I.a.createElement("span",{className:"sb-optionSelect-icon"},I.a.createElement(H,{iconName:p})))),f)}An.propTypes={isInteractable:K.a.bool.isRequired,label:K.a.string.isRequired,allChoices:K.a.array.isRequired,optionContext:K.a.string.isRequired,optionKey:K.a.string.isRequired,optionValue:K.a.string.isRequired,setOption:K.a.func.isRequired};var Ln=An;n("qePV"),n("JevA"),n("6EPN");function zn(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 d=c>0&&o?"+"+c:c;return I.a.createElement("div",{className:s.join(" ")},I.a.createElement("div",{className:"sb-optionSlider-desc"},n),I.a.createElement("div",{className:"sb-optionSlider-value"},d),I.a.createElement("div",{className:"sb-optionSlider-range"},I.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})))}zn.propTypes={isInteractable:K.a.bool.isRequired,label:K.a.string.isRequired,min:K.a.number.isRequired,max:K.a.number.isRequired,showPlusSymbol:K.a.bool,optionContext:K.a.string.isRequired,optionKey:K.a.string.isRequired,optionValue:K.a.number.isRequired,setOption:K.a.func.isRequired},zn.defaultProps={showPlusSymbol:!0};var Dn=I.a.memo(zn);n("UUiC");function Gn(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"),I.a.createElement("div",{className:l.join(" "),onClick:t?function(){i(r,a,!o)}:null},I.a.createElement("div",{className:"sb-optionToggle-desc"},n),I.a.createElement("div",{className:"sb-optionToggle-icon"},I.a.createElement("span",{className:"sb-optionToggle-icon"},I.a.createElement(H,{iconName:!0===o?"toggle_on":"toggle_off"}))))}Gn.propTypes={isInteractable:K.a.bool.isRequired,label:K.a.string.isRequired,optionContext:K.a.string.isRequired,optionKey:K.a.string.isRequired,optionValue:K.a.bool.isRequired,setOption:K.a.func.isRequired};var Wn=I.a.memo(Gn);function Vn(){return(Vn=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})},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.1c344598d7d62d4c882b.js.map \ No newline at end of file diff --git a/docs/main.1c344598d7d62d4c882b.js.map b/docs/main.1c344598d7d62d4c882b.js.map deleted file mode 100644 index 17f9e25d..00000000 --- a/docs/main.1c344598d7d62d4c882b.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","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/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:///../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/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","stack1","lambda","barContent","useData","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","columnsCount","columnBreakOnParagraph","style","alignBars","showChords","instrument","showStrummingPattern","transposeValue","simplifyChords","capoPosition","harmonizeAccidentals","preferredAccidentals","fontSize","fontStyle","highlightChords","chordsColor","storeEnhancers","createAction","TypeError","getEditorMode","Icon","props","iconName","react_default","a","createElement","className","join","propTypes","PropTypes","string","isRequired","React","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","children","_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","_this","duration","currentBeatCount","_classCallCheck","this","_isFinite","_possibleConstructorReturn","_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","toString","rendered","chordLineModel","allBarsRendered","barSeparator","barSeparatorTpl","chordLineTpl","renderChordLine","textLine","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","PrintPreview","Editor","_components_EditorLayout","_components_PlayRenderer","_components_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","number","Toggle","SidebarOptionPanel","_components_OptionsPanel","SidebarOptionsPanel_extends","setOptionValue","getNonInteractableWidgets","getHiddenWidgets","component","OptionsPanelFactory","format","nonVisibleWidgets","Rendering_extends","stateToProps","Edit","fm","_containers_FileManager","rightBarPanel","_containers_Rendering","_containers_App","_containers_Editor","routes","path","universalRouter","UniversalRouter","router","navigateTo","resolve","then","controller","Controller","ReactDom","render","es","getElementById","__REDUX_DEVTOOLS_EXTENSION__","trace","persistedState","_defaultsDeep","seed","createReduxStore","allReducers","compose","subscribe","getState","createStore","escapeExpression"],"mappings":"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","file":"main.1c344598d7d62d4c882b.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(\"../../../../../ucc-demo/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(\"../../../../../ucc-demo/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.song : depth0), depth0)) != null ? stack1 : \"\")\n + \"
\";\n},\"useData\":true});","var Handlebars = require(\"../../../../../ucc-demo/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\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\tfontStyle: {\n\t\t\tvalue: 'roboto',\n\t\t\tdefault: 'roboto',\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\tchordsColor: {\n\t\t\tvalue: 'black',\n\t\t\tdefault: 'black',\n\t\t\tresetOnSongChange: false,\n\t\t},\n\t}\n};\n","export default function createAction(type, payload) {\n\tif (!type) {\n\t\tthrow new TypeError('Cannot create an action without an action type');\n\t}\n\treturn {\n\t\ttype,\n\t\tpayload\n\t};\n}\n","import {\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.5.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 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'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}","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';\n\n/**\n * @param {String} textLine\n * @returns {String} rendered html\n */\nexport default function render(textLine) {\n\treturn 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 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'preferredAccidentals',\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 './PrintPreview.scss';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SongRenderer from '../../_containers/SongRenderer';\n\nfunction PrintPreview(props) {\n\tconst { selectedFile } = props;\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n\nPrintPreview.propTypes = {\n\tselectedFile: PropTypes.object.isRequired,\n};\n\nexport default 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/_components/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'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: 'documentSizeIpad',\n\t\t\t\t\t\t\t\tlabel: 'iPad',\n\t\t\t\t\t\t\t\tvalue: 'ipad'\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\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'fontStyle',\n\t\t\t\t'highlightChords',\n\t\t\t\t'chordsColor',\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\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\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\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\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\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 showChords = getOptionValue(state, 'rendering', 'showChords');\n\tconst columnsCount = getOptionValue(state, 'rendering', 'columnsCount');\n\n\tif (!showChords) {\n\t\tnonVisibleWidgets.push('instrument');\n\t}\n\tif (columnsCount < 2) {\n\t\tnonVisibleWidgets.push('columnBreakOnParagraph');\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\nexport default function renderController(Controller) {\n\tReactDom.render(\n\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(\"../../../../../ucc-demo/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(\"../../../../../ucc-demo/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(\"../../../../../ucc-demo/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.1c344598d7d62d4c882b.js b/docs/vendors~main.1c344598d7d62d4c882b.js deleted file mode 100644 index 88885950..00000000 --- a/docs/vendors~main.1c344598d7d62d4c882b.js +++ /dev/null @@ -1,55 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"++pP":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("uSMm"),o=n("byeC"),i=n("b/sn");function a(e,t){return!e.selection.empty&&(t&&t(e.tr.deleteSelection().scrollIntoView()),!0)}function s(e,t,n){var o=e.selection.$cursor;if(!o||(n?!n.endOfTextblock("backward",e):o.parentOffset>0))return!1;var a=l(o);if(!a){var s=o.blockRange(),c=s&&r.liftTarget(s);return null!=c&&(t&&t(e.tr.lift(s,c).scrollIntoView()),!0)}var f=a.nodeBefore;if(!f.type.spec.isolating&&x(e,a,t))return!0;if(0==o.parent.content.size&&(u(f,"end")||i.NodeSelection.isSelectable(f))){if(t){var p=e.tr.deleteRange(o.before(),o.after());p.setSelection(u(f,"end")?i.Selection.findFrom(p.doc.resolve(p.mapping.map(a.pos,-1)),-1):i.NodeSelection.create(p.doc,a.pos-f.nodeSize)),t(p.scrollIntoView())}return!0}return!(!f.isAtom||a.depth!=o.depth-1)&&(t&&t(e.tr.delete(a.pos-f.nodeSize,a.pos).scrollIntoView()),!0)}function u(e,t){for(;e;e="start"==t?e.firstChild:e.lastChild)if(e.isTextblock)return!0;return!1}function c(e,t,n){var r=e.selection.$cursor;if(!r||(n?!n.endOfTextblock("backward",e):r.parentOffset>0))return!1;var o=l(r),a=o&&o.nodeBefore;return!(!a||!i.NodeSelection.isSelectable(a))&&(t&&t(e.tr.setSelection(i.NodeSelection.create(e.doc,o.pos-a.nodeSize)).scrollIntoView()),!0)}function l(e){if(!e.parent.type.spec.isolating)for(var t=e.depth-1;t>=0;t--){if(e.index(t)>0)return e.doc.resolve(e.before(t+1));if(e.node(t).type.spec.isolating)break}return null}function f(e,t,n){var r=e.selection.$cursor;if(!r||(n?!n.endOfTextblock("forward",e):r.parentOffset=0;t--){var n=e.node(t);if(e.index(t)+11&&n.after()!=n.end(-1)){var o=n.before();if(r.canSplit(e.doc,o))return t&&t(e.tr.split(o).scrollIntoView()),!0}var i=n.blockRange(),a=i&&r.liftTarget(i);return null!=a&&(t&&t(e.tr.lift(i,a).scrollIntoView()),!0)}function g(e,t){var n=e.selection,a=n.$from,s=n.$to;if(e.selection instanceof i.NodeSelection&&e.selection.node.isBlock)return!(!a.parentOffset||!r.canSplit(e.doc,a.pos))&&(t&&t(e.tr.split(a.pos).scrollIntoView()),!0);if(!a.parent.isBlock)return!1;if(t){var u=s.parentOffset==s.parent.content.size,c=e.tr;e.selection instanceof i.TextSelection&&c.deleteSelection();var l=0==a.depth?null:a.node(-1).contentMatchAt(a.indexAfter(-1)).defaultType,f=u&&l?[{type:l}]:null,p=r.canSplit(c.doc,a.pos,1,f);f||p||!r.canSplit(c.doc,c.mapping.map(a.pos),1,l&&[{type:l}])||(f=[{type:l}],p=!0),p&&(c.split(c.mapping.map(a.pos),1,f),u||a.parentOffset||a.parent.type==l||!a.node(-1).canReplace(a.index(-1),a.indexAfter(-1),o.Fragment.from(l.create(),a.parent))||c.setNodeMarkup(c.mapping.map(a.before()),l)),t(c.scrollIntoView())}return!0}function b(e,t){return t&&t(e.tr.setSelection(new i.AllSelection(e.doc))),!0}function x(e,t,n){var a,s,u=t.nodeBefore,c=t.nodeAfter;if(u.type.spec.isolating||c.type.spec.isolating)return!1;if(function(e,t,n){var o=t.nodeBefore,i=t.nodeAfter,a=t.index();return!(!(o&&i&&o.type.compatibleContent(i.type))||(!o.content.size&&t.parent.canReplace(a-1,a)?(n&&n(e.tr.delete(t.pos-o.nodeSize,t.pos).scrollIntoView()),0):!t.parent.canReplace(a,a+1)||!i.isTextblock&&!r.canJoin(e.doc,t.pos)||(n&&n(e.tr.clearIncompatible(t.pos,o.type,o.contentMatchAt(o.childCount)).join(t.pos).scrollIntoView()),0)))}(e,t,n))return!0;if(t.parent.canReplace(t.index(),t.index()+1)&&(a=(s=u.contentMatchAt(u.childCount)).findWrapping(c.type))&&s.matchType(a[0]||c.type).validEnd){if(n){for(var l=t.pos+c.nodeSize,f=o.Fragment.empty,p=a.length-1;p>=0;p--)f=o.Fragment.from(a[p].create(null,f));f=o.Fragment.from(u.copy(f));var d=e.tr.step(new r.ReplaceAroundStep(t.pos-1,l,t.pos,l,new o.Slice(f,1,0),a.length,!0)),h=l+2*a.length;r.canJoin(d.doc,h)&&d.join(h),n(d.scrollIntoView())}return!0}var v=i.Selection.findFrom(t,1),m=v&&v.$from.blockRange(v.$to),y=m&&r.liftTarget(m);return null!=y&&y>=t.depth&&(n&&n(e.tr.lift(m,y).scrollIntoView()),!0)}function w(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return function(t,n,r){for(var o=0;o-1}}return function(n,o){return e(n,o&&function(e,t){return function(n){if(!n.isGeneric)return e(n);for(var o=[],i=0;i=0;b--)r.canJoin(n.doc,u[b])&&n.join(u[b]);e(n)}}(o,t))}},t.chainCommands=w,t.pcBaseKeymap=O,t.macBaseKeymap=T,t.baseKeymap=E},"+2Kb":function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"+6XX":function(e,t,n){var r=n("y1pI");e.exports=function(e){return r(this.__data__,e)>-1}},"+K+b":function(e,t,n){var r=n("JHRd");e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},"+L5R":function(e,t,n){var r=n("Assn")(n("G2vQ"),"Set");e.exports=r},"+MLx":function(e,t,n){var r=n("HAuM");e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},"+Qka":function(e,t,n){var r=n("fmRc"),o=n("t2Dn"),i=n("cq/+"),a=n("T1AV"),s=n("GoyQ"),u=n("mTTR"),c=n("itsj");e.exports=function e(t,n,l,f,p){t!==n&&i(n,function(i,u){if(s(i))p||(p=new r),a(t,n,u,l,e,f,p);else{var d=f?f(c(t,u),i,u+"",t,n,p):void 0;void 0===d&&(d=i),o(t,u,d)}},u)}},"+c4W":function(e,t,n){var r=n("711d"),o=n("4/ic"),i=n("9ggG"),a=n("9Nap");e.exports=function(e){return i(e)?r(a(e)):o(e)}},"+iFO":function(e,t,n){var r=n("dTAl"),o=n("LcsW"),i=n("6sVZ");e.exports=function(e){return"function"!=typeof e.constructor||i(e)?{}:r(o(e))}},"+qFy":function(e,t){function n(e){this.content=e}n.prototype={constructor:n,find:function(e){for(var t=0;t>1}},n.from=function(e){if(e instanceof n)return e;var t=[];if(e)for(var r in e)t.push(r,e[r]);return new n(t)},e.exports=n},"+vjs":function(e,t,n){var r=n("vji9"),o=n("9WEk"),i=n("iUFZ"),a=n("FAZV").Reflect;e.exports=a&&a.ownKeys||function(e){var t=r.f(i(e)),n=o.f;return n?t.concat(n(e)):t}},"+wdc":function(e,t,n){"use strict";(function(e){ -/** @license React v0.13.6 - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -Object.defineProperty(t,"__esModule",{value:!0});var n=null,r=!1,o=3,i=-1,a=-1,s=!1,u=!1;function c(){if(!s){var e=n.expirationTime;u?k():u=!0,S(p,e)}}function l(){var e=n,t=n.next;if(n===t)n=null;else{var r=n.previous;n=r.next=t,t.previous=r}e.next=e.previous=null,r=e.callback,t=e.expirationTime,e=e.priorityLevel;var i=o,s=a;o=e,a=t;try{var u=r()}finally{o=i,a=s}if("function"==typeof u)if(u={callback:u,priorityLevel:e,expirationTime:t,next:null,previous:null},null===n)n=u.next=u.previous=u;else{r=null,e=n;do{if(e.expirationTime>=t){r=e;break}e=e.next}while(e!==n);null===r?r=n:r===n&&(n=u,c()),(t=r.previous).next=r.previous=u,u.next=r,u.previous=t}}function f(){if(-1===i&&null!==n&&1===n.priorityLevel){s=!0;try{do{l()}while(null!==n&&1===n.priorityLevel)}finally{s=!1,null!==n?c():u=!1}}}function p(e){s=!0;var o=r;r=e;try{if(e)for(;null!==n;){var i=t.unstable_now();if(!(n.expirationTime<=i))break;do{l()}while(null!==n&&n.expirationTime<=i)}else if(null!==n)do{l()}while(null!==n&&!O())}finally{s=!1,r=o,null!==n?c():u=!1,f()}}var d,h,v=Date,m="function"==typeof setTimeout?setTimeout:void 0,y="function"==typeof clearTimeout?clearTimeout:void 0,g="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,b="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;function x(e){d=g(function(t){y(h),e(t)}),h=m(function(){b(d),e(t.unstable_now())},100)}if("object"==typeof performance&&"function"==typeof performance.now){var w=performance;t.unstable_now=function(){return w.now()}}else t.unstable_now=function(){return v.now()};var S,k,O,T=null;if("undefined"!=typeof window?T=window:void 0!==e&&(T=e),T&&T._schedMock){var C=T._schedMock;S=C[0],k=C[1],O=C[2],t.unstable_now=C[3]}else if("undefined"==typeof window||"function"!=typeof MessageChannel){var E=null,M=function(e){if(null!==E)try{E(e)}finally{E=null}};S=function(e){null!==E?setTimeout(S,0,e):(E=e,setTimeout(M,0,!1))},k=function(){E=null},O=function(){return!1}}else{"undefined"!=typeof console&&("function"!=typeof g&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof b&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var _=null,A=!1,N=-1,P=!1,j=!1,D=0,R=33,F=33;O=function(){return D<=t.unstable_now()};var I=new MessageChannel,z=I.port2;I.port1.onmessage=function(){A=!1;var e=_,n=N;_=null,N=-1;var r=t.unstable_now(),o=!1;if(0>=D-r){if(!(-1!==n&&n<=r))return P||(P=!0,x(L)),_=e,void(N=n);o=!0}if(null!==e){j=!0;try{e(o)}finally{j=!1}}};var L=function(e){if(null!==_){x(L);var t=e-D+F;tt&&(t=8),F=tt?z.postMessage(void 0):P||(P=!0,x(L))},k=function(){_=null,A=!1,N=-1}}t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=o,a=i;o=e,i=t.unstable_now();try{return n()}finally{o=r,i=a,f()}},t.unstable_next=function(e){switch(o){case 1:case 2:case 3:var n=3;break;default:n=o}var r=o,a=i;o=n,i=t.unstable_now();try{return e()}finally{o=r,i=a,f()}},t.unstable_scheduleCallback=function(e,r){var a=-1!==i?i:t.unstable_now();if("object"==typeof r&&null!==r&&"number"==typeof r.timeout)r=a+r.timeout;else switch(o){case 1:r=a+-1;break;case 2:r=a+250;break;case 5:r=a+1073741823;break;case 4:r=a+1e4;break;default:r=a+5e3}if(e={callback:e,priorityLevel:o,expirationTime:r,next:null,previous:null},null===n)n=e.next=e.previous=e,c();else{a=null;var s=n;do{if(s.expirationTime>r){a=s;break}s=s.next}while(s!==n);null===a?a=n:a===n&&(n=e,c()),(r=a.previous).next=a.previous=e,e.next=a,e.previous=r}return e},t.unstable_cancelCallback=function(e){var t=e.next;if(null!==t){if(t===e)n=null;else{e===n&&(n=t);var r=e.previous;r.next=t,t.previous=r}e.next=e.previous=null}},t.unstable_wrapCallback=function(e){var n=o;return function(){var r=o,a=i;o=n,i=t.unstable_now();try{return e.apply(this,arguments)}finally{o=r,i=a,f()}}},t.unstable_getCurrentPriorityLevel=function(){return o},t.unstable_shouldYield=function(){return!r&&(null!==n&&n.expirationTime=0||(o[n]=e[n]);return o}var y=n("2mql"),g=n.n(y),b=n("QLaP"),x=n.n(b),w=n("TOwV"),S=[],k=[null,null];function O(e,t){var n=e[1];return[t.payload,n+1]}var T=function(){return[null,0]},C="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;function E(e,t){void 0===t&&(t={});var n=t,i=n.getDisplayName,a=void 0===i?function(e){return"ConnectAdvanced("+e+")"}:i,u=n.methodName,c=void 0===u?"connectAdvanced":u,l=n.renderCountProp,f=void 0===l?void 0:l,d=n.shouldHandleStateChanges,h=void 0===d||d,y=n.storeKey,b=void 0===y?"store":y,E=n.withRef,M=void 0!==E&&E,_=n.forwardRef,A=void 0!==_&&_,N=n.context,P=void 0===N?s:N,j=m(n,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]);x()(void 0===f,"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension"),x()(!M,"withRef is removed. To access the wrapped instance, use a ref on the connected component");x()("store"===b,"storeKey has been removed and does not do anything. To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React Redux's Provider and specific components like: . You may also pass a {context : MyContext} option to connect");var D=P;return function(t){var n=t.displayName||t.name||"Component",i=a(n),s=v({},j,{getDisplayName:a,methodName:c,renderCountProp:f,shouldHandleStateChanges:h,storeKey:b,displayName:i,wrappedComponentName:n,WrappedComponent:t}),u=j.pure;var l=u?r.useMemo:function(e){return e()};function d(n){var a=Object(r.useMemo)(function(){return[n.context,n.forwardedRef,m(n,["context","forwardedRef"])]},[n]),u=a[0],c=a[1],f=a[2],d=Object(r.useMemo)(function(){return u&&u.Consumer&&Object(w.isContextConsumer)(o.a.createElement(u.Consumer,null))?u:D},[u,D]),y=Object(r.useContext)(d),g=Boolean(n.store),b=Boolean(y)&&Boolean(y.store);x()(g||b,'Could not find "store" in the context of "'+i+'". Either wrap the root component in a , or pass a custom React context provider to and the corresponding React context consumer to '+i+" in connect options.");var E=n.store||y.store,M=Object(r.useMemo)(function(){return function(t){return e(t.dispatch,s)}(E)},[E]),_=Object(r.useMemo)(function(){if(!h)return k;var e=new p(E,g?null:y.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]},[E,g,y]),A=_[0],N=_[1],P=Object(r.useMemo)(function(){return g?y:v({},y,{subscription:A})},[g,y,A]),j=Object(r.useReducer)(O,S,T),R=j[0][0],F=j[1];if(R&&R.error)throw R.error;var I=Object(r.useRef)(),z=Object(r.useRef)(f),L=Object(r.useRef)(),B=l(function(){return L.current&&f===z.current?L.current:M(E.getState(),f)},[E,R,f]);C(function(){z.current=f,I.current=B,L.current&&(L.current=null,N())}),C(function(){if(h){var e=!1,t=null,n=function(){if(!e){var n,r,o=E.getState();try{n=M(o,z.current)}catch(e){r=e,t=e}r||(t=null),n===I.current?N():(I.current=n,L.current=n,F({type:"STORE_UPDATED",payload:{latestStoreState:o,error:r}}))}};A.onStateChange=n,A.trySubscribe(),n();return function(){if(e=!0,A.tryUnsubscribe(),t)throw t}}},[E,A,M]);var V=Object(r.useMemo)(function(){return o.a.createElement(t,v({},B,{ref:c}))},[c,t,B]);return Object(r.useMemo)(function(){return h?o.a.createElement(d.Provider,{value:P},V):V},[d,V,P])}var y=u?o.a.memo(d):d;if(y.WrappedComponent=t,y.displayName=i,A){var E=o.a.forwardRef(function(e,t){return o.a.createElement(y,v({},e,{forwardedRef:t}))});return E.displayName=i,E.WrappedComponent=t,g()(E,t)}return g()(y,t)}}var M=Object.prototype.hasOwnProperty;function _(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function A(e,t){if(_(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function H(e,t){return e===t}var W,q,$,G,Q,K,J,X,Z,Y,ee,te,ne,re=($=(q=void 0===W?{}:W).connectHOC,G=void 0===$?E:$,Q=q.mapStateToPropsFactories,K=void 0===Q?F:Q,J=q.mapDispatchToPropsFactories,X=void 0===J?R:J,Z=q.mergePropsFactories,Y=void 0===Z?z:Z,ee=q.selectorFactory,te=void 0===ee?V:ee,function(e,t,n,r){void 0===r&&(r={});var o=r,i=o.pure,a=void 0===i||i,s=o.areStatesEqual,u=void 0===s?H:s,c=o.areOwnPropsEqual,l=void 0===c?A:c,f=o.areStatePropsEqual,p=void 0===f?A:f,d=o.areMergedPropsEqual,h=void 0===d?A:d,y=m(o,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),g=U(e,K,"mapStateToProps"),b=U(t,X,"mapDispatchToProps"),x=U(n,Y,"mergeProps");return G(te,v({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:g,initMapDispatchToProps:b,initMergeProps:x,pure:a,areStatesEqual:u,areOwnPropsEqual:l,areStatePropsEqual:p,areMergedPropsEqual:h},y))}),oe=n("i8i4");n.d(t,"a",function(){return h}),n.d(t,"b",function(){return re}),ne=oe.unstable_batchedUpdates,u=ne},"/byt":function(e,t){e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},"03A+":function(e,t,n){var r=n("JTzB"),o=n("ExA7"),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,u=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=u},"07d7":function(e,t,n){var r=n("sEFX"),o=Object.prototype;r!==o.toString&&n("busE")(o,"toString",r,{unsafe:!0})},"0BK2":function(e,t){e.exports={}},"0Cz8":function(e,t,n){var r=n("Xi7e"),o=n("ebwN"),i=n("e4Nc"),a=200;e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var s=n.__data__;if(!o||s.length2)if(43===(t=(l=y?l.trim():d(l,3)).charCodeAt(0))||45===t){if(88===(n=l.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(l.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+l}for(a=(i=l.slice(2)).length,s=0;so)return NaN;return parseInt(i,r)}return+l};if(o("Number",!h(" 0o1")||!h("0b1")||h("+0x1"))){for(var b,x=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof x&&(m?c(function(){v.valueOf.call(n)}):"Number"!=a(n))?s(new h(g(t)),n,x):g(t)},w=n("xa90")?l(h):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;w.length>S;S++)i(h,b=w[S])&&!i(x,b)&&p(x,b,f(h,b));x.prototype=v,v.constructor=x,n("xm23")(r,"Number",x)}},"0aUg":function(e,t){e.exports=function(e){return this.__data__.has(e)}},"0eef":function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},"0hty":function(e,t,n){var r=n("Wdnv");e.exports=function(e){return function(t){return r(t,e)}}},"0oug":function(e,t,n){n("dG/n")("iterator")},"0rvr":function(e,t,n){var r=n("LhpL");e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n,o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},"0ycA":function(e,t){e.exports=function(){return[]}},"13mk":function(e,t,n){var r=n("ZJVh"),o=n("qdGT"),i=n("N3JG"),a=n("h5gM"),s=n("nwjc"),u="[object Boolean]",c="[object Date]",l="[object Map]",f="[object Number]",p="[object RegExp]",d="[object Set]",h="[object String]",v="[object Symbol]",m="[object ArrayBuffer]",y="[object DataView]",g="[object Float32Array]",b="[object Float64Array]",x="[object Int8Array]",w="[object Int16Array]",S="[object Int32Array]",k="[object Uint8Array]",O="[object Uint8ClampedArray]",T="[object Uint16Array]",C="[object Uint32Array]";e.exports=function(e,t,n){var E=e.constructor;switch(t){case m:return r(e);case u:case c:return new E(+e);case y:return o(e,n);case g:case b:case x:case w:case S:case k:case O:case T:case C:return s(e,n);case l:return new E;case f:case h:return new E(e);case p:return i(e);case d:return new E;case v:return a(e)}}},"14Sl":function(e,t,n){"use strict";var r=n("X2U+"),o=n("busE"),i=n("0Dky"),a=n("tiKp"),s=n("kmMV"),u=a("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),l=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,f){var p=a(e),d=!i(function(){var t={};return t[p]=function(){return 7},7!=""[e](t)}),h=d&&!i(function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===e&&(n.constructor={},n.constructor[u]=function(){return n}),n[p](""),!t});if(!d||!h||"replace"===e&&!c||"split"===e&&!l){var v=/./[p],m=n(p,""[e],function(e,t,n,r,o){return t.exec===s?d&&!o?{done:!0,value:v.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),y=m[0],g=m[1];o(String.prototype,e,y),o(RegExp.prototype,p,2==t?function(e,t){return g.call(e,this,t)}:function(e){return g.call(e,this)}),f&&r(RegExp.prototype[p],"sham",!0)}}},"16Al":function(e,t,n){"use strict";var r=n("WbBG");function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},"17x9":function(e,t,n){e.exports=n("16Al")()},"1E5z":function(e,t,n){var r=n("m/L8").f,o=n("UTVS"),i=n("tiKp")("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},"1F4+":function(e,t,n){var r=n("1vyV"),o=n("yvrH"),i=n("dNuR"),a=n("5y0q"),s=n("qIga"),u=n("F+Jz");e.exports=function(e,t,n){for(var c=-1,l=(t=r(t,e)).length,f=!1;++c=0:f>p;p+=d)p in l&&(s=t(s,l[p],p,c));return s}},"1cda":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("gAmA"),o=n("pmFt"),i=["maj","major","Maj","M","Δ"],a=["m","minor","min","−","-"],s=["aug","augmented","+"],u={parsing:{notes:[[o.Notes.AFlat,["Ab","A♭"]],[o.Notes.A,["A"]],[o.Notes.ASharp,["A#","A♯"]],[o.Notes.BFlat,["Bb","B♭"]],[o.Notes.B,["B"]],[o.Notes.C,["C"]],[o.Notes.CSharp,["C#","C♯"]],[o.Notes.DFlat,["Db","D♭"]],[o.Notes.D,["D"]],[o.Notes.DSharp,["D#","D♯"]],[o.Notes.EFlat,["Eb","E♭"]],[o.Notes.E,["E"]],[o.Notes.F,["F"]],[o.Notes.FSharp,["F#","F♯"]],[o.Notes.GFlat,["Gb","G♭"]],[o.Notes.G,["G"]],[o.Notes.GSharp,["G#","G♯"]]],qualities:[[o.Qualities.Major,i],[o.Qualities.Minor,a],[o.Qualities.MinorMajor,l(a,i)],[o.Qualities.Augmented,s],[o.Qualities.AugmentedMajor,l(s,i)],[o.Qualities.Diminished,["0","dim","diminished","°","o","O"]],[o.Qualities.HalfDiminished,["Ø","ø"]],[o.Qualities.Power,["5","no3"]]],sevenths:[[o.Sevenths.Seventh,["7"]]],ninths:[[o.Ninths.Major9,["9"]],[o.Ninths.Minor9,["b9","♭9"]],[o.Ninths.Sharpened9,["#9","♯9"]]],elevenths:[[o.Elevenths.Perfect11,["11"]],[o.Elevenths.Sharpened11,["#11","♯11"]],[o.Elevenths.Flattened11,["b11","♭11"]]],thirteenths:[[o.Thirteenths.Major13,["13"]],[o.Thirteenths.Minor13,["b13","♭13"]]],addeds:[[o.Addeds.Add9,["add9","2","/9"]],[o.Addeds.Add11,["add11","4","/11"]],[o.Addeds.Add13,["add13","6","/13"]]],suspendeds:[[o.Suspendeds.Sus4,["sus4","suspended","sus"]],[o.Suspendeds.Sus2,["sus2","suspended2"]]],alteredFifths:[[o.AlteredFifths.Sharpened5,["#5","♯5"]],[o.AlteredFifths.Flattened5,["b5","♭5"]]]},printing:{notes:[[o.Notes.AFlat,"Ab"],[o.Notes.A,"A"],[o.Notes.ASharp,"A#"],[o.Notes.BFlat,"Bb"],[o.Notes.B,"B"],[o.Notes.C,"C"],[o.Notes.CSharp,"C#"],[o.Notes.DFlat,"Db"],[o.Notes.D,"D"],[o.Notes.DSharp,"D#"],[o.Notes.EFlat,"Eb"],[o.Notes.E,"E"],[o.Notes.F,"F"],[o.Notes.FSharp,"F#"],[o.Notes.GFlat,"Gb"],[o.Notes.G,"G"],[o.Notes.GSharp,"G#"]],qualities:[[o.Qualities.Major,"maj"],[o.Qualities.Minor,"m"],[o.Qualities.MinorMajor,"mmaj"],[o.Qualities.Augmented,"aug"],[o.Qualities.AugmentedMajor,"augmaj"],[o.Qualities.Diminished,"dim"],[o.Qualities.HalfDiminished,"Ø"],[o.Qualities.Power,"5"]],sevenths:[[o.Sevenths.Seventh,"7"]],ninths:[[o.Ninths.Major9,"9"],[o.Ninths.Minor9,"b9"],[o.Ninths.Sharpened9,"#9"]],elevenths:[[o.Elevenths.Perfect11,"11"],[o.Elevenths.Sharpened11,"#11"],[o.Elevenths.Flattened11,"b11"]],thirteenths:[[o.Thirteenths.Major13,"13"],[o.Thirteenths.Minor13,"b13"]],addeds:[[o.Addeds.Add9,"add9"],[o.Addeds.Add11,"add11"],[o.Addeds.Add13,"add13"]],suspendeds:[[o.Suspendeds.Sus4,"sus4"],[o.Suspendeds.Sus2,"sus2"]],alteredFifths:[[o.AlteredFifths.Sharpened5,"#5"],[o.AlteredFifths.Flattened5,"b5"]]}};function c(e){var t=new Map;return e.forEach(function(e,n){e.forEach(function(e){return t.set(e,n)})}),t}function l(e,t){var n=[];return e.forEach(function(e){return n.push.apply(n,t.map(function(t){return""+e+t}))}),n}var f=function(){return function(e){var t=this;this.checkValidityOrThrow=function(){var e={notes:Object.keys(o.Notes).map(function(e){return o.Notes[e]}),qualities:Object.keys(o.Qualities).map(function(e){return o.Qualities[e]}),sevenths:Object.keys(o.Sevenths).map(function(e){return o.Sevenths[e]}),ninths:Object.keys(o.Ninths).map(function(e){return o.Ninths[e]}),elevenths:Object.keys(o.Elevenths).map(function(e){return o.Elevenths[e]}),thirteenths:Object.keys(o.Thirteenths).map(function(e){return o.Thirteenths[e]}),addeds:Object.keys(o.Addeds).map(function(e){return o.Addeds[e]}),suspendeds:Object.keys(o.Suspendeds).map(function(e){return o.Suspendeds[e]}),alteredFifths:Object.keys(o.AlteredFifths).map(function(e){return o.AlteredFifths[e]})};t.performCheckForChordPart(e.notes,t.names.notes,t.preferredNames.notes),t.performCheckForChordPart(e.qualities,t.names.qualities,t.preferredNames.qualities),t.performCheckForChordPart(e.sevenths,t.names.sevenths,t.preferredNames.sevenths),t.performCheckForChordPart(e.ninths,t.names.ninths,t.preferredNames.ninths),t.performCheckForChordPart(e.elevenths,t.names.elevenths,t.preferredNames.elevenths),t.performCheckForChordPart(e.thirteenths,t.names.thirteenths,t.preferredNames.thirteenths),t.performCheckForChordPart(e.addeds,t.names.addeds,t.preferredNames.addeds),t.performCheckForChordPart(e.suspendeds,t.names.suspendeds,t.preferredNames.suspendeds),t.performCheckForChordPart(e.alteredFifths,t.names.alteredFifths,t.preferredNames.alteredFifths)},this.performCheckForChordPart=function(e,n,r){t.checkAllEnumValuesAppearOrThrow(e,n,r),t.checkPreferredNameAppearsInNamesOrThrow(n,r),t.checkNamesAppearOnlyOnceOrThrow(n)},this.checkAllEnumValuesAppearOrThrow=function(e,t,n){var r=Array.from(t.keys()),o=Array.from(n.keys()),i=new Set(e).size,a=new Set(r).size,s=new Set(o).size;if(i!==a)throw new Error("[chords] Naming: expected all of "+JSON.stringify(e)+" to appear as keys in the name map, but only found "+JSON.stringify(e));if(i!==s)throw new Error("[chords] Naming: expected all of "+JSON.stringify(e)+" to appear as keys in the preferredName map, but only found "+JSON.stringify(o))},this.checkPreferredNameAppearsInNamesOrThrow=function(e,t){t.forEach(function(t,n){var r=e.get(n);if(void 0===t)throw new Error("[chords] Naming: preferred name value for '"+n+"' cannot be undefined");if(void 0===r)throw new Error("[chords] Naming: name list for '"+n+"' cannot be undefined");if(-1===r.indexOf(t))throw new Error("[chords] Naming: preferred name '"+t+"' for key '"+n+"' has to appear in the name list '"+JSON.stringify(r)+"'")})},this.checkNamesAppearOnlyOnceOrThrow=function(e){var t=[];e.forEach(function(e){t.push.apply(t,e)});var n=new Set(t);if(t.length!==n.size)throw new Error("[chords] Naming: some name appears twice in '"+JSON.stringify(t)+"'")},this.naming=r.__assign({},u,e),this.names={notes:new Map(this.naming.parsing.notes),qualities:new Map(this.naming.parsing.qualities),sevenths:new Map(this.naming.parsing.sevenths),ninths:new Map(this.naming.parsing.ninths),elevenths:new Map(this.naming.parsing.elevenths),thirteenths:new Map(this.naming.parsing.thirteenths),addeds:new Map(this.naming.parsing.addeds),suspendeds:new Map(this.naming.parsing.suspendeds),alteredFifths:new Map(this.naming.parsing.alteredFifths)},this.preferredNames={notes:new Map(this.naming.printing.notes),qualities:new Map(this.naming.printing.qualities),sevenths:new Map(this.naming.printing.sevenths),ninths:new Map(this.naming.printing.ninths),elevenths:new Map(this.naming.printing.elevenths),thirteenths:new Map(this.naming.printing.thirteenths),addeds:new Map(this.naming.printing.addeds),suspendeds:new Map(this.naming.printing.suspendeds),alteredFifths:new Map(this.naming.printing.alteredFifths)},this.lookups={notes:c(this.names.notes),qualities:c(this.names.qualities),sevenths:c(this.names.sevenths),ninths:c(this.names.ninths),elevenths:c(this.names.elevenths),thirteenths:c(this.names.thirteenths),addeds:c(this.names.addeds),suspendeds:c(this.names.suspendeds),alteredFifths:c(this.names.alteredFifths)},this.checkValidityOrThrow()}}();t.Naming=f},"1hJj":function(e,t,n){var r=n("e4Nc"),o=n("ftKO"),i=n("3A9y");function a(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t]*>)/g,h=/\$([$&`']|\d\d?)/g;n("ImN2")("replace",2,function(e,t,n){return[function(n,r){var o=s(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,o,r):t.call(String(o),n,r)},function(e,o){var s=n(t,e,this,o);if(s.done)return s.value;var p=r(e),d=String(this),h="function"==typeof o;h||(o=String(o));var m=p.global;if(m){var y=p.unicode;p.lastIndex=0}for(var g=[];;){var b=c(p,d);if(null===b)break;if(g.push(b),!m)break;""===String(b[0])&&(p.lastIndex=u(d,i(p.lastIndex),y))}for(var x,w="",S=0,k=0;k=S&&(w+=d.slice(S,T)+A,S=T+O.length)}return w+d.slice(S)}];function v(e,n,r,i,a,s){var u=r+e.length,c=i.length,l=h;return void 0!==a&&(a=o(a),l=d),t.call(s,l,function(t,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(u);case"<":s=a[o.slice(1,-1)];break;default:var l=+o;if(0===l)return t;if(l>c){var f=p(l/10);return 0===f?t:f<=c?void 0===i[f-1]?o.charAt(1):i[f-1]+o.charAt(1):t}s=i[l-1]}return void 0===s?"":s})}})},"1zki":function(e,t,n){"use strict";var r=n("gz6c"),o=n("DvFN")("trim");n("pAIc")({target:"String",proto:!0,forced:o},{trim:function(){return r(this,3)}})},"211f":function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},"2B1R":function(e,t,n){"use strict";var r=n("P0SU")(1),o=n("Hd5f")("map");n("I+eb")({target:"Array",proto:!0,forced:!o},{map:function(e){return r(this,e,arguments[1])}})},"2Gcs":function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},"2OaC":function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n1?arguments[1]:void 0,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!y(this,e)}}),i(l.prototype,n?{get:function(e){var t=y(this,e);return t&&t.value},set:function(e,t){return m(this,0===e?0:e,t)}}:{add:function(e){return m(this,e=0===e?0:e,e)}}),f&&r(l.prototype,"size",{get:function(){return d(this).size}}),l},setStrong:function(e,t,n){var r=t+" Iterator",o=v(t),i=v(r);c(e,t,function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:void 0})},function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})},n?"entries":"values",!n,!0),l(t)}}},"31X/":function(e,t,n){"use strict";t.__esModule=!0;var r=n("sTlx");t.default=function(e){e.registerDecorator("inline",function(e,t,n,o){var i=e;return t.partials||(t.partials={},i=function(o,i){var a=n.partials;n.partials=r.extend({},a,t.partials);var s=e(o,i);return n.partials=a,s}),t.partials[o.args[0]]=o.fn,i})},e.exports=t.default},"33Wh":function(e,t,n){var r=n("yoRg"),o=n("eDl+");e.exports=Object.keys||function(e){return r(e,o)}},"3A9y":function(e,t){e.exports=function(e){return this.__data__.has(e)}},"3Fdi":function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},"3L66":function(e,t,n){var r=n("MMmD"),o=n("ExA7");e.exports=function(e){return o(e)&&r(e)}},"3O+N":function(e,t,n){e.exports=n("h9kl").default},"3UD+":function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},"3WF5":function(e,t,n){var r=n("eUgh"),o=n("ut/Y"),i=n("l9OW"),a=n("Z0cm");e.exports=function(e,t){return(a(e)?r:i)(e,o(t,3))}},"3Yyb":function(e,t,n){"use strict";var r=n("iUFZ");e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},"3bBZ":function(e,t,n){var r=n("/byt"),o=n("4mDm"),i=n("2oRo"),a=n("X2U+"),s=n("tiKp"),u=s("iterator"),c=s("toStringTag"),l=o.values;for(var f in r){var p=i[f],d=p&&p.prototype;if(d){if(d[u]!==l)try{a(d,u,l)}catch(e){d[u]=l}if(d[c]||a(d,c,f),r[f])for(var h in o)if(d[h]!==o[h])try{a(d,h,o[h])}catch(e){d[h]=o[h]}}}},"3bHz":function(e,t){e.exports=function(){return[]}},"4/ic":function(e,t,n){var r=n("ZWtO");e.exports=function(e){return function(t){return r(t,e)}}},"44Ds":function(e,t,n){var r=n("e4Nc"),o="Expected a function";function i(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(o);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(i.Cache||r),n}i.Cache=r,e.exports=i},"4Boe":function(e,t,n){var r=n("pZ0U"),o=n("/Czg");e.exports=function(e,t,n,i){var a=!n;n||(n={});for(var s=-1,u=t.length;++s>>((3&t)<<3)&255;return o}}},"4kuk":function(e,t,n){var r=n("SfRM"),o=n("Hvzi"),i=n("u8Dt"),a=n("ekgI"),s=n("JSQU");function u(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},"4sDh":function(e,t,n){var r=n("4uTw"),o=n("03A+"),i=n("Z0cm"),a=n("wJg7"),s=n("shjB"),u=n("9Nap");e.exports=function(e,t,n){for(var c=-1,l=(t=r(t,e)).length,f=!1;++c0?o(r(e),9007199254740991):0}},"55m/":function(e,t,n){var r=n("2e/w"),o=n("qIga"),i=n("87Bl"),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,e.exports=function(e){return i(e)&&o(e.length)&&!!a[r(e)]}},"5DmW":function(e,t,n){var r=n("/GqU"),o=n("Bs8V").f,i=n("g6v/"),a=n("0Dky")(function(){o(1)}),s=!i||a;n("I+eb")({target:"Object",stat:!0,forced:s,sham:!i},{getOwnPropertyDescriptor:function(e,t){return o(r(e),t)}})},"5Rm1":function(e,t,n){var r=n("RrzB"),o=n("p/au"),i=n("zZIY");e.exports=function(e){return r(e,i,o)}},"5Tg0":function(e,t,n){(function(e){var r=n("Kz5y"),o=t&&!t.nodeType&&t,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,a=i&&i.exports===o?r.Buffer:void 0,s=a?a.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}}).call(this,n("YuTi")(e))},"5YOQ":function(e,t,n){var r=n("2oRo").parseInt,o=n("WKiH"),i=n("WJkJ"),a=/^[-+]?0[xX]/,s=8!==r(i+"08")||22!==r(i+"0x16");e.exports=s?function(e,t){var n=o(String(e),3);return r(n,t>>>0||(a.test(n)?16:10))}:r},"5dW1":function(e,t,n){var r=n("ppGB"),o=n("HYAF");e.exports=function(e,t,n){var i,a,s=String(o(e)),u=r(t),c=s.length;return u<0||u>=c?n?"":void 0:(i=s.charCodeAt(u))<55296||i>56319||u+1===c||(a=s.charCodeAt(u+1))<56320||a>57343?n?s.charAt(u):i:n?s.slice(u,u+2):a-56320+(i-55296<<10)+65536}},"5ktT":function(e,t,n){var r=n("rCas"),o=n("spaK"),i=n("TAge"),a=n("FAZV");for(var s in r){var u=a[s],c=u&&u.prototype;if(c&&c.forEach!==o)try{i(c,"forEach",o)}catch(e){c.forEach=o}}},"5moX":function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}},"5s1v":function(e,t,n){var r=n("p6eA"),o=n("CKGw"),i=n("qakC"),a=n("W1T2"),s=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,l=u.toString,f=c.hasOwnProperty,p=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!i(e)||o(e))&&(r(e)?p:s).test(a(e))}},"5y0q":function(e,t){var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var o=typeof e;return!!(t=null==t?n:t)&&("number"==o||"symbol"!=o&&r.test(e))&&e>-1&&e%1==0&&e0?arguments[0]:void 0)}},n("31IM"),!0)},"6uiq":function(e,t,n){var r=n("anTo"),o=n("ByIo"),i=n("DXl3"),a=i&&i.isSet,s=a?o(a):r;e.exports=s},"711d":function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},"77Zs":function(e,t,n){var r=n("Xi7e");e.exports=function(){this.__data__=new r,this.size=0}},"7GkX":function(e,t,n){var r=n("b80T"),o=n("A90E"),i=n("MMmD");e.exports=function(e){return i(e)?r(e):o(e)}},"7Ix3":function(e,t){e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},"7MbR":function(e,t,n){var r=n("4Boe"),o=n("mXsb");e.exports=function(e,t){return r(e,o(e),t)}},"7fqy":function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}},"7kcN":function(e,t,n){var r=n("xa90"),o=n("3+N0").f,i=Function.prototype,a=i.toString,s=/^\s*function ([^ (]*)/;!r||"name"in i||o(i,"name",{configurable:!0,get:function(){try{return a.call(this).match(s)[1]}catch(e){return""}}})},"7oaj":function(e,t,n){var r=n("G2vQ").Symbol;e.exports=r},"7sX2":function(e,t,n){var r=n("qakC"),o=n("EB+l"),i=NaN,a=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return i;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var n=u.test(e);return n||c.test(e)?l(e.slice(2),n?2:8):s.test(e)?i:+e}},"7uz4":function(e,t,n){var r=n("A4ZO"),o=n("fQmh"),i=n("KE7h"),a=n("9AdZ"),s=n("fBue"),u=n("66UJ");function c(e){var t=this.__data__=new r(e);this.size=t.size}c.prototype.clear=o,c.prototype.delete=i,c.prototype.get=a,c.prototype.has=s,c.prototype.set=u,e.exports=c},"83U7":function(e,t,n){"use strict";var r=n("yPpy");n("pAIc")({target:"RegExp",proto:!0,forced:/./.exec!==r},{exec:r})},"84Qq":function(e,t,n){var r=n("iUFZ"),o=n("D6mB"),i=n("+2Kb"),a=n("vOkN"),s=n("+xOc"),u=n("ueg/")("IE_PROTO"),c=function(){},l=function(){var e,t=s("iframe"),n=i.length;for(t.style.display="none",a.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write("