diff --git a/README.md b/README.md index 9635554..f77843d 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,8 @@ Features * Works on local files too (if you enable this in `chrome://extensions`) * You can inspect the JSON by typing `djson` in the console * Counts items and properties in a collection -* Show JSON path of the elements on hover +* Show JSON path of the elements on hover and copy it with the context menu +* Option to start with JSON collapsed A background worker is used to prevent the UI freezing when processing very long JSON pages. diff --git a/djson-viewer.crx b/djson-viewer.crx index 7bfd0dd..2d24135 100644 Binary files a/djson-viewer.crx and b/djson-viewer.crx differ diff --git a/extension.zip b/extension.zip new file mode 100644 index 0000000..6d59cff Binary files /dev/null and b/extension.zip differ diff --git a/extension/css/content.css b/extension/css/content.css index 303ba7f..43aa9ba 100644 --- a/extension/css/content.css +++ b/extension/css/content.css @@ -1,2 +1,2 @@ -body{-webkit-user-select:text;overflow-y:scroll !important;margin:0;position:relative;background-color:#fff}body pre#emptyPre{word-wrap:break-word;white-space:pre-wrap}pre{white-space:normal;font-size:13px;color:#444}#optionBar{-webkit-user-select:none;display:block;position:absolute;top:9px;right:17px;z-index:10}#optionBar button{-webkit-border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-webkit-user-select:none;background:-webkit-linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5);border:1px solid #aaa;color:#444;font-size:12px;margin-bottom:0;min-width:4em;padding:3px 0;position:relative;display:inline-block;width:80px;text-shadow:1px 1px rgba(255,255,255,0.3)}#optionBar button:hover{-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9);border-color:#999;color:#222}#optionBar button:focus{outline:0}#optionBar #buttonFormatted:active,#optionBar #buttonPlain:active{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc);color:#333}#optionBar #buttonFormatted.selected,#optionBar #buttonPlain.selected{-webkit-box-shadow:inset 0 1px 5px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#e4e4e4, #dfdfdf 40%, #dcdcdc);color:#333}#optionBar #collapseAll{margin-right:10px}#optionBar #buttonFormatted{margin-left:0;margin-right:10px;border-top-left-radius:0;border-bottom-left-radius:0}#optionBar #buttonPlain{margin-right:0;border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}#optionBar #rawFormatterContainer{display:none;margin-top:15px}#optionBar #themeChooser{display:inline-block;width:21px;height:21px;cursor:pointer;background-image:url("data:image/png;base64,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");background-size:cover;position:relative;top:7px}#optionBar #themeChooserContainer{display:none;position:absolute;top:40px;right:0;width:440px;background:#fff;box-shadow:1px 2px 9px 1px #888888;padding:10px;box-sizing:border-box}#optionBar #themeChooserContainer:before{width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-bottom:11px solid #888888;opacity:0.3;position:absolute;top:-11px;right:0.5px;content:""}#optionBar #themeChooserContainer:after{width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #fff;position:absolute;top:-10px;right:1px;content:""}#optionBar #themeChooserContainer #themeChooserTitle{font-weight:bold;color:#333}#optionBar #themeChooserContainer #themeChooserSelectContainer{margin-top:10px}#optionBar #themeChooserContainer #themeChooserPreview pre{word-wrap:break-word;white-space:pre-wrap;border:1px solid;padding:5px;box-shadow:inset 1px 1px 2px 0 #888888}#jsonpOpener,#jsonpCloser{padding:4px 0 0 8px;color:#444;margin-bottom:-6px}#jsonpCloser{margin-top:0}#formattedJson{padding-left:28px;padding-top:6px}.dObj{display:block;padding-left:20px;margin-left:-20px;position:relative}.collapsed{white-space:nowrap}.collapsed>.blockInner{display:none}.collapsed>.ellipsis:after{content:"…";font-weight:bold}.collapsed>.ellipsis{margin:0 4px;color:#888}.collapsed .dObj{display:inline}.expander{width:0;height:0;border-top:8px solid #444;border-right:6px solid transparent;border-left:6px solid transparent;display:block;position:absolute;left:3px;top:5px;z-index:5;opacity:0.15;cursor:pointer;-webkit-transition:-webkit-transform 0.1s linear}.collapsed>.expander{-webkit-transform:rotate(-90deg)}.expander:hover{opacity:0.35}.expander:active{opacity:0.5}.collapsed .dObj .expander{display:none}.blockInner{display:block;padding-left:24px;border-left:1px dotted #bbb;margin-left:2px}#formattedJson,#jsonpOpener,#jsonpCloser{color:#333;font:13px/18px monospace}#formattedJson{color:#444}.b{font-weight:bold}.s{color:#0B7500;word-wrap:break-word}a:link,a:visited{text-decoration:none;color:inherit}a:hover,a:active{text-decoration:underline;color:#050}.bl,.nl,.n{font-weight:bold;color:#1A01CC}.key{color:#000}#formattingMsg{font:13px "Lucida Grande", "Segoe UI", "Tahoma";padding:10px 0 0 8px;margin:0;color:#333}#formattingMsg .loader{position:relative;top:5px;border:4px solid #f3f3f3;border-radius:50%;border-top:4px solid #3498db;width:12px;height:12px;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;display:inline-block}#status{position:fixed;left:0;bottom:0;min-width:628px;border:1px solid #333;border-bottom-width:0;border-left-width:0;border-top-right-radius:4px;height:16px;padding:2px 7px 2px 4px;font-size:15px;opacity:0;background-color:#444;color:#fff;transition:opacity .2s ease-out;-webkit-transition:opacity .2s ease-out;user-select:none;-webkit-user-select:none}#status:not(:empty){opacity:1}[hidden]{display:none !important}span{white-space:pre-wrap}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}body[data-theme="default"],#themeChooserPreview[data-theme="default"]{background-color:#fff}body[data-theme="default"] .expander,#themeChooserPreview[data-theme="default"] .expander{border-top:8px solid #444}body[data-theme="default"] #formattedJson,body[data-theme="default"] #jsonpOpener,body[data-theme="default"] #jsonpCloser,#themeChooserPreview[data-theme="default"] #formattedJson,#themeChooserPreview[data-theme="default"] #jsonpOpener,#themeChooserPreview[data-theme="default"] #jsonpCloser{color:#333}body[data-theme="default"] #formattedJson,#themeChooserPreview[data-theme="default"] #formattedJson{color:#444}body[data-theme="default"] .objProp,#themeChooserPreview[data-theme="default"] .objProp{color:#000}body[data-theme="default"] .s,#themeChooserPreview[data-theme="default"] .s{color:#0B7500}body[data-theme="default"] .key,#themeChooserPreview[data-theme="default"] .key{color:#000}body[data-theme="default"] pre,#themeChooserPreview[data-theme="default"] pre{color:#444}body[data-theme="default"] a:hover,body[data-theme="default"] a:active,#themeChooserPreview[data-theme="default"] a:hover,#themeChooserPreview[data-theme="default"] a:active{color:#050}body[data-theme="default"] .bl,body[data-theme="default"] .nl,body[data-theme="default"] .n,#themeChooserPreview[data-theme="default"] .bl,#themeChooserPreview[data-theme="default"] .nl,#themeChooserPreview[data-theme="default"] .n{color:#1A01CC}body[data-theme="default"] #status,#themeChooserPreview[data-theme="default"] #status{border-color:#333;background-color:#444;color:#fff}body[data-theme="monokai"],#themeChooserPreview[data-theme="monokai"]{background-color:#272822}body[data-theme="monokai"] .expander,#themeChooserPreview[data-theme="monokai"] .expander{border-top:8px solid #fffff9}body[data-theme="monokai"] #formattedJson,body[data-theme="monokai"] #jsonpOpener,body[data-theme="monokai"] #jsonpCloser,#themeChooserPreview[data-theme="monokai"] #formattedJson,#themeChooserPreview[data-theme="monokai"] #jsonpOpener,#themeChooserPreview[data-theme="monokai"] #jsonpCloser{color:#fff}body[data-theme="monokai"] #formattedJson,#themeChooserPreview[data-theme="monokai"] #formattedJson{color:#fffff9}body[data-theme="monokai"] .objProp,#themeChooserPreview[data-theme="monokai"] .objProp{color:#F92672}body[data-theme="monokai"] .s,#themeChooserPreview[data-theme="monokai"] .s{color:#a6e22e}body[data-theme="monokai"] .key,#themeChooserPreview[data-theme="monokai"] .key{color:#F92672}body[data-theme="monokai"] pre,#themeChooserPreview[data-theme="monokai"] pre{color:#fffff9}body[data-theme="monokai"] a:hover,body[data-theme="monokai"] a:active,#themeChooserPreview[data-theme="monokai"] a:hover,#themeChooserPreview[data-theme="monokai"] a:active{color:#8ac21b}body[data-theme="monokai"] .bl,body[data-theme="monokai"] .nl,body[data-theme="monokai"] .n,#themeChooserPreview[data-theme="monokai"] .bl,#themeChooserPreview[data-theme="monokai"] .nl,#themeChooserPreview[data-theme="monokai"] .n{color:#AE81FF}body[data-theme="monokai"] #status,#themeChooserPreview[data-theme="monokai"] #status{border-color:#fff;background-color:#fffff9;color:#272822}body[data-theme="xcode"],#themeChooserPreview[data-theme="xcode"]{background-color:#fff}body[data-theme="xcode"] .expander,#themeChooserPreview[data-theme="xcode"] .expander{border-top:8px solid #bdaddd}body[data-theme="xcode"] #formattedJson,body[data-theme="xcode"] #jsonpOpener,body[data-theme="xcode"] #jsonpCloser,#themeChooserPreview[data-theme="xcode"] #formattedJson,#themeChooserPreview[data-theme="xcode"] #jsonpOpener,#themeChooserPreview[data-theme="xcode"] #jsonpCloser{color:#9589b0}body[data-theme="xcode"] #formattedJson,#themeChooserPreview[data-theme="xcode"] #formattedJson{color:#bdaddd}body[data-theme="xcode"] .objProp,#themeChooserPreview[data-theme="xcode"] .objProp{color:#a195ee}body[data-theme="xcode"] .s,#themeChooserPreview[data-theme="xcode"] .s{color:#000}body[data-theme="xcode"] .key,#themeChooserPreview[data-theme="xcode"] .key{color:#a195ee}body[data-theme="xcode"] pre,#themeChooserPreview[data-theme="xcode"] pre{color:#bdaddd}body[data-theme="xcode"] a:hover,body[data-theme="xcode"] a:active,#themeChooserPreview[data-theme="xcode"] a:hover,#themeChooserPreview[data-theme="xcode"] a:active{color:#f7104d}body[data-theme="xcode"] .bl,body[data-theme="xcode"] .nl,body[data-theme="xcode"] .n,#themeChooserPreview[data-theme="xcode"] .bl,#themeChooserPreview[data-theme="xcode"] .nl,#themeChooserPreview[data-theme="xcode"] .n{color:#3b8afb}body[data-theme="xcode"] #status,#themeChooserPreview[data-theme="xcode"] #status{border-color:#9589b0;background-color:#bdaddd;color:#fff}body[data-theme="solarized"],#themeChooserPreview[data-theme="solarized"]{background-color:#002b36}body[data-theme="solarized"] .expander,#themeChooserPreview[data-theme="solarized"] .expander{border-top:8px solid #cfebee}body[data-theme="solarized"] #formattedJson,body[data-theme="solarized"] #jsonpOpener,body[data-theme="solarized"] #jsonpCloser,#themeChooserPreview[data-theme="solarized"] #formattedJson,#themeChooserPreview[data-theme="solarized"] #jsonpOpener,#themeChooserPreview[data-theme="solarized"] #jsonpCloser{color:#e2fafc}body[data-theme="solarized"] #formattedJson,#themeChooserPreview[data-theme="solarized"] #formattedJson{color:#cfebee}body[data-theme="solarized"] .objProp,#themeChooserPreview[data-theme="solarized"] .objProp{color:#839496}body[data-theme="solarized"] .s,#themeChooserPreview[data-theme="solarized"] .s{color:#2aa198}body[data-theme="solarized"] .key,#themeChooserPreview[data-theme="solarized"] .key{color:#839496}body[data-theme="solarized"] pre,#themeChooserPreview[data-theme="solarized"] pre{color:#cfebee}body[data-theme="solarized"] a:hover,body[data-theme="solarized"] a:active,#themeChooserPreview[data-theme="solarized"] a:hover,#themeChooserPreview[data-theme="solarized"] a:active{color:#268bd2}body[data-theme="solarized"] .bl,body[data-theme="solarized"] .nl,body[data-theme="solarized"] .n,#themeChooserPreview[data-theme="solarized"] .bl,#themeChooserPreview[data-theme="solarized"] .nl,#themeChooserPreview[data-theme="solarized"] .n{color:#d33682}body[data-theme="solarized"] #status,#themeChooserPreview[data-theme="solarized"] #status{border-color:#e2fafc;background-color:#cfebee;color:#002b36}body[data-theme="darkorange"],#themeChooserPreview[data-theme="darkorange"]{background-color:#000}body[data-theme="darkorange"] .expander,#themeChooserPreview[data-theme="darkorange"] .expander{border-top:8px solid #ededed}body[data-theme="darkorange"] #formattedJson,body[data-theme="darkorange"] #jsonpOpener,body[data-theme="darkorange"] #jsonpCloser,#themeChooserPreview[data-theme="darkorange"] #formattedJson,#themeChooserPreview[data-theme="darkorange"] #jsonpOpener,#themeChooserPreview[data-theme="darkorange"] #jsonpCloser{color:#fff}body[data-theme="darkorange"] #formattedJson,#themeChooserPreview[data-theme="darkorange"] #formattedJson{color:#ededed}body[data-theme="darkorange"] .objProp,#themeChooserPreview[data-theme="darkorange"] .objProp{color:orange}body[data-theme="darkorange"] .s,#themeChooserPreview[data-theme="darkorange"] .s{color:#90ee90}body[data-theme="darkorange"] .key,#themeChooserPreview[data-theme="darkorange"] .key{color:orange}body[data-theme="darkorange"] pre,#themeChooserPreview[data-theme="darkorange"] pre{color:#ededed}body[data-theme="darkorange"] a:hover,body[data-theme="darkorange"] a:active,#themeChooserPreview[data-theme="darkorange"] a:hover,#themeChooserPreview[data-theme="darkorange"] a:active{color:#1e90ff}body[data-theme="darkorange"] .bl,body[data-theme="darkorange"] .nl,body[data-theme="darkorange"] .n,#themeChooserPreview[data-theme="darkorange"] .bl,#themeChooserPreview[data-theme="darkorange"] .nl,#themeChooserPreview[data-theme="darkorange"] .n{color:#add8e6}body[data-theme="darkorange"] #status,#themeChooserPreview[data-theme="darkorange"] #status{border-color:#fff;background-color:#ededed;color:#000}body[data-theme="halewa"],#themeChooserPreview[data-theme="halewa"]{background-color:#263238}body[data-theme="halewa"] .expander,#themeChooserPreview[data-theme="halewa"] .expander{border-top:8px solid #5ee38a}body[data-theme="halewa"] #formattedJson,body[data-theme="halewa"] #jsonpOpener,body[data-theme="halewa"] #jsonpCloser,#themeChooserPreview[data-theme="halewa"] #formattedJson,#themeChooserPreview[data-theme="halewa"] #jsonpOpener,#themeChooserPreview[data-theme="halewa"] #jsonpCloser{color:#60fc9f}body[data-theme="halewa"] #formattedJson,#themeChooserPreview[data-theme="halewa"] #formattedJson{color:#5ee38a}body[data-theme="halewa"] .objProp,#themeChooserPreview[data-theme="halewa"] .objProp{color:#c792ea}body[data-theme="halewa"] .s,#themeChooserPreview[data-theme="halewa"] .s{color:#ffcb6b}body[data-theme="halewa"] .key,#themeChooserPreview[data-theme="halewa"] .key{color:#c792ea}body[data-theme="halewa"] pre,#themeChooserPreview[data-theme="halewa"] pre{color:#5ee38a}body[data-theme="halewa"] a:hover,body[data-theme="halewa"] a:active,#themeChooserPreview[data-theme="halewa"] a:hover,#themeChooserPreview[data-theme="halewa"] a:active{color:#50a3d8}body[data-theme="halewa"] .bl,body[data-theme="halewa"] .nl,body[data-theme="halewa"] .n,#themeChooserPreview[data-theme="halewa"] .bl,#themeChooserPreview[data-theme="halewa"] .nl,#themeChooserPreview[data-theme="halewa"] .n{color:#6dc2b8}body[data-theme="halewa"] #status,#themeChooserPreview[data-theme="halewa"] #status{border-color:#60fc9f;background-color:#5ee38a;color:#263238} +body{-webkit-user-select:text;overflow-y:scroll !important;margin:0;position:relative;background-color:#fff}body pre#emptyPre{word-wrap:break-word;white-space:pre-wrap}pre{white-space:normal;font-size:13px;color:#444}#optionBar{-webkit-user-select:none;display:block;position:absolute;top:9px;right:17px;z-index:10}#optionBar button{-webkit-border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-webkit-user-select:none;background:-webkit-linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5);border:1px solid #aaa;color:#444;font-size:12px;margin-bottom:0;min-width:4em;padding:3px 0;position:relative;display:inline-block;width:80px;text-shadow:1px 1px rgba(255,255,255,0.3)}#optionBar button:hover{-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9);border-color:#999;color:#222}#optionBar button:focus{outline:0}#optionBar #buttonFormatted:active,#optionBar #buttonPlain:active{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc);color:#333}#optionBar #buttonFormatted.selected,#optionBar #buttonPlain.selected{-webkit-box-shadow:inset 0 1px 5px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#e4e4e4, #dfdfdf 40%, #dcdcdc);color:#333}#optionBar #collapseAll{margin-right:10px}#optionBar #buttonFormatted{margin-left:0;margin-right:10px;border-top-left-radius:0;border-bottom-left-radius:0}#optionBar #buttonPlain{margin-right:0;border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}#optionBar #rawFormatterContainer{display:none;margin-top:15px}#optionBar #optionChooser{display:inline-block;width:21px;height:21px;cursor:pointer;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzdBQTYwNTYxQzY2MTFFNzk4MENFNTBBMjJGODI4MDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzdBQTYwNTcxQzY2MTFFNzk4MENFNTBBMjJGODI4MDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDN0FBNjA1NDFDNjYxMUU3OTgwQ0U1MEEyMkY4MjgwOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDN0FBNjA1NTFDNjYxMUU3OTgwQ0U1MEEyMkY4MjgwOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ph3jLF8AAA/vSURBVHjalFkJkFzV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");background-size:cover;position:relative;top:7px}#optionScreen{padding:0 10px}#optionScreen #themeChooserContainer #themeChooserSelectContainer{margin-top:10px}#optionScreen #themeChooserContainer #themeChooserPreview pre{word-wrap:break-word;white-space:pre-wrap;border:1px solid;padding:5px;box-shadow:inset 1px 1px 2px 0 #888888}#jsonpOpener,#jsonpCloser{padding:4px 0 0 8px;color:#444;margin-bottom:-6px}#jsonpCloser{margin-top:0}#formattedJson{padding-left:28px;padding-top:6px}.dObj{display:block;padding-left:20px;margin-left:-20px;position:relative}.collapsed{white-space:nowrap}.collapsed>.blockInner{display:none}.collapsed>.ellipsis:after{content:"…";font-weight:bold}.collapsed>.ellipsis{margin:0 4px;color:#888}.collapsed .dObj{display:inline}.expander{width:0;height:0;border-top:8px solid #444;border-right:6px solid transparent;border-left:6px solid transparent;display:block;position:absolute;left:3px;top:5px;z-index:5;opacity:0.15;cursor:pointer;-webkit-transition:-webkit-transform 0.1s linear}.collapsed>.expander{-webkit-transform:rotate(-90deg)}.expander:hover{opacity:0.35}.expander:active{opacity:0.5}.collapsed .dObj .expander{display:none}.blockInner{display:block;padding-left:24px;border-left:1px dotted #bbb;margin-left:2px}#formattedJson,#jsonpOpener,#jsonpCloser{color:#333;font:13px/18px monospace}#formattedJson{color:#444}.b{font-weight:bold}.s{color:#0B7500;word-wrap:break-word}a:link,a:visited{text-decoration:none;color:inherit}a:hover,a:active{text-decoration:underline;color:#050}.bl,.nl,.n{font-weight:bold;color:#1A01CC}.key{color:#000}#formattingMsg{font:13px "Lucida Grande", "Segoe UI", "Tahoma";padding:10px 0 0 8px;margin:0;color:#333}#formattingMsg .loader{position:relative;top:5px;border:4px solid #f3f3f3;border-radius:50%;border-top:4px solid #3498db;width:12px;height:12px;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;display:inline-block}#status{position:fixed;left:0;bottom:0;min-width:628px;border:1px solid #333;border-bottom-width:0;border-left-width:0;border-top-right-radius:4px;height:16px;padding:2px 7px 2px 4px;font-size:15px;opacity:0;background-color:#444;color:#fff;transition:opacity .2s ease-out;-webkit-transition:opacity .2s ease-out;user-select:none;-webkit-user-select:none}#status:not(:empty){opacity:1}[hidden]{display:none !important}span{white-space:pre-wrap}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}body[data-theme="default"],#themeChooserPreview[data-theme="default"]{background-color:#fff}body[data-theme="default"] .expander,#themeChooserPreview[data-theme="default"] .expander{border-top:8px solid #444}body[data-theme="default"] #formattedJson,body[data-theme="default"] #jsonpOpener,body[data-theme="default"] #jsonpCloser,#themeChooserPreview[data-theme="default"] #formattedJson,#themeChooserPreview[data-theme="default"] #jsonpOpener,#themeChooserPreview[data-theme="default"] #jsonpCloser{color:#333}body[data-theme="default"] #formattedJson,#themeChooserPreview[data-theme="default"] #formattedJson{color:#444}body[data-theme="default"] .objProp,#themeChooserPreview[data-theme="default"] .objProp{color:#000}body[data-theme="default"] .s,#themeChooserPreview[data-theme="default"] .s{color:#0B7500}body[data-theme="default"] .key,#themeChooserPreview[data-theme="default"] .key{color:#000}body[data-theme="default"] pre,#themeChooserPreview[data-theme="default"] pre{color:#444}body[data-theme="default"] a:hover,body[data-theme="default"] a:active,#themeChooserPreview[data-theme="default"] a:hover,#themeChooserPreview[data-theme="default"] a:active{color:#050}body[data-theme="default"] .bl,body[data-theme="default"] .nl,body[data-theme="default"] .n,#themeChooserPreview[data-theme="default"] .bl,#themeChooserPreview[data-theme="default"] .nl,#themeChooserPreview[data-theme="default"] .n{color:#1A01CC}body[data-theme="default"] #formattingMsg,#themeChooserPreview[data-theme="default"] #formattingMsg{color:#333}body[data-theme="default"] #status,#themeChooserPreview[data-theme="default"] #status{border-color:#333;background-color:#444;color:#fff}body[data-theme="monokai"],#themeChooserPreview[data-theme="monokai"]{background-color:#272822}body[data-theme="monokai"] .expander,#themeChooserPreview[data-theme="monokai"] .expander{border-top:8px solid #fffff9}body[data-theme="monokai"] #formattedJson,body[data-theme="monokai"] #jsonpOpener,body[data-theme="monokai"] #jsonpCloser,#themeChooserPreview[data-theme="monokai"] #formattedJson,#themeChooserPreview[data-theme="monokai"] #jsonpOpener,#themeChooserPreview[data-theme="monokai"] #jsonpCloser{color:#fff}body[data-theme="monokai"] #formattedJson,#themeChooserPreview[data-theme="monokai"] #formattedJson{color:#fffff9}body[data-theme="monokai"] .objProp,#themeChooserPreview[data-theme="monokai"] .objProp{color:#F92672}body[data-theme="monokai"] .s,#themeChooserPreview[data-theme="monokai"] .s{color:#a6e22e}body[data-theme="monokai"] .key,#themeChooserPreview[data-theme="monokai"] .key{color:#F92672}body[data-theme="monokai"] pre,#themeChooserPreview[data-theme="monokai"] pre{color:#fffff9}body[data-theme="monokai"] a:hover,body[data-theme="monokai"] a:active,#themeChooserPreview[data-theme="monokai"] a:hover,#themeChooserPreview[data-theme="monokai"] a:active{color:#8ac21b}body[data-theme="monokai"] .bl,body[data-theme="monokai"] .nl,body[data-theme="monokai"] .n,#themeChooserPreview[data-theme="monokai"] .bl,#themeChooserPreview[data-theme="monokai"] .nl,#themeChooserPreview[data-theme="monokai"] .n{color:#AE81FF}body[data-theme="monokai"] #formattingMsg,#themeChooserPreview[data-theme="monokai"] #formattingMsg{color:#fff}body[data-theme="monokai"] #status,#themeChooserPreview[data-theme="monokai"] #status{border-color:#fff;background-color:#fffff9;color:#272822}body[data-theme="xcode"],#themeChooserPreview[data-theme="xcode"]{background-color:#fff}body[data-theme="xcode"] .expander,#themeChooserPreview[data-theme="xcode"] .expander{border-top:8px solid #bdaddd}body[data-theme="xcode"] #formattedJson,body[data-theme="xcode"] #jsonpOpener,body[data-theme="xcode"] #jsonpCloser,#themeChooserPreview[data-theme="xcode"] #formattedJson,#themeChooserPreview[data-theme="xcode"] #jsonpOpener,#themeChooserPreview[data-theme="xcode"] #jsonpCloser{color:#9589b0}body[data-theme="xcode"] #formattedJson,#themeChooserPreview[data-theme="xcode"] #formattedJson{color:#bdaddd}body[data-theme="xcode"] .objProp,#themeChooserPreview[data-theme="xcode"] .objProp{color:#a195ee}body[data-theme="xcode"] .s,#themeChooserPreview[data-theme="xcode"] .s{color:#000}body[data-theme="xcode"] .key,#themeChooserPreview[data-theme="xcode"] .key{color:#a195ee}body[data-theme="xcode"] pre,#themeChooserPreview[data-theme="xcode"] pre{color:#bdaddd}body[data-theme="xcode"] a:hover,body[data-theme="xcode"] a:active,#themeChooserPreview[data-theme="xcode"] a:hover,#themeChooserPreview[data-theme="xcode"] a:active{color:#f7104d}body[data-theme="xcode"] .bl,body[data-theme="xcode"] .nl,body[data-theme="xcode"] .n,#themeChooserPreview[data-theme="xcode"] .bl,#themeChooserPreview[data-theme="xcode"] .nl,#themeChooserPreview[data-theme="xcode"] .n{color:#3b8afb}body[data-theme="xcode"] #formattingMsg,#themeChooserPreview[data-theme="xcode"] #formattingMsg{color:#9589b0}body[data-theme="xcode"] #status,#themeChooserPreview[data-theme="xcode"] #status{border-color:#9589b0;background-color:#bdaddd;color:#fff}body[data-theme="solarized"],#themeChooserPreview[data-theme="solarized"]{background-color:#002b36}body[data-theme="solarized"] .expander,#themeChooserPreview[data-theme="solarized"] .expander{border-top:8px solid #cfebee}body[data-theme="solarized"] #formattedJson,body[data-theme="solarized"] #jsonpOpener,body[data-theme="solarized"] #jsonpCloser,#themeChooserPreview[data-theme="solarized"] #formattedJson,#themeChooserPreview[data-theme="solarized"] #jsonpOpener,#themeChooserPreview[data-theme="solarized"] #jsonpCloser{color:#e2fafc}body[data-theme="solarized"] #formattedJson,#themeChooserPreview[data-theme="solarized"] #formattedJson{color:#cfebee}body[data-theme="solarized"] .objProp,#themeChooserPreview[data-theme="solarized"] .objProp{color:#839496}body[data-theme="solarized"] .s,#themeChooserPreview[data-theme="solarized"] .s{color:#2aa198}body[data-theme="solarized"] .key,#themeChooserPreview[data-theme="solarized"] .key{color:#839496}body[data-theme="solarized"] pre,#themeChooserPreview[data-theme="solarized"] pre{color:#cfebee}body[data-theme="solarized"] a:hover,body[data-theme="solarized"] a:active,#themeChooserPreview[data-theme="solarized"] a:hover,#themeChooserPreview[data-theme="solarized"] a:active{color:#268bd2}body[data-theme="solarized"] .bl,body[data-theme="solarized"] .nl,body[data-theme="solarized"] .n,#themeChooserPreview[data-theme="solarized"] .bl,#themeChooserPreview[data-theme="solarized"] .nl,#themeChooserPreview[data-theme="solarized"] .n{color:#d33682}body[data-theme="solarized"] #formattingMsg,#themeChooserPreview[data-theme="solarized"] #formattingMsg{color:#e2fafc}body[data-theme="solarized"] #status,#themeChooserPreview[data-theme="solarized"] #status{border-color:#e2fafc;background-color:#cfebee;color:#002b36}body[data-theme="darkorange"],#themeChooserPreview[data-theme="darkorange"]{background-color:#000}body[data-theme="darkorange"] .expander,#themeChooserPreview[data-theme="darkorange"] .expander{border-top:8px solid #ededed}body[data-theme="darkorange"] #formattedJson,body[data-theme="darkorange"] #jsonpOpener,body[data-theme="darkorange"] #jsonpCloser,#themeChooserPreview[data-theme="darkorange"] #formattedJson,#themeChooserPreview[data-theme="darkorange"] #jsonpOpener,#themeChooserPreview[data-theme="darkorange"] #jsonpCloser{color:#fff}body[data-theme="darkorange"] #formattedJson,#themeChooserPreview[data-theme="darkorange"] #formattedJson{color:#ededed}body[data-theme="darkorange"] .objProp,#themeChooserPreview[data-theme="darkorange"] .objProp{color:orange}body[data-theme="darkorange"] .s,#themeChooserPreview[data-theme="darkorange"] .s{color:#90ee90}body[data-theme="darkorange"] .key,#themeChooserPreview[data-theme="darkorange"] .key{color:orange}body[data-theme="darkorange"] pre,#themeChooserPreview[data-theme="darkorange"] pre{color:#ededed}body[data-theme="darkorange"] a:hover,body[data-theme="darkorange"] a:active,#themeChooserPreview[data-theme="darkorange"] a:hover,#themeChooserPreview[data-theme="darkorange"] a:active{color:#1e90ff}body[data-theme="darkorange"] .bl,body[data-theme="darkorange"] .nl,body[data-theme="darkorange"] .n,#themeChooserPreview[data-theme="darkorange"] .bl,#themeChooserPreview[data-theme="darkorange"] .nl,#themeChooserPreview[data-theme="darkorange"] .n{color:#add8e6}body[data-theme="darkorange"] #formattingMsg,#themeChooserPreview[data-theme="darkorange"] #formattingMsg{color:#fff}body[data-theme="darkorange"] #status,#themeChooserPreview[data-theme="darkorange"] #status{border-color:#fff;background-color:#ededed;color:#000}body[data-theme="halewa"],#themeChooserPreview[data-theme="halewa"]{background-color:#263238}body[data-theme="halewa"] .expander,#themeChooserPreview[data-theme="halewa"] .expander{border-top:8px solid #5ee38a}body[data-theme="halewa"] #formattedJson,body[data-theme="halewa"] #jsonpOpener,body[data-theme="halewa"] #jsonpCloser,#themeChooserPreview[data-theme="halewa"] #formattedJson,#themeChooserPreview[data-theme="halewa"] #jsonpOpener,#themeChooserPreview[data-theme="halewa"] #jsonpCloser{color:#60fc9f}body[data-theme="halewa"] #formattedJson,#themeChooserPreview[data-theme="halewa"] #formattedJson{color:#5ee38a}body[data-theme="halewa"] .objProp,#themeChooserPreview[data-theme="halewa"] .objProp{color:#c792ea}body[data-theme="halewa"] .s,#themeChooserPreview[data-theme="halewa"] .s{color:#ffcb6b}body[data-theme="halewa"] .key,#themeChooserPreview[data-theme="halewa"] .key{color:#c792ea}body[data-theme="halewa"] pre,#themeChooserPreview[data-theme="halewa"] pre{color:#5ee38a}body[data-theme="halewa"] a:hover,body[data-theme="halewa"] a:active,#themeChooserPreview[data-theme="halewa"] a:hover,#themeChooserPreview[data-theme="halewa"] a:active{color:#50a3d8}body[data-theme="halewa"] .bl,body[data-theme="halewa"] .nl,body[data-theme="halewa"] .n,#themeChooserPreview[data-theme="halewa"] .bl,#themeChooserPreview[data-theme="halewa"] .nl,#themeChooserPreview[data-theme="halewa"] .n{color:#6dc2b8}body[data-theme="halewa"] #formattingMsg,#themeChooserPreview[data-theme="halewa"] #formattingMsg{color:#60fc9f}body[data-theme="halewa"] #status,#themeChooserPreview[data-theme="halewa"] #status{border-color:#60fc9f;background-color:#5ee38a;color:#263238} /*# sourceMappingURL=content.css.map */ diff --git a/extension/css/content.css.map b/extension/css/content.css.map new file mode 100644 index 0000000..3454faf --- /dev/null +++ b/extension/css/content.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../../sass/content.scss","../../sass/_theme-default.scss","../../sass/_theme-monokai.scss","../../sass/_theme-xcode.scss","../../sass/_theme-solarized.scss","../../sass/_theme-darkorange.scss","../../sass/_theme-halewa.scss"], +"names": [], +"file": "content.css" +} \ No newline at end of file diff --git a/extension/images/setting.png b/extension/images/setting.png new file mode 100644 index 0000000..f25b2b7 Binary files /dev/null and b/extension/images/setting.png differ diff --git a/extension/js/background.js b/extension/js/background.js index bd1fe3d..83235b9 100644 --- a/extension/js/background.js +++ b/extension/js/background.js @@ -26,7 +26,7 @@ "use strict"; - var path, copyPathMenuEntryId; + var path; // Constants var @@ -374,17 +374,35 @@ } function copy(value) { - var selElement, selRange, selection; - selElement = document.createElement("span"); - selRange = document.createRange(); - selElement.innerText = value; - document.body.appendChild(selElement); - selRange.selectNodeContents(selElement); - selection = window.getSelection(); - selection.removeAllRanges(); - selection.addRange(selRange); - document.execCommand("Copy"); - document.body.removeChild(selElement); + if(value.length > 0){ + var selElement, selRange, selection; + selElement = document.createElement("span"); + selRange = document.createRange(); + selElement.innerText = value; + document.body.appendChild(selElement); + selRange.selectNodeContents(selElement); + selection = window.getSelection(); + selection.removeAllRanges(); + selection.addRange(selRange); + document.execCommand("Copy"); + document.body.removeChild(selElement); + } + } + + function createContextMenu() { + chrome.contextMenus.create({ + title : "Copy JSON Path", + id: "copyJSONPath", + contexts : [ "page", "selection", "link" ], + onclick : function(info, tab) { + copy(path); + } + }, function(){ + var err = chrome.runtime.lastError; + if(err && err.hasOwnProperty('message') && err.message.indexOf('Cannot create item with duplicate id') === -1) { + console.warn('Context menu error ignored:', err); + } + }); } // Listen for requests from content pages wanting to set up a port @@ -409,7 +427,21 @@ }); }); }); - port.disconnect(); + } + + else if (msg.type === 'OPEN OPTION TAB') { + var viewTabUrl = chrome.extension.getURL('options.html'); + chrome.tabs.query({url: viewTabUrl, currentWindow: true}, function (tabs) { + var tabLenght = tabs.length; + if (tabLenght > 0) { + chrome.tabs.update(tabs[0].id, {'active': true}); + } else { + chrome.tabs.query({active: true}, function (tabs) { + var index = tabs[0].index; + chrome.tabs.create({url: viewTabUrl, active: true, index: index + 1}); + }); + } + }); } else if (msg.type === 'SENDING TEXT') { @@ -497,42 +529,60 @@ var html = jsonObjToHTML(obj, jsonpFunctionName); // Post the HTML string to the content script - port.postMessage(['FORMATTED', html, validJsonText]); + port.postMessage(['FORMATTED', html, validJsonText, JSON.stringify(localStorage)]); } - else if (msg.type === 'SAVE THEME') { - localStorage.setItem("theme", msg.theme); + else if (msg.type === 'COPY PATH') { + var contextMenu = localStorage.getItem("contextMenu"); + if(contextMenu && contextMenu === "true") { + chrome.permissions.contains({permissions: ['contextMenus']}, function(result) { + if (result) { + path = msg.path; + } else { + localStorage.removeItem("contextMenu"); + } + }); + } } - else if (msg.type === 'COPY PATH') { + else if (msg.type === 'ENABLE CONTEXT MENU') { chrome.permissions.contains({permissions: ['contextMenus']}, function(result) { - function updateContextMenu() { - path = msg.path; - if (typeof copyPathMenuEntryId === "undefined" || copyPathMenuEntryId == null) { - copyPathMenuEntryId = chrome.contextMenus.create({ - title : "Copy JSON Path", - contexts : [ "page", "selection", "link" ], - onclick : function(info, tab) { - copy(path); - } - }); - } else if (copyPathMenuEntryId && path.length == 0) { - chrome.contextMenus.remove(copyPathMenuEntryId); - copyPathMenuEntryId = null; - } - } if (result) { - updateContextMenu(); + localStorage.setItem("contextMenu", true); + createContextMenu(); } else { chrome.permissions.request({permissions: ['contextMenus']}, function(granted) { // The callback argument will be true if the user granted the permissions. if (granted) { - updateContextMenu(); + localStorage.setItem("contextMenu", true); + createContextMenu(); + } else { + var contextMenuCheckbox = document.getElementById("contextMenuCheckbox"); + if(contextMenuCheckbox) { + contextMenuCheckbox.checked = false; + } + localStorage.removeItem("contextMenu"); } }); } }); } + + else if (msg.type === 'DISABLE CONTEXT MENU') { + localStorage.removeItem("contextMenu"); + chrome.permissions.contains({permissions: ['contextMenus']}, function(result) { + chrome.contextMenus.removeAll(); + }); + } }); }); + + var contextMenu = localStorage.getItem("contextMenu"); + if(contextMenu && contextMenu === "true") { + chrome.permissions.contains({permissions: ['contextMenus']}, function(result) { + if (result) { + createContextMenu(); + } + }); + } }()); diff --git a/extension/js/content.js b/extension/js/content.js index c312fd0..1c9e872 100644 --- a/extension/js/content.js +++ b/extension/js/content.js @@ -34,8 +34,6 @@ port ; - var supportedThemes = ["default", "monokai", "xcode", "solarized", "darkorange", "halewa"]; - chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { chrome.tabs.getCurrent(function (tab) { if(tab.url == chrome.extension.getURL('json.html')){ @@ -72,16 +70,14 @@ // Clear the slowAnalysisTimeout (if the BG worker had taken longer than 1s to respond with an answer to whether or not this is JSON, then it would have fired, unhiding the PRE... But now that we know it's JSON, we can clear this timeout, ensuring the PRE stays hidden.) clearTimeout(slowAnalysisTimeout); - var firstLoad = typeof djsonStyleEl === "undefined"; - // Insert CSS - if(firstLoad) { + if(typeof djsonStyleEl === "undefined") { djsonStyleEl = document.createElement('style'); djsonStyleEl.id = 'djsonStyleEl'; document.head.appendChild(djsonStyleEl); djsonStyleEl.insertAdjacentHTML( 'beforeend', - 'body{-webkit-user-select:text;overflow-y:scroll !important;margin:0;position:relative;background-color:#fff}body pre#emptyPre{word-wrap:break-word;white-space:pre-wrap}pre{white-space:normal;font-size:13px;color:#444}#optionBar{-webkit-user-select:none;display:block;position:absolute;top:9px;right:17px;z-index:10}#optionBar button{-webkit-border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-webkit-user-select:none;background:-webkit-linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5);border:1px solid #aaa;color:#444;font-size:12px;margin-bottom:0;min-width:4em;padding:3px 0;position:relative;display:inline-block;width:80px;text-shadow:1px 1px rgba(255,255,255,0.3)}#optionBar button:hover{-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9);border-color:#999;color:#222}#optionBar button:focus{outline:0}#optionBar #buttonFormatted:active,#optionBar #buttonPlain:active{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc);color:#333}#optionBar #buttonFormatted.selected,#optionBar #buttonPlain.selected{-webkit-box-shadow:inset 0 1px 5px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#e4e4e4, #dfdfdf 40%, #dcdcdc);color:#333}#optionBar #collapseAll{margin-right:10px}#optionBar #buttonFormatted{margin-left:0;margin-right:10px;border-top-left-radius:0;border-bottom-left-radius:0}#optionBar #buttonPlain{margin-right:0;border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}#optionBar #rawFormatterContainer{display:none;margin-top:15px}#optionBar #themeChooser{display:inline-block;width:21px;height:21px;cursor:pointer;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAACl1BMVEUAAABEREBEREBEREBBpN5DpNtCpdxCpdtCotdEREBEREBBpN1CpNtGp9tEREBCpttDpd0/o9pEREBEREBDpdxEREBDpNtEpuFEREBEREBBo9lEREBCmspEREBCmMZEREBClsRCpNlCpt2Bvt+DweGAvN18s9F7ss+pwMy71+PLy8rm5ubNzc3g4ODk5OTi4uLOzs7MzMvMzMzMzMzHx8fIyMi0tLSysrKxsbG4uLi5ubm0tLRFRURDQ0NDQ0JFRUVDQ0I/Pz9KSkdCQkJCQkIAAABERERERERDQ0NDQ0NDQ0NDQ0NCQkJDQ0NDQ0NDQ0NISEhCQkJCQkIzMzNDQ0NERERDQ0NCQkJERERCQkJERERCQkJDQ0NERERERERCQkJCQkJERERCQkJERENCQkJERERDQ0JCQkJERERCQkJERERERERERERCQkJHR0dBQUFCQkJFRUVDQ0NCQkJERERERERCQkJDQ0NERERERERCQkJERERERERDQ0NERERERERERERERERERERERERERERERERERERDQ0NDQ0NERERFRUVVVVVERERVVVVERERERERFRUVDQ0NDQ0M/Pz9DQ0NDQ0NERERERERCQkFDQ0NERERGRkYgIB5FRUVERERDQ0NMTExERERFRUU4ODhDpt1DpNpDptxDpNlDo9lDo9hDotdDpdxDotZDodVDoNSqydmqydqv0OKw0eOhxtpkst5ntN+mzOLd3d3l5eXm5ubc3Nzj5eZjst/h4+Sjy+Ku0OOtz+KoyNqoyNmpydq40+O31OPb4uZHqN5Ept3W3+WAvuF3uuDa4eVar95Wrd7X4OV3u+DW4Oa51OTW4OXExMTDw8O9vb28vLyzs7OysrKtra2srKxERETiOf5oAAAApHRSTlMAAQIDH09YWFoEBbe0HQbm5BwHCLEJ/hoKC0sMWw5dD15VVJKMk5iZc2ZiVGFZWFVdXn97kox57e3s7HVXSEs7LxwR+PQBxr+EfTUt1tBpYgfm4QVeVr24GurnGUD3Pl38+1FZ9UxA3tw0D53+mhA6vDc58fCcQYGv7Pnr1a6sqKmtsLGrp6CbgHpGBugDf3gL39sINjFK8i3JxSQCUbdPCjRNCddyq6oAAAWdSURBVHja7Zvda1xFGId/77uT7EbxYhWyCYsX0oDEjwv/BhUvvFHw0hatgpEIpkKKoG0JtVJoiamkpRUtBT8QVMyFLWr8vPAvqOCFehlbF9IKCTTZ7s7rxW6yc86ZMzu758wRIbnLb2fmmXN2Pp7MyVH4j39UPCACRIrL4h0oAYCGIooUjzcyeCbSijFsHaAKAbKlyhfMEADi1zBENkMbBsP6FdCYAlpbpTvP9jIWBjRFGh4uO/9K9eYuQ2wdoCoBsiFlk88ECOlIu0Nmy3M9hm0Q0t0M6JuijPvPJQJER9sdOuNao8uwzQIeJ0DWBb3hh7IwoPm22W6GbPFwrcuwdIBrDOiGhtGBMjEgtB1pN0vG1GUkO8A1Bei/dbQ8AMh2fhlLnLHTARpnsL6mE/0VvZ1jxhJjgFR3/BGg10LzEwxiUZ35x0D460/yK00oADRGlu8/AF9KUf5YdwxUFCCNAviaIvxqqwVRQIkAvV4EP5JxFQBEgQCIuTbdG47PBn+8rSFtKBDQ2pDCr78GoLXVGQOyJck9JDB/EhpySzodiPGpAH4dursnKUh0aeJ6EXzWkBvSWYolxmciIiobmYgAvpmif4yoSk2z3MgOA9ANsTkh1xlcoch8FSkBbe+sNHG9x6807zDLcY+/s+6pBL8zCIbmkx4x1ppmslyHf80qpZ3PsvEjPhG9foPR2xNU8rNqNr45/qQv3+xA4rPMfOrPN52wAL5KMnpOOBmAT7FylGSoiJPmzJd4uaSTmE6YP18ny8X5DifMgb9d7sN3OWEe/EQ58XfCIPy2eDthFj6l8qnl64RZ+EKpfPJzwox88eQ7nDAbv+THdzhhIXyXE2blkwff6YQ6G79tnAncs5nCdzphVj7v+7MbTFEa3+mEGfm0sWs0pRvp/HBOCPD0bwCAB26n80M6IdbHH9r6A1MVaqTyAzthAxP33UV/iQc/lBNexya8+AGd0JYV6YT2fao4J0zdpwpywtSsICf05YdywvR90ssJVR3dPykk/vwla+Z3TsgqFF/Y1wkD8cXXCQvhO5ywEL7rnPAAAcLRMaxzyUa9nHD0UrDntM97OSGHe1DMXk4YvAN9zwlfuhCIP6O8nPD36VA3oPSNlxOuPRjyG/BwQs0BO+DlhFd4KQj/0GVfJ+RQN4A9nZDnTwXgH1Y277U64cozQebAFxZ+ihN+zm/nzn/Dyk9zQj5yPGf+UcvfBA4n/PTZnJfDBfUjD/Ts+JP9b72ZI//EyKqF7zgn5PpPjy0cy41/Un1t4TuckOuM7544NZ8T//TIV0m+ywk78/X9mXdoLgf8Eo1+aeE7nHBnvTiHV2fPZuYvj5yxjH+nE/bKn8G57crLGejnqbVkW/+cThgpv4in3iP69WE6OCD6IhE11zZXrOcOfZ3QLL8CcP0qPjazowcsyA8X7Cxr5j4n9GjDutv5893nhEPyaSC+wwk92ihZOzAI3+mE/duglJvgzXc7Yf82KDd+v3PC1Cwvfp9zwoH4GIbvPidMbUNsfBmG7zwnTG/D3oGh5rPjnNDRRjuvNcl1TljEmug6JyyE73DCQvhOJyyA38cJg++JfZ0wMN/DCYPy/ZwwHN/bCUM50QBOGMbJ9pxwzwn3nHDPCfeccM8J/+9OOGrjjhbohJz2QKYoJ3R0oBgntHbgaoFOSB+8kOCvPPJRTk44CZ2Yk7FsftHyQOSQX93uup/uhDXoxJxMZHz5yRj/ivKt283SnHAcOjEnk9nc8snXI/Vmnp71rbuTWZ2Qqm1A35C+2bHjq4+bZ8ITs/51I1nsveMqdOL/OezZkRPfP7r7+w/3nx6krpnF3jtuAa1b4pW99u7P3+47CODiFH22OlhdI4u8d1xBKz4nHdmLwKVfCDK9f/C61veOwU0Asa3enT2XoW6yAySW9+SDZ/8CRwZAafZMnfMAAAAASUVORK5CYII=");background-size:cover;position:relative;top:7px}#optionBar #themeChooserContainer{display:none;position:absolute;top:40px;right:0;width:440px;background:#fff;box-shadow:1px 2px 9px 1px #888888;padding:10px;box-sizing:border-box}#optionBar #themeChooserContainer:before{width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-bottom:11px solid #888888;opacity:0.3;position:absolute;top:-11px;right:0.5px;content:""}#optionBar #themeChooserContainer:after{width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #fff;position:absolute;top:-10px;right:1px;content:""}#optionBar #themeChooserContainer #themeChooserTitle{font-weight:bold;color:#333}#optionBar #themeChooserContainer #themeChooserSelectContainer{margin-top:10px}#optionBar #themeChooserContainer #themeChooserPreview pre{word-wrap:break-word;white-space:pre-wrap;border:1px solid;padding:5px;box-shadow:inset 1px 1px 2px 0 #888888}#jsonpOpener,#jsonpCloser{padding:4px 0 0 8px;color:#444;margin-bottom:-6px}#jsonpCloser{margin-top:0}#formattedJson{padding-left:28px;padding-top:6px}.dObj{display:block;padding-left:20px;margin-left:-20px;position:relative}.collapsed{white-space:nowrap}.collapsed>.blockInner{display:none}.collapsed>.ellipsis:after{content:"…";font-weight:bold}.collapsed>.ellipsis{margin:0 4px;color:#888}.collapsed .dObj{display:inline}.expander{width:0;height:0;border-top:8px solid #444;border-right:6px solid transparent;border-left:6px solid transparent;display:block;position:absolute;left:3px;top:5px;z-index:5;opacity:0.15;cursor:pointer;-webkit-transition:-webkit-transform 0.1s linear}.collapsed>.expander{-webkit-transform:rotate(-90deg)}.expander:hover{opacity:0.35}.expander:active{opacity:0.5}.collapsed .dObj .expander{display:none}.blockInner{display:block;padding-left:24px;border-left:1px dotted #bbb;margin-left:2px}#formattedJson,#jsonpOpener,#jsonpCloser{color:#333;font:13px/18px monospace}#formattedJson{color:#444}.b{font-weight:bold}.s{color:#0B7500;word-wrap:break-word}a:link,a:visited{text-decoration:none;color:inherit}a:hover,a:active{text-decoration:underline;color:#050}.bl,.nl,.n{font-weight:bold;color:#1A01CC}.key{color:#000}#formattingMsg{font:13px "Lucida Grande", "Segoe UI", "Tahoma";padding:10px 0 0 8px;margin:0;color:#333}#formattingMsg .loader{position:relative;top:5px;border:4px solid #f3f3f3;border-radius:50%;border-top:4px solid #3498db;width:12px;height:12px;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;display:inline-block}#status{position:fixed;left:0;bottom:0;min-width:628px;border:1px solid #333;border-bottom-width:0;border-left-width:0;border-top-right-radius:4px;height:16px;padding:2px 7px 2px 4px;font-size:15px;opacity:0;background-color:#444;color:#fff;transition:opacity .2s ease-out;-webkit-transition:opacity .2s ease-out;user-select:none;-webkit-user-select:none}#status:not(:empty){opacity:1}[hidden]{display:none !important}span{white-space:pre-wrap}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}body[data-theme="default"],#themeChooserPreview[data-theme="default"]{background-color:#fff}body[data-theme="default"] .expander,#themeChooserPreview[data-theme="default"] .expander{border-top:8px solid #444}body[data-theme="default"] #formattedJson,body[data-theme="default"] #jsonpOpener,body[data-theme="default"] #jsonpCloser,#themeChooserPreview[data-theme="default"] #formattedJson,#themeChooserPreview[data-theme="default"] #jsonpOpener,#themeChooserPreview[data-theme="default"] #jsonpCloser{color:#333}body[data-theme="default"] #formattedJson,#themeChooserPreview[data-theme="default"] #formattedJson{color:#444}body[data-theme="default"] .objProp,#themeChooserPreview[data-theme="default"] .objProp{color:#000}body[data-theme="default"] .s,#themeChooserPreview[data-theme="default"] .s{color:#0B7500}body[data-theme="default"] .key,#themeChooserPreview[data-theme="default"] .key{color:#000}body[data-theme="default"] pre,#themeChooserPreview[data-theme="default"] pre{color:#444}body[data-theme="default"] a:hover,body[data-theme="default"] a:active,#themeChooserPreview[data-theme="default"] a:hover,#themeChooserPreview[data-theme="default"] a:active{color:#050}body[data-theme="default"] .bl,body[data-theme="default"] .nl,body[data-theme="default"] .n,#themeChooserPreview[data-theme="default"] .bl,#themeChooserPreview[data-theme="default"] .nl,#themeChooserPreview[data-theme="default"] .n{color:#1A01CC}body[data-theme="default"] #status,#themeChooserPreview[data-theme="default"] #status{border-color:#333;background-color:#444;color:#fff}body[data-theme="monokai"],#themeChooserPreview[data-theme="monokai"]{background-color:#272822}body[data-theme="monokai"] .expander,#themeChooserPreview[data-theme="monokai"] .expander{border-top:8px solid #fffff9}body[data-theme="monokai"] #formattedJson,body[data-theme="monokai"] #jsonpOpener,body[data-theme="monokai"] #jsonpCloser,#themeChooserPreview[data-theme="monokai"] #formattedJson,#themeChooserPreview[data-theme="monokai"] #jsonpOpener,#themeChooserPreview[data-theme="monokai"] #jsonpCloser{color:#fff}body[data-theme="monokai"] #formattedJson,#themeChooserPreview[data-theme="monokai"] #formattedJson{color:#fffff9}body[data-theme="monokai"] .objProp,#themeChooserPreview[data-theme="monokai"] .objProp{color:#F92672}body[data-theme="monokai"] .s,#themeChooserPreview[data-theme="monokai"] .s{color:#a6e22e}body[data-theme="monokai"] .key,#themeChooserPreview[data-theme="monokai"] .key{color:#F92672}body[data-theme="monokai"] pre,#themeChooserPreview[data-theme="monokai"] pre{color:#fffff9}body[data-theme="monokai"] a:hover,body[data-theme="monokai"] a:active,#themeChooserPreview[data-theme="monokai"] a:hover,#themeChooserPreview[data-theme="monokai"] a:active{color:#8ac21b}body[data-theme="monokai"] .bl,body[data-theme="monokai"] .nl,body[data-theme="monokai"] .n,#themeChooserPreview[data-theme="monokai"] .bl,#themeChooserPreview[data-theme="monokai"] .nl,#themeChooserPreview[data-theme="monokai"] .n{color:#AE81FF}body[data-theme="monokai"] #status,#themeChooserPreview[data-theme="monokai"] #status{border-color:#fff;background-color:#fffff9;color:#272822}body[data-theme="xcode"],#themeChooserPreview[data-theme="xcode"]{background-color:#fff}body[data-theme="xcode"] .expander,#themeChooserPreview[data-theme="xcode"] .expander{border-top:8px solid #bdaddd}body[data-theme="xcode"] #formattedJson,body[data-theme="xcode"] #jsonpOpener,body[data-theme="xcode"] #jsonpCloser,#themeChooserPreview[data-theme="xcode"] #formattedJson,#themeChooserPreview[data-theme="xcode"] #jsonpOpener,#themeChooserPreview[data-theme="xcode"] #jsonpCloser{color:#9589b0}body[data-theme="xcode"] #formattedJson,#themeChooserPreview[data-theme="xcode"] #formattedJson{color:#bdaddd}body[data-theme="xcode"] .objProp,#themeChooserPreview[data-theme="xcode"] .objProp{color:#a195ee}body[data-theme="xcode"] .s,#themeChooserPreview[data-theme="xcode"] .s{color:#000}body[data-theme="xcode"] .key,#themeChooserPreview[data-theme="xcode"] .key{color:#a195ee}body[data-theme="xcode"] pre,#themeChooserPreview[data-theme="xcode"] pre{color:#bdaddd}body[data-theme="xcode"] a:hover,body[data-theme="xcode"] a:active,#themeChooserPreview[data-theme="xcode"] a:hover,#themeChooserPreview[data-theme="xcode"] a:active{color:#f7104d}body[data-theme="xcode"] .bl,body[data-theme="xcode"] .nl,body[data-theme="xcode"] .n,#themeChooserPreview[data-theme="xcode"] .bl,#themeChooserPreview[data-theme="xcode"] .nl,#themeChooserPreview[data-theme="xcode"] .n{color:#3b8afb}body[data-theme="xcode"] #status,#themeChooserPreview[data-theme="xcode"] #status{border-color:#9589b0;background-color:#bdaddd;color:#fff}body[data-theme="solarized"],#themeChooserPreview[data-theme="solarized"]{background-color:#002b36}body[data-theme="solarized"] .expander,#themeChooserPreview[data-theme="solarized"] .expander{border-top:8px solid #cfebee}body[data-theme="solarized"] #formattedJson,body[data-theme="solarized"] #jsonpOpener,body[data-theme="solarized"] #jsonpCloser,#themeChooserPreview[data-theme="solarized"] #formattedJson,#themeChooserPreview[data-theme="solarized"] #jsonpOpener,#themeChooserPreview[data-theme="solarized"] #jsonpCloser{color:#e2fafc}body[data-theme="solarized"] #formattedJson,#themeChooserPreview[data-theme="solarized"] #formattedJson{color:#cfebee}body[data-theme="solarized"] .objProp,#themeChooserPreview[data-theme="solarized"] .objProp{color:#839496}body[data-theme="solarized"] .s,#themeChooserPreview[data-theme="solarized"] .s{color:#2aa198}body[data-theme="solarized"] .key,#themeChooserPreview[data-theme="solarized"] .key{color:#839496}body[data-theme="solarized"] pre,#themeChooserPreview[data-theme="solarized"] pre{color:#cfebee}body[data-theme="solarized"] a:hover,body[data-theme="solarized"] a:active,#themeChooserPreview[data-theme="solarized"] a:hover,#themeChooserPreview[data-theme="solarized"] a:active{color:#268bd2}body[data-theme="solarized"] .bl,body[data-theme="solarized"] .nl,body[data-theme="solarized"] .n,#themeChooserPreview[data-theme="solarized"] .bl,#themeChooserPreview[data-theme="solarized"] .nl,#themeChooserPreview[data-theme="solarized"] .n{color:#d33682}body[data-theme="solarized"] #status,#themeChooserPreview[data-theme="solarized"] #status{border-color:#e2fafc;background-color:#cfebee;color:#002b36}body[data-theme="darkorange"],#themeChooserPreview[data-theme="darkorange"]{background-color:#000}body[data-theme="darkorange"] .expander,#themeChooserPreview[data-theme="darkorange"] .expander{border-top:8px solid #ededed}body[data-theme="darkorange"] #formattedJson,body[data-theme="darkorange"] #jsonpOpener,body[data-theme="darkorange"] #jsonpCloser,#themeChooserPreview[data-theme="darkorange"] #formattedJson,#themeChooserPreview[data-theme="darkorange"] #jsonpOpener,#themeChooserPreview[data-theme="darkorange"] #jsonpCloser{color:#fff}body[data-theme="darkorange"] #formattedJson,#themeChooserPreview[data-theme="darkorange"] #formattedJson{color:#ededed}body[data-theme="darkorange"] .objProp,#themeChooserPreview[data-theme="darkorange"] .objProp{color:orange}body[data-theme="darkorange"] .s,#themeChooserPreview[data-theme="darkorange"] .s{color:#90ee90}body[data-theme="darkorange"] .key,#themeChooserPreview[data-theme="darkorange"] .key{color:orange}body[data-theme="darkorange"] pre,#themeChooserPreview[data-theme="darkorange"] pre{color:#ededed}body[data-theme="darkorange"] a:hover,body[data-theme="darkorange"] a:active,#themeChooserPreview[data-theme="darkorange"] a:hover,#themeChooserPreview[data-theme="darkorange"] a:active{color:#1e90ff}body[data-theme="darkorange"] .bl,body[data-theme="darkorange"] .nl,body[data-theme="darkorange"] .n,#themeChooserPreview[data-theme="darkorange"] .bl,#themeChooserPreview[data-theme="darkorange"] .nl,#themeChooserPreview[data-theme="darkorange"] .n{color:#add8e6}body[data-theme="darkorange"] #status,#themeChooserPreview[data-theme="darkorange"] #status{border-color:#fff;background-color:#ededed;color:#000}body[data-theme="halewa"],#themeChooserPreview[data-theme="halewa"]{background-color:#263238}body[data-theme="halewa"] .expander,#themeChooserPreview[data-theme="halewa"] .expander{border-top:8px solid #5ee38a}body[data-theme="halewa"] #formattedJson,body[data-theme="halewa"] #jsonpOpener,body[data-theme="halewa"] #jsonpCloser,#themeChooserPreview[data-theme="halewa"] #formattedJson,#themeChooserPreview[data-theme="halewa"] #jsonpOpener,#themeChooserPreview[data-theme="halewa"] #jsonpCloser{color:#60fc9f}body[data-theme="halewa"] #formattedJson,#themeChooserPreview[data-theme="halewa"] #formattedJson{color:#5ee38a}body[data-theme="halewa"] .objProp,#themeChooserPreview[data-theme="halewa"] .objProp{color:#c792ea}body[data-theme="halewa"] .s,#themeChooserPreview[data-theme="halewa"] .s{color:#ffcb6b}body[data-theme="halewa"] .key,#themeChooserPreview[data-theme="halewa"] .key{color:#c792ea}body[data-theme="halewa"] pre,#themeChooserPreview[data-theme="halewa"] pre{color:#5ee38a}body[data-theme="halewa"] a:hover,body[data-theme="halewa"] a:active,#themeChooserPreview[data-theme="halewa"] a:hover,#themeChooserPreview[data-theme="halewa"] a:active{color:#50a3d8}body[data-theme="halewa"] .bl,body[data-theme="halewa"] .nl,body[data-theme="halewa"] .n,#themeChooserPreview[data-theme="halewa"] .bl,#themeChooserPreview[data-theme="halewa"] .nl,#themeChooserPreview[data-theme="halewa"] .n{color:#6dc2b8}body[data-theme="halewa"] #status,#themeChooserPreview[data-theme="halewa"] #status{border-color:#60fc9f;background-color:#5ee38a;color:#263238}' + 'body{-webkit-user-select:text;overflow-y:scroll !important;margin:0;position:relative;background-color:#fff}body pre#emptyPre{word-wrap:break-word;white-space:pre-wrap}pre{white-space:normal;font-size:13px;color:#444}#optionBar{-webkit-user-select:none;display:block;position:absolute;top:9px;right:17px;z-index:10}#optionBar button{-webkit-border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-webkit-user-select:none;background:-webkit-linear-gradient(#fafafa, #f4f4f4 40%, #e5e5e5);border:1px solid #aaa;color:#444;font-size:12px;margin-bottom:0;min-width:4em;padding:3px 0;position:relative;display:inline-block;width:80px;text-shadow:1px 1px rgba(255,255,255,0.3)}#optionBar button:hover{-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#fefefe, #f8f8f8 40%, #e9e9e9);border-color:#999;color:#222}#optionBar button:focus{outline:0}#optionBar #buttonFormatted:active,#optionBar #buttonPlain:active{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#f4f4f4, #efefef 40%, #dcdcdc);color:#333}#optionBar #buttonFormatted.selected,#optionBar #buttonPlain.selected{-webkit-box-shadow:inset 0 1px 5px rgba(0,0,0,0.2);background:#ebebeb -webkit-linear-gradient(#e4e4e4, #dfdfdf 40%, #dcdcdc);color:#333}#optionBar #collapseAll{margin-right:10px}#optionBar #buttonFormatted{margin-left:0;margin-right:10px;border-top-left-radius:0;border-bottom-left-radius:0}#optionBar #buttonPlain{margin-right:0;border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}#optionBar #rawFormatterContainer{display:none;margin-top:15px}#optionBar #optionChooser{display:inline-block;width:21px;height:21px;cursor:pointer;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzdBQTYwNTYxQzY2MTFFNzk4MENFNTBBMjJGODI4MDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzdBQTYwNTcxQzY2MTFFNzk4MENFNTBBMjJGODI4MDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDN0FBNjA1NDFDNjYxMUU3OTgwQ0U1MEEyMkY4MjgwOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDN0FBNjA1NTFDNjYxMUU3OTgwQ0U1MEEyMkY4MjgwOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ph3jLF8AAA/vSURBVHjalFkJkFzV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");background-size:cover;position:relative;top:7px}#optionScreen{padding:0 10px}#optionScreen #themeChooserContainer #themeChooserSelectContainer{margin-top:10px}#optionScreen #themeChooserContainer #themeChooserPreview pre{word-wrap:break-word;white-space:pre-wrap;border:1px solid;padding:5px;box-shadow:inset 1px 1px 2px 0 #888888}#jsonpOpener,#jsonpCloser{padding:4px 0 0 8px;color:#444;margin-bottom:-6px}#jsonpCloser{margin-top:0}#formattedJson{padding-left:28px;padding-top:6px}.dObj{display:block;padding-left:20px;margin-left:-20px;position:relative}.collapsed{white-space:nowrap}.collapsed>.blockInner{display:none}.collapsed>.ellipsis:after{content:"…";font-weight:bold}.collapsed>.ellipsis{margin:0 4px;color:#888}.collapsed .dObj{display:inline}.expander{width:0;height:0;border-top:8px solid #444;border-right:6px solid transparent;border-left:6px solid transparent;display:block;position:absolute;left:3px;top:5px;z-index:5;opacity:0.15;cursor:pointer;-webkit-transition:-webkit-transform 0.1s linear}.collapsed>.expander{-webkit-transform:rotate(-90deg)}.expander:hover{opacity:0.35}.expander:active{opacity:0.5}.collapsed .dObj .expander{display:none}.blockInner{display:block;padding-left:24px;border-left:1px dotted #bbb;margin-left:2px}#formattedJson,#jsonpOpener,#jsonpCloser{color:#333;font:13px/18px monospace}#formattedJson{color:#444}.b{font-weight:bold}.s{color:#0B7500;word-wrap:break-word}a:link,a:visited{text-decoration:none;color:inherit}a:hover,a:active{text-decoration:underline;color:#050}.bl,.nl,.n{font-weight:bold;color:#1A01CC}.key{color:#000}#formattingMsg{font:13px "Lucida Grande", "Segoe UI", "Tahoma";padding:10px 0 0 8px;margin:0;color:#333}#formattingMsg .loader{position:relative;top:5px;border:4px solid #f3f3f3;border-radius:50%;border-top:4px solid #3498db;width:12px;height:12px;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;display:inline-block}#status{position:fixed;left:0;bottom:0;min-width:628px;border:1px solid #333;border-bottom-width:0;border-left-width:0;border-top-right-radius:4px;height:16px;padding:2px 7px 2px 4px;font-size:15px;opacity:0;background-color:#444;color:#fff;transition:opacity .2s ease-out;-webkit-transition:opacity .2s ease-out;user-select:none;-webkit-user-select:none}#status:not(:empty){opacity:1}[hidden]{display:none !important}span{white-space:pre-wrap}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}body[data-theme="default"],#themeChooserPreview[data-theme="default"]{background-color:#fff}body[data-theme="default"] .expander,#themeChooserPreview[data-theme="default"] .expander{border-top:8px solid #444}body[data-theme="default"] #formattedJson,body[data-theme="default"] #jsonpOpener,body[data-theme="default"] #jsonpCloser,#themeChooserPreview[data-theme="default"] #formattedJson,#themeChooserPreview[data-theme="default"] #jsonpOpener,#themeChooserPreview[data-theme="default"] #jsonpCloser{color:#333}body[data-theme="default"] #formattedJson,#themeChooserPreview[data-theme="default"] #formattedJson{color:#444}body[data-theme="default"] .objProp,#themeChooserPreview[data-theme="default"] .objProp{color:#000}body[data-theme="default"] .s,#themeChooserPreview[data-theme="default"] .s{color:#0B7500}body[data-theme="default"] .key,#themeChooserPreview[data-theme="default"] .key{color:#000}body[data-theme="default"] pre,#themeChooserPreview[data-theme="default"] pre{color:#444}body[data-theme="default"] a:hover,body[data-theme="default"] a:active,#themeChooserPreview[data-theme="default"] a:hover,#themeChooserPreview[data-theme="default"] a:active{color:#050}body[data-theme="default"] .bl,body[data-theme="default"] .nl,body[data-theme="default"] .n,#themeChooserPreview[data-theme="default"] .bl,#themeChooserPreview[data-theme="default"] .nl,#themeChooserPreview[data-theme="default"] .n{color:#1A01CC}body[data-theme="default"] #formattingMsg,#themeChooserPreview[data-theme="default"] #formattingMsg{color:#333}body[data-theme="default"] #status,#themeChooserPreview[data-theme="default"] #status{border-color:#333;background-color:#444;color:#fff}body[data-theme="monokai"],#themeChooserPreview[data-theme="monokai"]{background-color:#272822}body[data-theme="monokai"] .expander,#themeChooserPreview[data-theme="monokai"] .expander{border-top:8px solid #fffff9}body[data-theme="monokai"] #formattedJson,body[data-theme="monokai"] #jsonpOpener,body[data-theme="monokai"] #jsonpCloser,#themeChooserPreview[data-theme="monokai"] #formattedJson,#themeChooserPreview[data-theme="monokai"] #jsonpOpener,#themeChooserPreview[data-theme="monokai"] #jsonpCloser{color:#fff}body[data-theme="monokai"] #formattedJson,#themeChooserPreview[data-theme="monokai"] #formattedJson{color:#fffff9}body[data-theme="monokai"] .objProp,#themeChooserPreview[data-theme="monokai"] .objProp{color:#F92672}body[data-theme="monokai"] .s,#themeChooserPreview[data-theme="monokai"] .s{color:#a6e22e}body[data-theme="monokai"] .key,#themeChooserPreview[data-theme="monokai"] .key{color:#F92672}body[data-theme="monokai"] pre,#themeChooserPreview[data-theme="monokai"] pre{color:#fffff9}body[data-theme="monokai"] a:hover,body[data-theme="monokai"] a:active,#themeChooserPreview[data-theme="monokai"] a:hover,#themeChooserPreview[data-theme="monokai"] a:active{color:#8ac21b}body[data-theme="monokai"] .bl,body[data-theme="monokai"] .nl,body[data-theme="monokai"] .n,#themeChooserPreview[data-theme="monokai"] .bl,#themeChooserPreview[data-theme="monokai"] .nl,#themeChooserPreview[data-theme="monokai"] .n{color:#AE81FF}body[data-theme="monokai"] #formattingMsg,#themeChooserPreview[data-theme="monokai"] #formattingMsg{color:#fff}body[data-theme="monokai"] #status,#themeChooserPreview[data-theme="monokai"] #status{border-color:#fff;background-color:#fffff9;color:#272822}body[data-theme="xcode"],#themeChooserPreview[data-theme="xcode"]{background-color:#fff}body[data-theme="xcode"] .expander,#themeChooserPreview[data-theme="xcode"] .expander{border-top:8px solid #bdaddd}body[data-theme="xcode"] #formattedJson,body[data-theme="xcode"] #jsonpOpener,body[data-theme="xcode"] #jsonpCloser,#themeChooserPreview[data-theme="xcode"] #formattedJson,#themeChooserPreview[data-theme="xcode"] #jsonpOpener,#themeChooserPreview[data-theme="xcode"] #jsonpCloser{color:#9589b0}body[data-theme="xcode"] #formattedJson,#themeChooserPreview[data-theme="xcode"] #formattedJson{color:#bdaddd}body[data-theme="xcode"] .objProp,#themeChooserPreview[data-theme="xcode"] .objProp{color:#a195ee}body[data-theme="xcode"] .s,#themeChooserPreview[data-theme="xcode"] .s{color:#000}body[data-theme="xcode"] .key,#themeChooserPreview[data-theme="xcode"] .key{color:#a195ee}body[data-theme="xcode"] pre,#themeChooserPreview[data-theme="xcode"] pre{color:#bdaddd}body[data-theme="xcode"] a:hover,body[data-theme="xcode"] a:active,#themeChooserPreview[data-theme="xcode"] a:hover,#themeChooserPreview[data-theme="xcode"] a:active{color:#f7104d}body[data-theme="xcode"] .bl,body[data-theme="xcode"] .nl,body[data-theme="xcode"] .n,#themeChooserPreview[data-theme="xcode"] .bl,#themeChooserPreview[data-theme="xcode"] .nl,#themeChooserPreview[data-theme="xcode"] .n{color:#3b8afb}body[data-theme="xcode"] #formattingMsg,#themeChooserPreview[data-theme="xcode"] #formattingMsg{color:#9589b0}body[data-theme="xcode"] #status,#themeChooserPreview[data-theme="xcode"] #status{border-color:#9589b0;background-color:#bdaddd;color:#fff}body[data-theme="solarized"],#themeChooserPreview[data-theme="solarized"]{background-color:#002b36}body[data-theme="solarized"] .expander,#themeChooserPreview[data-theme="solarized"] .expander{border-top:8px solid #cfebee}body[data-theme="solarized"] #formattedJson,body[data-theme="solarized"] #jsonpOpener,body[data-theme="solarized"] #jsonpCloser,#themeChooserPreview[data-theme="solarized"] #formattedJson,#themeChooserPreview[data-theme="solarized"] #jsonpOpener,#themeChooserPreview[data-theme="solarized"] #jsonpCloser{color:#e2fafc}body[data-theme="solarized"] #formattedJson,#themeChooserPreview[data-theme="solarized"] #formattedJson{color:#cfebee}body[data-theme="solarized"] .objProp,#themeChooserPreview[data-theme="solarized"] .objProp{color:#839496}body[data-theme="solarized"] .s,#themeChooserPreview[data-theme="solarized"] .s{color:#2aa198}body[data-theme="solarized"] .key,#themeChooserPreview[data-theme="solarized"] .key{color:#839496}body[data-theme="solarized"] pre,#themeChooserPreview[data-theme="solarized"] pre{color:#cfebee}body[data-theme="solarized"] a:hover,body[data-theme="solarized"] a:active,#themeChooserPreview[data-theme="solarized"] a:hover,#themeChooserPreview[data-theme="solarized"] a:active{color:#268bd2}body[data-theme="solarized"] .bl,body[data-theme="solarized"] .nl,body[data-theme="solarized"] .n,#themeChooserPreview[data-theme="solarized"] .bl,#themeChooserPreview[data-theme="solarized"] .nl,#themeChooserPreview[data-theme="solarized"] .n{color:#d33682}body[data-theme="solarized"] #formattingMsg,#themeChooserPreview[data-theme="solarized"] #formattingMsg{color:#e2fafc}body[data-theme="solarized"] #status,#themeChooserPreview[data-theme="solarized"] #status{border-color:#e2fafc;background-color:#cfebee;color:#002b36}body[data-theme="darkorange"],#themeChooserPreview[data-theme="darkorange"]{background-color:#000}body[data-theme="darkorange"] .expander,#themeChooserPreview[data-theme="darkorange"] .expander{border-top:8px solid #ededed}body[data-theme="darkorange"] #formattedJson,body[data-theme="darkorange"] #jsonpOpener,body[data-theme="darkorange"] #jsonpCloser,#themeChooserPreview[data-theme="darkorange"] #formattedJson,#themeChooserPreview[data-theme="darkorange"] #jsonpOpener,#themeChooserPreview[data-theme="darkorange"] #jsonpCloser{color:#fff}body[data-theme="darkorange"] #formattedJson,#themeChooserPreview[data-theme="darkorange"] #formattedJson{color:#ededed}body[data-theme="darkorange"] .objProp,#themeChooserPreview[data-theme="darkorange"] .objProp{color:orange}body[data-theme="darkorange"] .s,#themeChooserPreview[data-theme="darkorange"] .s{color:#90ee90}body[data-theme="darkorange"] .key,#themeChooserPreview[data-theme="darkorange"] .key{color:orange}body[data-theme="darkorange"] pre,#themeChooserPreview[data-theme="darkorange"] pre{color:#ededed}body[data-theme="darkorange"] a:hover,body[data-theme="darkorange"] a:active,#themeChooserPreview[data-theme="darkorange"] a:hover,#themeChooserPreview[data-theme="darkorange"] a:active{color:#1e90ff}body[data-theme="darkorange"] .bl,body[data-theme="darkorange"] .nl,body[data-theme="darkorange"] .n,#themeChooserPreview[data-theme="darkorange"] .bl,#themeChooserPreview[data-theme="darkorange"] .nl,#themeChooserPreview[data-theme="darkorange"] .n{color:#add8e6}body[data-theme="darkorange"] #formattingMsg,#themeChooserPreview[data-theme="darkorange"] #formattingMsg{color:#fff}body[data-theme="darkorange"] #status,#themeChooserPreview[data-theme="darkorange"] #status{border-color:#fff;background-color:#ededed;color:#000}body[data-theme="halewa"],#themeChooserPreview[data-theme="halewa"]{background-color:#263238}body[data-theme="halewa"] .expander,#themeChooserPreview[data-theme="halewa"] .expander{border-top:8px solid #5ee38a}body[data-theme="halewa"] #formattedJson,body[data-theme="halewa"] #jsonpOpener,body[data-theme="halewa"] #jsonpCloser,#themeChooserPreview[data-theme="halewa"] #formattedJson,#themeChooserPreview[data-theme="halewa"] #jsonpOpener,#themeChooserPreview[data-theme="halewa"] #jsonpCloser{color:#60fc9f}body[data-theme="halewa"] #formattedJson,#themeChooserPreview[data-theme="halewa"] #formattedJson{color:#5ee38a}body[data-theme="halewa"] .objProp,#themeChooserPreview[data-theme="halewa"] .objProp{color:#c792ea}body[data-theme="halewa"] .s,#themeChooserPreview[data-theme="halewa"] .s{color:#ffcb6b}body[data-theme="halewa"] .key,#themeChooserPreview[data-theme="halewa"] .key{color:#c792ea}body[data-theme="halewa"] pre,#themeChooserPreview[data-theme="halewa"] pre{color:#5ee38a}body[data-theme="halewa"] a:hover,body[data-theme="halewa"] a:active,#themeChooserPreview[data-theme="halewa"] a:hover,#themeChooserPreview[data-theme="halewa"] a:active{color:#50a3d8}body[data-theme="halewa"] .bl,body[data-theme="halewa"] .nl,body[data-theme="halewa"] .n,#themeChooserPreview[data-theme="halewa"] .bl,#themeChooserPreview[data-theme="halewa"] .nl,#themeChooserPreview[data-theme="halewa"] .n{color:#6dc2b8}body[data-theme="halewa"] #formattingMsg,#themeChooserPreview[data-theme="halewa"] #formattingMsg{color:#60fc9f}body[data-theme="halewa"] #status,#themeChooserPreview[data-theme="halewa"] #status{border-color:#60fc9f;background-color:#5ee38a;color:#263238}' ); } @@ -100,207 +96,172 @@ formattingMsg.hidden = false; }, 250); - if(!firstLoad){ - break; - } - // statusBar - var statusElement = document.createElement('div'); - statusElement.id = "status"; - document.body.appendChild(statusElement); + if (!document.getElementById("status")){ + var statusElement = document.createElement('div'); + statusElement.id = "status"; + document.body.appendChild(statusElement); + } // Create collapse/expand all button - var buttonExpand = document.createElement('button'); - buttonExpand.id = 'expandAll'; - buttonExpand.innerText = 'Expand All'; - buttonExpand.addEventListener( - 'click', - function () { - expand([document.getElementsByClassName('expander')[0].parentNode], true); - } - ); - - var buttonCollapse = document.createElement('button'); - buttonCollapse.id = 'collapseAll'; - buttonCollapse.innerText = 'Collapse All'; - buttonCollapse.addEventListener( - 'click', - function () { - collapse([document.getElementsByClassName('expander')[0].parentNode], true); - } - ); + if (!document.getElementById("optionBar")) { + var buttonExpand = document.createElement('button'); + buttonExpand.id = 'expandAll'; + buttonExpand.innerText = 'Expand All'; + buttonExpand.addEventListener( + 'click', + function () { + expand([document.getElementsByClassName('expander')[0].parentNode], true); + } + ); - // Create minify/beautify buttons - var minifyRaw = document.createElement('button'); - minifyRaw.id = 'minifyRaw'; - minifyRaw.innerText = 'Minify'; - minifyRaw.addEventListener( - 'click', - function () { - pre.innerText = JSON.stringify(djson); - } - ); + var buttonCollapse = document.createElement('button'); + buttonCollapse.id = 'collapseAll'; + buttonCollapse.innerText = 'Collapse All'; + buttonCollapse.addEventListener( + 'click', + function () { + collapse([document.getElementsByClassName('expander')[0].parentNode], true); + } + ); - var beautifyRaw = document.createElement('button'); - beautifyRaw.id = 'beutifyRaw'; - beautifyRaw.innerText = 'Beautify'; - beautifyRaw.addEventListener( - 'click', - function () { - pre.innerText = JSON.stringify(djson, undefined, 4); - } - ); - var rawFormatterContainer = document.createElement('div'); - rawFormatterContainer.id = 'rawFormatterContainer'; - rawFormatterContainer.appendChild(minifyRaw); - rawFormatterContainer.appendChild(beautifyRaw); - - // Create toggleFormat button - var buttonPlain = document.createElement('button'); - var buttonFormatted = document.createElement('button'); - buttonPlain.id = 'buttonPlain'; - buttonPlain.innerText = 'Raw'; - buttonFormatted.id = 'buttonFormatted'; - buttonFormatted.innerText = 'Parsed'; - buttonFormatted.classList.add('selected'); - - var plainOn = false; - buttonPlain.addEventListener( - 'click', - function () { - // When plain button clicked... - if (!plainOn) { - plainOn = true; - pre.hidden = false; - djsonContent.hidden = true; - - buttonFormatted.classList.remove('selected'); - buttonPlain.classList.add('selected'); - buttonExpand.style.display = 'none'; - buttonCollapse.style.display = 'none'; - rawFormatterContainer.style.display = 'block'; - statusElement.style.opacity = 0; + // Create minify/beautify buttons + var minifyRaw = document.createElement('button'); + minifyRaw.id = 'minifyRaw'; + minifyRaw.innerText = 'Minify'; + minifyRaw.addEventListener( + 'click', + function () { + pre.innerText = JSON.stringify(djson); } - }, - false - ); + ); - buttonFormatted.addEventListener( - 'click', - function () { - // When formatted button clicked... - if (plainOn) { - plainOn = false; - pre.hidden = true; - djsonContent.hidden = false; - - buttonFormatted.classList.add('selected'); - buttonPlain.classList.remove('selected'); - buttonExpand.style.display = 'inline-block'; - buttonCollapse.style.display = 'inline-block'; - rawFormatterContainer.style.display = 'none'; - statusElement.style.opacity = 1; + var beautifyRaw = document.createElement('button'); + beautifyRaw.id = 'beutifyRaw'; + beautifyRaw.innerText = 'Beautify'; + beautifyRaw.addEventListener( + 'click', + function () { + pre.innerText = JSON.stringify(djson, undefined, 4); } - }, - false - ); + ); + var rawFormatterContainer = document.createElement('div'); + rawFormatterContainer.id = 'rawFormatterContainer'; + rawFormatterContainer.appendChild(minifyRaw); + rawFormatterContainer.appendChild(beautifyRaw); + + // Create toggleFormat button + var buttonPlain = document.createElement('button'); + var buttonFormatted = document.createElement('button'); + buttonPlain.id = 'buttonPlain'; + buttonPlain.innerText = 'Raw'; + buttonFormatted.id = 'buttonFormatted'; + buttonFormatted.innerText = 'Parsed'; + buttonFormatted.classList.add('selected'); + + var plainOn = false; + buttonPlain.addEventListener( + 'click', + function () { + // When plain button clicked... + if (!plainOn) { + plainOn = true; + pre.hidden = false; + djsonContent.hidden = true; + + buttonFormatted.classList.remove('selected'); + buttonPlain.classList.add('selected'); + buttonExpand.style.display = 'none'; + buttonCollapse.style.display = 'none'; + rawFormatterContainer.style.display = 'block'; + statusElement.style.opacity = 0; + } + }, + false + ); - // Create option bar - var optionBar = document.createElement('div'); - optionBar.id = 'optionBar'; - - //create theme chooser - var themeChooser = document.createElement('div'); - themeChooser.id = 'themeChooser'; - themeChooser.addEventListener('click', function () { - var isThemeChooserContainerHidden = themeChooserContainer.offsetParent === null; - themeChooserContainer.style.display = isThemeChooserContainerHidden ? 'block' : 'none'; - }); - - var themeChooserContainer = document.createElement('div'); - themeChooserContainer.id = 'themeChooserContainer'; - var themeChooserTitle = document.createElement('div'); - themeChooserTitle.id = 'themeChooserTitle'; - themeChooserTitle.innerText = 'Theme Chooser'; - themeChooserContainer.appendChild(themeChooserTitle); - var themeChooserPreview = document.createElement('div'); - themeChooserPreview.id = 'themeChooserPreview'; - var themeChooserPreviewPre = document.createElement('pre'); - themeChooserPreviewPre.innerHTML = '{
"number": 0.3,
"string": "DJSON",
"url": "https://github.com/dardesantis/DJSON-Viewer"
}'; - themeChooserPreview.appendChild(themeChooserPreviewPre); - var themeChooserSelectContainer = document.createElement('div'); - themeChooserSelectContainer.id = 'themeChooserSelectContainer'; - var themeChooserSelect = document.createElement('select'); - - supportedThemes.forEach(function (themeName) { - var option = document.createElement('option'); - option.value = themeName; - option.innerText = themeName; - if(theme && theme == themeName){ - option.selected = 'selected'; - themeChooserPreview.setAttribute('data-theme', themeName); - } - themeChooserSelect.appendChild(option); - }); - themeChooserSelect.addEventListener('change', function () { - var selectedTheme = this.options[this.selectedIndex].value; - themeChooserPreview.setAttribute('data-theme', selectedTheme); - }); - themeChooserSelectContainer.appendChild(themeChooserSelect); - themeChooserContainer.appendChild(themeChooserSelectContainer); - themeChooserContainer.appendChild(themeChooserPreview); - var themeChooserSaveButton = document.createElement('button'); - themeChooserSaveButton.type = 'button'; - themeChooserSaveButton.id = 'themeChooserSaveButton'; - themeChooserSaveButton.innerText = 'Save'; - themeChooserContainer.appendChild(themeChooserSaveButton); - - themeChooserSaveButton.addEventListener('click', function () { - var selectedTheme = themeChooserSelect.options[themeChooserSelect.selectedIndex].value; - port.postMessage({type: "SAVE THEME", theme: selectedTheme}); - document.body.setAttribute("data-theme", selectedTheme); - themeChooserContainer.style.display = 'none'; - }); - - // Put it in optionBar - optionBar.appendChild(buttonExpand); - optionBar.appendChild(buttonCollapse); - optionBar.appendChild(buttonPlain); - optionBar.appendChild(buttonFormatted); - optionBar.appendChild(themeChooser); - optionBar.appendChild(rawFormatterContainer); - optionBar.appendChild(themeChooserContainer); - - // Attach event handlers - document.addEventListener( - 'click', - generalClick, - false // No need to propogate down - ); + buttonFormatted.addEventListener( + 'click', + function () { + // When formatted button clicked... + if (plainOn) { + plainOn = false; + pre.hidden = true; + djsonContent.hidden = false; + + buttonFormatted.classList.add('selected'); + buttonPlain.classList.remove('selected'); + buttonExpand.style.display = 'inline-block'; + buttonCollapse.style.display = 'inline-block'; + rawFormatterContainer.style.display = 'none'; + statusElement.style.opacity = 1; + } + }, + false + ); - // Put option bar in DOM - document.body.insertBefore(optionBar, pre); + // Create option bar + var optionBar = document.createElement('div'); + optionBar.id = 'optionBar'; + + //create option icon + var optionChooser = document.createElement('div'); + optionChooser.id = 'optionChooser'; + optionChooser.addEventListener('click', function () { + port.postMessage({type: "OPEN OPTION TAB"}); + }); + + // Put it in optionBar + optionBar.appendChild(buttonExpand); + optionBar.appendChild(buttonCollapse); + optionBar.appendChild(buttonPlain); + optionBar.appendChild(buttonFormatted); + optionBar.appendChild(optionChooser); + optionBar.appendChild(rawFormatterContainer); + + // Attach event handlers + document.addEventListener( + 'click', + generalClick, + false // No need to propogate down + ); - document.addEventListener('keyup', function (e) { - if (e.keyCode === 37 && typeof buttonPlain !== 'undefined') { - buttonPlain.click(); - } - else if (e.keyCode === 39 && typeof buttonFormatted !== 'undefined') { - buttonFormatted.click(); - } - }); + // Put option bar in DOM + document.body.insertBefore(optionBar, pre); + + document.addEventListener('keyup', function (e) { + if (e.keyCode === 37 && typeof buttonPlain !== 'undefined') { + buttonPlain.click(); + } + else if (e.keyCode === 39 && typeof buttonFormatted !== 'undefined') { + buttonFormatted.click(); + } + }); + } break; case 'FORMATTED' : // Insert HTML content - djsonContent.innerHTML = msg[1]; + var localStorageOptions = JSON.parse(msg[3]); + if( localStorageOptions && localStorageOptions.hasOwnProperty("startCollapsed")) { + var template = document.createElement('template'); + template.innerHTML = msg[1]; + var jsonFormatted = template.content.firstChild; + var expanders = jsonFormatted.getElementsByClassName('expander'); + if(expanders.length > 0) { + collapse([jsonFormatted.getElementsByClassName('expander')[0].parentNode], true); + } + djsonContent.innerHTML = ''; + djsonContent.appendChild(jsonFormatted); + } else { + djsonContent.innerHTML = msg[1]; + } djsonContent.removeEventListener('mouseover', onMouseMove, false); djsonContent.addEventListener('mouseover', onMouseMove, false); document.body.removeEventListener('contextmenu', onContextMenu, false); document.body.addEventListener('contextmenu', onContextMenu, false); - onContextMenu(); // Export parsed JSON for easy access in console setTimeout(function () { @@ -357,8 +318,7 @@ } element = element.parentNode.parentNode; } while (element.classList.contains("dObj") && !element.classList.contains("rootDObj")); - if (str.charAt(0) == '.') - str = str.substring(1); + str = "$"+str; statusElement.innerText = str; return; } @@ -368,8 +328,9 @@ function onContextMenu() { var status = document.getElementById("status"); - // for now commented (we don't to add new permissions just for this) - //port.postMessage({type: "COPY PATH", path: status.innerText}); + if(status && status.innerText.length > 0){ + port.postMessage({type: "COPY PATH", path: status.innerText}); + } } } diff --git a/extension/js/options.js b/extension/js/options.js new file mode 100644 index 0000000..72455ea --- /dev/null +++ b/extension/js/options.js @@ -0,0 +1,81 @@ +/** @license + DJSON Viewer and Formatter | MIT License + Copyright 2017 Dario De Santis + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + + */ + +(function () { + + "use strict"; + + // theme + var supportedThemes = ["default", "monokai", "xcode", "solarized", "darkorange", "halewa"]; + var theme = localStorage.getItem("theme"); + var themeChooserSelect = document.getElementById("themeChooserSelectContainer"); + themeChooserSelect= themeChooserSelect.firstElementChild; + supportedThemes.forEach(function (themeName) { + var option = document.createElement('option'); + option.value = themeName; + option.innerText = themeName; + if(theme && theme == themeName){ + option.selected = 'selected'; + document.getElementById("themeChooserPreview").setAttribute('data-theme', themeName); + } + themeChooserSelect.appendChild(option); + }); + + themeChooserSelect.addEventListener('change', function () { + var selectedTheme = this.options[this.selectedIndex].value; + themeChooserPreview.setAttribute('data-theme', selectedTheme); + localStorage.setItem("theme", selectedTheme); + }); + + + // context menu + var contextMenuCheckbox = document.getElementById("contextMenuCheckbox"); + var contextMenu = localStorage.getItem("contextMenu"); + if(contextMenu && contextMenu === "true"){ + contextMenuCheckbox.checked = true; + } + contextMenuCheckbox.addEventListener('click', function () { + var port = chrome.extension.connect({name: 'djson'}); + if(contextMenuCheckbox.checked) { + port.postMessage({type: "ENABLE CONTEXT MENU"}); + } else { + port.postMessage({type: "DISABLE CONTEXT MENU"}); + } + }); + + // start JSON collapsed + var startCollapsedCheckbox = document.getElementById("startCollapsedCheckbox"); + var startCollapsed = localStorage.getItem("startCollapsed"); + if(startCollapsed && startCollapsed === "true"){ + startCollapsedCheckbox.checked = true; + } + startCollapsedCheckbox.addEventListener('click', function () { + if(startCollapsedCheckbox.checked) { + localStorage.setItem("startCollapsed", true); + } else { + localStorage.removeItem("startCollapsed") + } + }); + +})(); \ No newline at end of file diff --git a/extension/manifest.json b/extension/manifest.json index 51037a9..e9c4566 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -1,7 +1,7 @@ { - "name": "DJSON Viewer and Formatter. JSON", + "name": "DJSON. JSON Viewer & Formatter", "short_name": "DJSON Viewer", - "version": "0.3.1", + "version": "0.4.0", "manifest_version": 2, "description": "Extension to format and view JSON, from Web, Input or File.", "homepage_url": "https://github.com/dardesantis/DJSON-Viewer", @@ -26,5 +26,6 @@ "content_scripts": [ { "matches": [""], "js": ["js/content.js"], "run_at": "document_start" } ], - "permissions":["", "clipboardWrite", "tabs"] + "permissions":["", "clipboardWrite", "tabs"], + "optional_permissions": ["contextMenus"] } \ No newline at end of file diff --git a/extension/options.html b/extension/options.html new file mode 100644 index 0000000..eebaa3c --- /dev/null +++ b/extension/options.html @@ -0,0 +1,29 @@ + + + + + Options + + + +

Options

+
+

Theme

+
+
+ + (It will be applied only after the reload of the json) +
+
+
{
"number": 0.4,
"string": "DJSON",
"url": "https://github.com/dardesantis/DJSON-Viewer"
}
+
+
+ +

Preferences

+ Enable Context Menu +
+ Load JSON as Collapsed (slower) + + + + \ No newline at end of file diff --git a/sass/_theme-darkorange.scss b/sass/_theme-darkorange.scss index 0963f9b..9c0f75c 100644 --- a/sass/_theme-darkorange.scss +++ b/sass/_theme-darkorange.scss @@ -37,6 +37,10 @@ body[data-theme="darkorange"], #themeChooserPreview[data-theme="darkorange"] { color: $darkorange-color-null; } + #formattingMsg { + color: $darkorange-color-text-dark; + } + #status { border-color: $darkorange-color-text-dark; background-color: $darkorange-color-text; diff --git a/sass/_theme-default.scss b/sass/_theme-default.scss index 693c9ed..4ba7953 100644 --- a/sass/_theme-default.scss +++ b/sass/_theme-default.scss @@ -37,6 +37,10 @@ body[data-theme="default"], #themeChooserPreview[data-theme="default"] { color: $default-color-null; } + #formattingMsg { + color: $default-color-text-dark; + } + #status { border-color: $default-color-text-dark; background-color: $default-color-text; diff --git a/sass/_theme-halewa.scss b/sass/_theme-halewa.scss index f014983..4ee2f9e 100644 --- a/sass/_theme-halewa.scss +++ b/sass/_theme-halewa.scss @@ -37,6 +37,10 @@ body[data-theme="halewa"], #themeChooserPreview[data-theme="halewa"] { color: $halewa-color-null; } + #formattingMsg { + color: $halewa-color-text-dark; + } + #status { border-color: $halewa-color-text-dark; background-color: $halewa-color-text; diff --git a/sass/_theme-monokai.scss b/sass/_theme-monokai.scss index 2c7d004..d52f29c 100644 --- a/sass/_theme-monokai.scss +++ b/sass/_theme-monokai.scss @@ -37,6 +37,10 @@ body[data-theme="monokai"], #themeChooserPreview[data-theme="monokai"] { color: $monokai-color-null; } + #formattingMsg { + color: $monokai-color-text-dark; + } + #status { border-color: $monokai-color-text-dark; background-color: $monokai-color-text; diff --git a/sass/_theme-solarized.scss b/sass/_theme-solarized.scss index 0733742..79938b8 100644 --- a/sass/_theme-solarized.scss +++ b/sass/_theme-solarized.scss @@ -37,6 +37,10 @@ body[data-theme="solarized"], #themeChooserPreview[data-theme="solarized"] { color: $solarized-color-null; } + #formattingMsg { + color: $solarized-color-text-dark; + } + #status { border-color: $solarized-color-text-dark; background-color: $solarized-color-text; diff --git a/sass/_theme-xcode.scss b/sass/_theme-xcode.scss index c42903c..34d88e5 100644 --- a/sass/_theme-xcode.scss +++ b/sass/_theme-xcode.scss @@ -37,6 +37,10 @@ body[data-theme="xcode"], #themeChooserPreview[data-theme="xcode"] { color: $xcode-color-null; } + #formattingMsg { + color: $xcode-color-text-dark; + } + #status { border-color: $xcode-color-text-dark; background-color: $xcode-color-text; diff --git a/sass/content.scss b/sass/content.scss index 0dbc27c..5b464c9 100644 --- a/sass/content.scss +++ b/sass/content.scss @@ -100,58 +100,22 @@ pre { margin-top: 15px; } - #themeChooser { + #optionChooser { display: inline-block; width: 21px; height: 21px; cursor: pointer; - background-image: url('data:image/png;base64,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'); + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzdBQTYwNTYxQzY2MTFFNzk4MENFNTBBMjJGODI4MDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzdBQTYwNTcxQzY2MTFFNzk4MENFNTBBMjJGODI4MDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDN0FBNjA1NDFDNjYxMUU3OTgwQ0U1MEEyMkY4MjgwOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDN0FBNjA1NTFDNjYxMUU3OTgwQ0U1MEEyMkY4MjgwOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ph3jLF8AAA/vSURBVHjalFkJkFzV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'); background-size: cover; position: relative; top: 7px; } +} - #themeChooserContainer { - display: none; - position: absolute; - top: 40px; - right: 0; - width: 440px; - background: $color-background; - box-shadow: 1px 2px 9px 1px #888888; - padding: 10px; - box-sizing: border-box; - - &:before { - width: 0; - height: 0; - border-left: 11px solid transparent; - border-right: 11px solid transparent; - border-bottom: 11px solid #888888; - opacity: 0.3; - position: absolute; - top: -11px; - right: 0.5px; - content: ""; - } - - &:after { - width: 0; - height: 0; - border-left: 10px solid transparent; - border-right: 10px solid transparent; - border-bottom: 10px solid $color-background; - position: absolute; - top: -10px; - right: 1px; - content: ""; - } - - #themeChooserTitle { - font-weight: bold; - color: $color-text-dark; - } +#optionScreen { + padding: 0 10px; + #themeChooserContainer { #themeChooserSelectContainer { margin-top: 10px; }