├── .gitattributes ├── .github └── workflows │ ├── build.yml │ └── readme.md ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── Our.Umbraco.Matryoshka.sln ├── README.md ├── docs ├── icon.png ├── separator.png └── tabs.png ├── gulpfile.js ├── package-lock.json ├── package.json ├── paths.json └── src ├── Our.Umbraco.Matryoshka.sln ├── Our.Umbraco.Matryoshka ├── App_Plugins │ └── Our.Umbraco.Matryoshka │ │ ├── content-interceptor.js │ │ ├── directives │ │ ├── matryoshka-tabbed-content.directive.js │ │ ├── matryoshka-tabbed-content.html │ │ └── matryoshka-val-tab.directive.js │ │ ├── group-separator.css │ │ ├── group-separator.html │ │ ├── groupseparator.controller.js │ │ ├── package.manifest │ │ └── tabbed-content.css ├── Our.Umbraco.Matryoshka.csproj └── icon.png └── package.xml /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | # Builds a library, and packages it up. 2 | # 3 | # Works on a release/version tag 4 | # e.g release/1.0.2 will build v1.0.2 5 | # 6 | 7 | name: Build and Package 8 | 9 | env: 10 | OUTPUT: ./Output 11 | LIBRARY_FOLDER: ./src/Our.Umbraco.Matryoshka 12 | CONFIG: release 13 | 14 | on: 15 | release: 16 | types: [published] 17 | 18 | jobs: 19 | build: 20 | runs-on: windows-latest 21 | 22 | steps: 23 | - name: Get Version 24 | id: get_version 25 | run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/release\//} 26 | shell: bash 27 | 28 | - name: checkout 29 | uses: actions/checkout@v2 30 | 31 | - name: Setup NuGet.exe for use with actions 32 | uses: NuGet/setup-nuget@v1.0.5 33 | 34 | - name: Setup .net core 35 | uses: actions/setup-dotnet@v1.4.0 36 | 37 | - name: Setup UmbPack 38 | run: dotnet tool install Umbraco.Tools.Packages --global 39 | 40 | - name: Setup MSBuild 41 | uses: microsoft/setup-msbuild@v1 42 | 43 | - name: Restore Project 44 | run: dotnet restore ./src 45 | 46 | - name: Build Project 47 | run: msbuild ./src -p:Configuration=${{ env.CONFIG }} 48 | 49 | - name: Create NuGet package file 50 | run: dotnet pack ${{ env.LIBRARY_FOLDER }} -c ${{ env.CONFIG }} --no-build --include-symbols -o ${{ env.OUTPUT }} /p:version=${{ steps.get_version.outputs.VERSION }} 51 | 52 | - name: Create Umbraco package file 53 | run: UmbPack pack ./package.xml -o ${{ env.OUTPUT }} -v ${{ steps.get_version.outputs.VERSION }} 54 | 55 | - name: upload-artifacts 56 | uses: actions/upload-artifact@v2 57 | with: 58 | name: Build-Results-${{ steps.get_version.outputs.VERSION }} 59 | path: ${{ env.OUTPUT }}/**/* 60 | 61 | - name: Push to NuGet 62 | run: dotnet nuget push ${{ env.OUTPUT }}/Our.Umbraco.Matryoshka.${{ steps.get_version.outputs.VERSION }}.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json 63 | 64 | - name: Push to Our 65 | if: contains(steps.get_version.outputs.VERSION, '-') != true 66 | run: UmbPack push ${{ env.OUTPUT }}/Our.Umbraco.Matryoshka_${{ steps.get_version.outputs.VERSION }}.zip -k ${{ secrets.OUR_API_KEY }} -a * 67 | -------------------------------------------------------------------------------- /.github/workflows/readme.md: -------------------------------------------------------------------------------- 1 | # Github Workflow Actions 2 | 3 | This project contains some basic github actions that will allow 4 | you to automate the build and deployment of your projects. 5 | 6 | ## build.yml 7 | This script will build and package your project, based on a 8 | `release` tag. 9 | 10 | if you tag a commit with `release/(version)` (where version is the version you want e.g `release/1.0.0` ) then the build will produce a NuGet and umbraco package of that version. -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # test site (seperate project) 5 | .website 6 | 7 | # Umbraco Things 8 | **/[Uu]mbraco/ 9 | **/[Uu]mbraco_[Cc]lient/ 10 | **/App_Data/ 11 | **/App_Data/[Pp]review/ 12 | **/App_Data/TEMP/ 13 | **/App_Data/NuGetBackup/ 14 | **/App_Data/Umbraco.config 15 | **/App_Data/cache/ 16 | 17 | 18 | # User-specific files 19 | *.suo 20 | *.user 21 | *.userosscache 22 | *.sln.docstates 23 | 24 | # User-specific files (MonoDevelop/Xamarin Studio) 25 | *.userprefs 26 | 27 | # Build results 28 | [Dd]ebug/ 29 | [Dd]ebugPublic/ 30 | [Rr]elease/ 31 | [Rr]eleases/ 32 | x64/ 33 | x86/ 34 | bld/ 35 | [Bb]in/ 36 | [Oo]bj/ 37 | [Ll]og/ 38 | 39 | # Visual Studio 2015 cache/options directory 40 | .vs/ 41 | # Uncomment if you have tasks that create the project's static files in wwwroot 42 | #wwwroot/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUNIT 49 | *.VisualState.xml 50 | TestResult.xml 51 | 52 | # Build Results of an ATL Project 53 | [Dd]ebugPS/ 54 | [Rr]eleasePS/ 55 | dlldata.c 56 | 57 | # DNX 58 | project.lock.json 59 | artifacts/ 60 | 61 | *_i.c 62 | *_p.c 63 | *_i.h 64 | *.ilk 65 | *.meta 66 | *.obj 67 | *.pch 68 | *.pdb 69 | *.pgc 70 | *.pgd 71 | *.rsp 72 | *.sbr 73 | *.tlb 74 | *.tli 75 | *.tlh 76 | *.tmp 77 | *.tmp_proj 78 | *.log 79 | *.vspscc 80 | *.vssscc 81 | .builds 82 | *.pidb 83 | *.svclog 84 | *.scc 85 | 86 | # Chutzpah Test files 87 | _Chutzpah* 88 | 89 | # Visual C++ cache files 90 | ipch/ 91 | *.aps 92 | *.ncb 93 | *.opendb 94 | *.opensdf 95 | *.sdf 96 | *.cachefile 97 | *.VC.db 98 | *.VC.VC.opendb 99 | 100 | # Visual Studio profiler 101 | *.psess 102 | *.vsp 103 | *.vspx 104 | *.sap 105 | 106 | # TFS 2012 Local Workspace 107 | $tf/ 108 | 109 | # Guidance Automation Toolkit 110 | *.gpState 111 | 112 | # ReSharper is a .NET coding add-in 113 | _ReSharper*/ 114 | *.[Rr]e[Ss]harper 115 | *.DotSettings.user 116 | 117 | # JustCode is a .NET coding add-in 118 | .JustCode 119 | 120 | # TeamCity is a build add-in 121 | _TeamCity* 122 | 123 | # DotCover is a Code Coverage Tool 124 | *.dotCover 125 | 126 | # NCrunch 127 | _NCrunch_* 128 | .*crunch*.local.xml 129 | nCrunchTemp_* 130 | 131 | # MightyMoose 132 | *.mm.* 133 | AutoTest.Net/ 134 | 135 | # Web workbench (sass) 136 | .sass-cache/ 137 | 138 | # Installshield output folder 139 | [Ee]xpress/ 140 | 141 | # DocProject is a documentation generator add-in 142 | DocProject/buildhelp/ 143 | DocProject/Help/*.HxT 144 | DocProject/Help/*.HxC 145 | DocProject/Help/*.hhc 146 | DocProject/Help/*.hhk 147 | DocProject/Help/*.hhp 148 | DocProject/Help/Html2 149 | DocProject/Help/html 150 | 151 | # Click-Once directory 152 | publish/ 153 | 154 | # Publish Web Output 155 | *.[Pp]ublish.xml 156 | *.azurePubxml 157 | # TODO: Comment the next line if you want to checkin your web deploy settings 158 | # but database connection strings (with potential passwords) will be unencrypted 159 | *.pubxml 160 | *.publishproj 161 | 162 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 163 | # checkin your Azure Web App publish settings, but sensitive information contained 164 | # in these scripts will be unencrypted 165 | PublishScripts/ 166 | 167 | # NuGet Packages 168 | *.nupkg 169 | # The packages folder can be ignored because of Package Restore 170 | **/packages/* 171 | # except build/, which is used as an MSBuild target. 172 | !**/packages/build/ 173 | # Uncomment if necessary however generally it will be regenerated when needed 174 | #!**/packages/repositories.config 175 | # NuGet v3's project.json files produces more ignoreable files 176 | *.nuget.props 177 | *.nuget.targets 178 | 179 | # Microsoft Azure Build Output 180 | csx/ 181 | *.build.csdef 182 | 183 | # Microsoft Azure Emulator 184 | ecf/ 185 | rcf/ 186 | 187 | # Windows Store app package directories and files 188 | AppPackages/ 189 | BundleArtifacts/ 190 | Package.StoreAssociation.xml 191 | _pkginfo.txt 192 | 193 | # Visual Studio cache files 194 | # files ending in .cache can be ignored 195 | *.[Cc]ache 196 | # but keep track of directories ending in .cache 197 | !*.[Cc]ache/ 198 | 199 | # Others 200 | ClientBin/ 201 | ~$* 202 | *~ 203 | *.dbmdl 204 | *.dbproj.schemaview 205 | *.pfx 206 | *.publishsettings 207 | node_modules/ 208 | orleans.codegen.cs 209 | 210 | # Since there are multiple workflows, uncomment next line to ignore bower_components 211 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 212 | #bower_components/ 213 | 214 | # RIA/Silverlight projects 215 | Generated_Code/ 216 | 217 | # Backup & report files from converting an old project file 218 | # to a newer Visual Studio version. Backup files are not needed, 219 | # because we have git ;-) 220 | _UpgradeReport_Files/ 221 | Backup*/ 222 | UpgradeLog*.XML 223 | UpgradeLog*.htm 224 | 225 | # SQL Server files 226 | *.mdf 227 | *.ldf 228 | 229 | # Business Intelligence projects 230 | *.rdl.data 231 | *.bim.layout 232 | *.bim_*.settings 233 | 234 | # Microsoft Fakes 235 | FakesAssemblies/ 236 | 237 | # GhostDoc plugin setting file 238 | *.GhostDoc.xml 239 | 240 | # Node.js Tools for Visual Studio 241 | .ntvs_analysis.dat 242 | 243 | # Visual Studio 6 build log 244 | *.plg 245 | 246 | # Visual Studio 6 workspace options file 247 | *.opt 248 | 249 | # Visual Studio LightSwitch build output 250 | **/*.HTMLClient/GeneratedArtifacts 251 | **/*.DesktopClient/GeneratedArtifacts 252 | **/*.DesktopClient/ModelManifest.xml 253 | **/*.Server/GeneratedArtifacts 254 | **/*.Server/ModelManifest.xml 255 | _Pvt_Extensions 256 | 257 | # Paket dependency manager 258 | .paket/paket.exe 259 | paket-files/ 260 | 261 | # FAKE - F# Make 262 | .fake/ 263 | 264 | # JetBrains Rider 265 | .idea/ 266 | *.sln.iml 267 | 268 | # ========================= 269 | # Operating System Files 270 | # ========================= 271 | 272 | # OSX 273 | # ========================= 274 | 275 | .DS_Store 276 | .AppleDouble 277 | .LSOverride 278 | 279 | # Thumbnails 280 | ._* 281 | 282 | # Files that might appear in the root of a volume 283 | .DocumentRevisions-V100 284 | .fseventsd 285 | .Spotlight-V100 286 | .TemporaryItems 287 | .Trashes 288 | .VolumeIcon.icns 289 | 290 | # Directories potentially created on remote AFP share 291 | .AppleDB 292 | .AppleDesktop 293 | Network Trash Folder 294 | Temporary Items 295 | .apdisk 296 | 297 | # Windows 298 | # ========================= 299 | 300 | # Windows image file caches 301 | Thumbs.db 302 | ehthumbs.db 303 | 304 | # Folder config file 305 | Desktop.ini 306 | 307 | # Recycle Bin used on file shares 308 | $RECYCLE.BIN/ 309 | 310 | # Windows Installer files 311 | *.cab 312 | *.msi 313 | *.msm 314 | *.msp 315 | 316 | # Windows shortcuts 317 | *.lnk 318 | 319 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## Unreleased 9 | - [Only add form-horizontal to matryoshka-tabbed-content in <8.6](https://github.com/skttl/umbraco-matryoshka/issues/46) 10 | - [Add timeout to prevent closed groups from bugging](https://github.com/skttl/umbraco-matryoshka/issues/48) 11 | 12 | ## 0.8.0 13 | - Fixes for working alongside native tabs in 8.17 14 | - This is the last version - thanks for supporting the package! 15 | 16 | ## 0.7.0 - 2020-11-24 17 | 18 | - Fix: Missing top margin 19 | - Fix: Console error when editing doctype 20 | - Fix: Z-index issues 21 | 22 | ## 0.6.0 - 2020-11-01 23 | 24 | - Fixes collapsible groups in Umbraco 8.7+ (thanks @FransDeJong) 25 | - Adds syncing between tabs in split view (thanks @FransDeJong) 26 | - Fixes wrong offset when scrolling to group (thanks @FransDeJong) 27 | - Fixes calculation for overflowing tabs on smaller screens 28 | - Styling fixes (thanks @callumbwhyte) 29 | - Improved focus style on tabs 30 | - Fixes styling errors for inline blocks in Block List 31 | - Fixes z-index issue with reorder bar in Grid 32 | - Fixes layout issue in DTGE 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Umbraco Package Team 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Our.Umbraco.Matryoshka.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30128.74 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Our.Umbraco.Matryoshka.Site", ".website\Our.Umbraco.Matryoshka.Site.csproj", "{134283BB-575D-4C5E-BD1C-670836E93B1C}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Our.Umbraco.Matryoshka", "src\Our.Umbraco.Matryoshka\Our.Umbraco.Matryoshka.csproj", "{8F6D223B-8240-4F20-ABB0-24D7F9A120C8}" 9 | EndProject 10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{C4B64264-1C23-4073-9656-77997B40012E}" 11 | ProjectSection(SolutionItems) = preProject 12 | .gitignore = .gitignore 13 | CHANGELOG.md = CHANGELOG.md 14 | gulpfile.js = gulpfile.js 15 | LICENSE = LICENSE 16 | package.json = package.json 17 | paths.json = paths.json 18 | readme.md = readme.md 19 | EndProjectSection 20 | EndProject 21 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{06774B08-AC6C-407C-92AD-0780264CDABE}" 22 | EndProject 23 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{6335E278-A74E-41C5-B32E-41F73C4BB0F6}" 24 | ProjectSection(SolutionItems) = preProject 25 | .github\workflows\build.yml = .github\workflows\build.yml 26 | .github\workflows\readme.md = .github\workflows\readme.md 27 | EndProjectSection 28 | EndProject 29 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{59CC1552-502F-4051-BD56-994F21011ACB}" 30 | ProjectSection(SolutionItems) = preProject 31 | docs\icon.png = docs\icon.png 32 | docs\separator.png = docs\separator.png 33 | docs\tabs.png = docs\tabs.png 34 | EndProjectSection 35 | EndProject 36 | Global 37 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 38 | Debug|Any CPU = Debug|Any CPU 39 | Release|Any CPU = Release|Any CPU 40 | EndGlobalSection 41 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 42 | {134283BB-575D-4C5E-BD1C-670836E93B1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 43 | {134283BB-575D-4C5E-BD1C-670836E93B1C}.Debug|Any CPU.Build.0 = Debug|Any CPU 44 | {134283BB-575D-4C5E-BD1C-670836E93B1C}.Release|Any CPU.ActiveCfg = Release|Any CPU 45 | {134283BB-575D-4C5E-BD1C-670836E93B1C}.Release|Any CPU.Build.0 = Release|Any CPU 46 | {8F6D223B-8240-4F20-ABB0-24D7F9A120C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 47 | {8F6D223B-8240-4F20-ABB0-24D7F9A120C8}.Debug|Any CPU.Build.0 = Debug|Any CPU 48 | {8F6D223B-8240-4F20-ABB0-24D7F9A120C8}.Release|Any CPU.ActiveCfg = Release|Any CPU 49 | {8F6D223B-8240-4F20-ABB0-24D7F9A120C8}.Release|Any CPU.Build.0 = Release|Any CPU 50 | EndGlobalSection 51 | GlobalSection(SolutionProperties) = preSolution 52 | HideSolutionNode = FALSE 53 | EndGlobalSection 54 | GlobalSection(NestedProjects) = preSolution 55 | {06774B08-AC6C-407C-92AD-0780264CDABE} = {C4B64264-1C23-4073-9656-77997B40012E} 56 | {6335E278-A74E-41C5-B32E-41F73C4BB0F6} = {06774B08-AC6C-407C-92AD-0780264CDABE} 57 | {59CC1552-502F-4051-BD56-994F21011ACB} = {C4B64264-1C23-4073-9656-77997B40012E} 58 | EndGlobalSection 59 | GlobalSection(ExtensibilityGlobals) = postSolution 60 | SolutionGuid = {0A4335E4-0198-4777-9409-64E22F1F8F2C} 61 | EndGlobalSection 62 | EndGlobal 63 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Matryoshka 2 | 3 | --------------------------------------------------- 4 | 5 | ## Att: Matryoshka users - I've put up some polls to get an idea of which features a being used in Matryoshka, if you can, please answer: https://twitter.com/skttl/status/1412678362376589315 6 | 7 | --------------------------------------------------- 8 | 9 | [![Our Umbraco project page](https://img.shields.io/badge/our-umbraco-orange.svg)](https://our.umbraco.org/projects/backoffice-extensions/matryoshka) 10 | 11 | 12 | Matryoshka enables you to layer your document type properties in tabs and groups. It substitutes the content editor view, with its own view, to make existing groups appear as tabs, and adds a property editor, which gives the impression of groups. 13 | 14 | 15 | ## Getting Started 16 | 17 | ### Installation 18 | 19 | > *Note:* Matryoshka has been developed against **Umbraco v8.4.0** and will support that version and above. It should work in v.8.0 and above too though. 20 | 21 | Matryoshka can be installed from the Our Umbraco package repository or with NuGet. 22 | 23 | #### Our Umbraco Package Repository 24 | 25 | To install from Our Umbraco, please download the package from: 26 | 27 | > [https://our.umbraco.org/projects/backoffice-extensions/matryoshka](https://our.umbraco.org/projects/backoffice-extensions/matryoshka) 28 | 29 | #### NuGet 30 | 31 | To install with NuGet, please search NuGet for "[Our.Umbraco.Matryoshka](https://www.nuget.org/packages/Our.Umbraco.Matryoshka)", or install it with this command from the package manager console: 32 | 33 | Install-Package Our.Umbraco.Matryoshka 34 | 35 | ## Developers Guide 36 | 37 | When installed, Matryoshka will change all your existing groups, to be shown as tabs. You can't switch between tabs/groups. 38 | 39 | For faux group separations. You can add a datatype using the Matryoshka Group Separator property editor included in the package. When used, the separator will display the property name and description as a headline for your new faux group. 40 | 41 | ## Contact 42 | 43 | Have a question? 44 | 45 | * [Raise an issue](https://github.com/skttl/matryoshka/issues) on GitHub 46 | 47 | 48 | ## Dev Team 49 | 50 | * [Søren Kottal](https://github.com/skttl) 51 | 52 | ### Special Thanks 53 | 54 | * Thanks to [Sebastiaan Janssen](https://github.com/nul800sebastiaan) for creating and releasing [Tabify](https://github.com/nul800sebastiaan/Cultiv.Tabify) which most of the tabbing functionality is based on. 55 | * Thanks to [Supalerk Laipawat](https://thenounproject.com/photo3idea/) for the logo. 56 | 57 | ## License 58 | 59 | Copyright © 2020 Søren Kottal 60 | 61 | Licensed under the [MIT License](LICENSE.md) 62 | -------------------------------------------------------------------------------- /docs/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skttl/umbraco-matryoshka/e2b2b25c1dd7e854eb3e73cb3bcf67c069598c49/docs/icon.png -------------------------------------------------------------------------------- /docs/separator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skttl/umbraco-matryoshka/e2b2b25c1dd7e854eb3e73cb3bcf67c069598c49/docs/separator.png -------------------------------------------------------------------------------- /docs/tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skttl/umbraco-matryoshka/e2b2b25c1dd7e854eb3e73cb3bcf67c069598c49/docs/tabs.png -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | /// 2 | // 3 | const { watch, src, dest } = require('gulp'); 4 | var config = require('./paths.json'); 5 | 6 | /* 7 | * app_plugin and build script. 8 | */ 9 | 10 | const appPluginPath = '/App_Plugins/' + config.pluginFolder; 11 | 12 | const appPlugin = { 13 | source: config.library + appPluginPath + '/**/*', 14 | src: config.library + appPluginPath + '/', 15 | dest: config.site + appPluginPath 16 | } 17 | 18 | 19 | /* 20 | * Copys files from app_plugins folder in a library 21 | * project into a test site. 22 | * 23 | * Your paths.config should look like: 24 | * 25 | * { 26 | * "library": "myPackage.LibraryName", 27 | * "pluginFolder": "MyPackageFolder", 28 | * "site" : "../Sandbox.Site" 29 | * } 30 | * 31 | * This will run in the background, so you don't need 32 | * to rebuild your project when working on script files. 33 | */ 34 | 35 | function copy(path, baseFolder, target) { 36 | 37 | console.log('copy: \x1b[36m%s\x1b[0m %s', path, target); 38 | 39 | return src(path, { base: baseFolder }) 40 | .pipe(dest(target)); 41 | } 42 | 43 | 44 | function watchAppPlugins() { 45 | 46 | console.log() 47 | console.log('Watching : ' + appPlugin.source); 48 | console.log('Target : ' + appPlugin.dest); 49 | 50 | watch(appPlugin.source, { ignoreInitial: false }) 51 | .on('change', function (path, stats) { 52 | copy(path, appPlugin.src, appPlugin.dest) 53 | }) 54 | .on('add', function (path, stats) { 55 | copy(path, appPlugin.src, appPlugin.dest) 56 | }); 57 | } 58 | 59 | exports.default = function () { 60 | watchAppPlugins(); 61 | }; -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pkgtemplate", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ansi-colors": { 8 | "version": "1.1.0", 9 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", 10 | "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", 11 | "dev": true, 12 | "requires": { 13 | "ansi-wrap": "^0.1.0" 14 | } 15 | }, 16 | "ansi-gray": { 17 | "version": "0.1.1", 18 | "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", 19 | "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", 20 | "dev": true, 21 | "requires": { 22 | "ansi-wrap": "0.1.0" 23 | } 24 | }, 25 | "ansi-regex": { 26 | "version": "2.1.1", 27 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 28 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 29 | "dev": true 30 | }, 31 | "ansi-wrap": { 32 | "version": "0.1.0", 33 | "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", 34 | "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", 35 | "dev": true 36 | }, 37 | "anymatch": { 38 | "version": "2.0.0", 39 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", 40 | "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", 41 | "dev": true, 42 | "requires": { 43 | "micromatch": "^3.1.4", 44 | "normalize-path": "^2.1.1" 45 | }, 46 | "dependencies": { 47 | "normalize-path": { 48 | "version": "2.1.1", 49 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 50 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 51 | "dev": true, 52 | "requires": { 53 | "remove-trailing-separator": "^1.0.1" 54 | } 55 | } 56 | } 57 | }, 58 | "append-buffer": { 59 | "version": "1.0.2", 60 | "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", 61 | "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", 62 | "dev": true, 63 | "requires": { 64 | "buffer-equal": "^1.0.0" 65 | } 66 | }, 67 | "archy": { 68 | "version": "1.0.0", 69 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 70 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 71 | "dev": true 72 | }, 73 | "arr-diff": { 74 | "version": "4.0.0", 75 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 76 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 77 | "dev": true 78 | }, 79 | "arr-filter": { 80 | "version": "1.1.2", 81 | "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", 82 | "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", 83 | "dev": true, 84 | "requires": { 85 | "make-iterator": "^1.0.0" 86 | } 87 | }, 88 | "arr-flatten": { 89 | "version": "1.1.0", 90 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 91 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 92 | "dev": true 93 | }, 94 | "arr-map": { 95 | "version": "2.0.2", 96 | "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", 97 | "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", 98 | "dev": true, 99 | "requires": { 100 | "make-iterator": "^1.0.0" 101 | } 102 | }, 103 | "arr-union": { 104 | "version": "3.1.0", 105 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 106 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 107 | "dev": true 108 | }, 109 | "array-each": { 110 | "version": "1.0.1", 111 | "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 112 | "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", 113 | "dev": true 114 | }, 115 | "array-initial": { 116 | "version": "1.1.0", 117 | "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", 118 | "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", 119 | "dev": true, 120 | "requires": { 121 | "array-slice": "^1.0.0", 122 | "is-number": "^4.0.0" 123 | }, 124 | "dependencies": { 125 | "is-number": { 126 | "version": "4.0.0", 127 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", 128 | "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", 129 | "dev": true 130 | } 131 | } 132 | }, 133 | "array-last": { 134 | "version": "1.3.0", 135 | "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", 136 | "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", 137 | "dev": true, 138 | "requires": { 139 | "is-number": "^4.0.0" 140 | }, 141 | "dependencies": { 142 | "is-number": { 143 | "version": "4.0.0", 144 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", 145 | "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", 146 | "dev": true 147 | } 148 | } 149 | }, 150 | "array-slice": { 151 | "version": "1.1.0", 152 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", 153 | "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", 154 | "dev": true 155 | }, 156 | "array-sort": { 157 | "version": "1.0.0", 158 | "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", 159 | "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", 160 | "dev": true, 161 | "requires": { 162 | "default-compare": "^1.0.0", 163 | "get-value": "^2.0.6", 164 | "kind-of": "^5.0.2" 165 | }, 166 | "dependencies": { 167 | "kind-of": { 168 | "version": "5.1.0", 169 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 170 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 171 | "dev": true 172 | } 173 | } 174 | }, 175 | "array-unique": { 176 | "version": "0.3.2", 177 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 178 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 179 | "dev": true 180 | }, 181 | "assign-symbols": { 182 | "version": "1.0.0", 183 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 184 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 185 | "dev": true 186 | }, 187 | "async-done": { 188 | "version": "1.3.2", 189 | "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", 190 | "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", 191 | "dev": true, 192 | "requires": { 193 | "end-of-stream": "^1.1.0", 194 | "once": "^1.3.2", 195 | "process-nextick-args": "^2.0.0", 196 | "stream-exhaust": "^1.0.1" 197 | } 198 | }, 199 | "async-each": { 200 | "version": "1.0.3", 201 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", 202 | "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", 203 | "dev": true 204 | }, 205 | "async-settle": { 206 | "version": "1.0.0", 207 | "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", 208 | "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", 209 | "dev": true, 210 | "requires": { 211 | "async-done": "^1.2.2" 212 | } 213 | }, 214 | "atob": { 215 | "version": "2.1.2", 216 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 217 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 218 | "dev": true 219 | }, 220 | "bach": { 221 | "version": "1.2.0", 222 | "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", 223 | "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", 224 | "dev": true, 225 | "requires": { 226 | "arr-filter": "^1.1.1", 227 | "arr-flatten": "^1.0.1", 228 | "arr-map": "^2.0.0", 229 | "array-each": "^1.0.0", 230 | "array-initial": "^1.0.0", 231 | "array-last": "^1.1.1", 232 | "async-done": "^1.2.2", 233 | "async-settle": "^1.0.0", 234 | "now-and-later": "^2.0.0" 235 | } 236 | }, 237 | "balanced-match": { 238 | "version": "1.0.0", 239 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 240 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 241 | "dev": true 242 | }, 243 | "base": { 244 | "version": "0.11.2", 245 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 246 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 247 | "dev": true, 248 | "requires": { 249 | "cache-base": "^1.0.1", 250 | "class-utils": "^0.3.5", 251 | "component-emitter": "^1.2.1", 252 | "define-property": "^1.0.0", 253 | "isobject": "^3.0.1", 254 | "mixin-deep": "^1.2.0", 255 | "pascalcase": "^0.1.1" 256 | }, 257 | "dependencies": { 258 | "define-property": { 259 | "version": "1.0.0", 260 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 261 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 262 | "dev": true, 263 | "requires": { 264 | "is-descriptor": "^1.0.0" 265 | } 266 | }, 267 | "is-accessor-descriptor": { 268 | "version": "1.0.0", 269 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 270 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 271 | "dev": true, 272 | "requires": { 273 | "kind-of": "^6.0.0" 274 | } 275 | }, 276 | "is-data-descriptor": { 277 | "version": "1.0.0", 278 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 279 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 280 | "dev": true, 281 | "requires": { 282 | "kind-of": "^6.0.0" 283 | } 284 | }, 285 | "is-descriptor": { 286 | "version": "1.0.2", 287 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 288 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 289 | "dev": true, 290 | "requires": { 291 | "is-accessor-descriptor": "^1.0.0", 292 | "is-data-descriptor": "^1.0.0", 293 | "kind-of": "^6.0.2" 294 | } 295 | } 296 | } 297 | }, 298 | "binary-extensions": { 299 | "version": "1.13.1", 300 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", 301 | "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", 302 | "dev": true 303 | }, 304 | "bindings": { 305 | "version": "1.5.0", 306 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 307 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 308 | "dev": true, 309 | "optional": true, 310 | "requires": { 311 | "file-uri-to-path": "1.0.0" 312 | } 313 | }, 314 | "brace-expansion": { 315 | "version": "1.1.11", 316 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 317 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 318 | "dev": true, 319 | "requires": { 320 | "balanced-match": "^1.0.0", 321 | "concat-map": "0.0.1" 322 | } 323 | }, 324 | "braces": { 325 | "version": "2.3.2", 326 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 327 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 328 | "dev": true, 329 | "requires": { 330 | "arr-flatten": "^1.1.0", 331 | "array-unique": "^0.3.2", 332 | "extend-shallow": "^2.0.1", 333 | "fill-range": "^4.0.0", 334 | "isobject": "^3.0.1", 335 | "repeat-element": "^1.1.2", 336 | "snapdragon": "^0.8.1", 337 | "snapdragon-node": "^2.0.1", 338 | "split-string": "^3.0.2", 339 | "to-regex": "^3.0.1" 340 | }, 341 | "dependencies": { 342 | "extend-shallow": { 343 | "version": "2.0.1", 344 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 345 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 346 | "dev": true, 347 | "requires": { 348 | "is-extendable": "^0.1.0" 349 | } 350 | } 351 | } 352 | }, 353 | "buffer-equal": { 354 | "version": "1.0.0", 355 | "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", 356 | "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", 357 | "dev": true 358 | }, 359 | "buffer-from": { 360 | "version": "1.1.1", 361 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 362 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 363 | "dev": true 364 | }, 365 | "cache-base": { 366 | "version": "1.0.1", 367 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 368 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 369 | "dev": true, 370 | "requires": { 371 | "collection-visit": "^1.0.0", 372 | "component-emitter": "^1.2.1", 373 | "get-value": "^2.0.6", 374 | "has-value": "^1.0.0", 375 | "isobject": "^3.0.1", 376 | "set-value": "^2.0.0", 377 | "to-object-path": "^0.3.0", 378 | "union-value": "^1.0.0", 379 | "unset-value": "^1.0.0" 380 | } 381 | }, 382 | "camelcase": { 383 | "version": "3.0.0", 384 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", 385 | "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", 386 | "dev": true 387 | }, 388 | "chokidar": { 389 | "version": "2.1.8", 390 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", 391 | "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", 392 | "dev": true, 393 | "requires": { 394 | "anymatch": "^2.0.0", 395 | "async-each": "^1.0.1", 396 | "braces": "^2.3.2", 397 | "fsevents": "^1.2.7", 398 | "glob-parent": "^3.1.0", 399 | "inherits": "^2.0.3", 400 | "is-binary-path": "^1.0.0", 401 | "is-glob": "^4.0.0", 402 | "normalize-path": "^3.0.0", 403 | "path-is-absolute": "^1.0.0", 404 | "readdirp": "^2.2.1", 405 | "upath": "^1.1.1" 406 | } 407 | }, 408 | "class-utils": { 409 | "version": "0.3.6", 410 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 411 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 412 | "dev": true, 413 | "requires": { 414 | "arr-union": "^3.1.0", 415 | "define-property": "^0.2.5", 416 | "isobject": "^3.0.0", 417 | "static-extend": "^0.1.1" 418 | }, 419 | "dependencies": { 420 | "define-property": { 421 | "version": "0.2.5", 422 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 423 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 424 | "dev": true, 425 | "requires": { 426 | "is-descriptor": "^0.1.0" 427 | } 428 | } 429 | } 430 | }, 431 | "cliui": { 432 | "version": "3.2.0", 433 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", 434 | "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", 435 | "dev": true, 436 | "requires": { 437 | "string-width": "^1.0.1", 438 | "strip-ansi": "^3.0.1", 439 | "wrap-ansi": "^2.0.0" 440 | } 441 | }, 442 | "clone": { 443 | "version": "2.1.2", 444 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 445 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", 446 | "dev": true 447 | }, 448 | "clone-buffer": { 449 | "version": "1.0.0", 450 | "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", 451 | "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", 452 | "dev": true 453 | }, 454 | "clone-stats": { 455 | "version": "1.0.0", 456 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", 457 | "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", 458 | "dev": true 459 | }, 460 | "cloneable-readable": { 461 | "version": "1.1.3", 462 | "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", 463 | "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", 464 | "dev": true, 465 | "requires": { 466 | "inherits": "^2.0.1", 467 | "process-nextick-args": "^2.0.0", 468 | "readable-stream": "^2.3.5" 469 | } 470 | }, 471 | "code-point-at": { 472 | "version": "1.1.0", 473 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 474 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 475 | "dev": true 476 | }, 477 | "collection-map": { 478 | "version": "1.0.0", 479 | "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", 480 | "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", 481 | "dev": true, 482 | "requires": { 483 | "arr-map": "^2.0.2", 484 | "for-own": "^1.0.0", 485 | "make-iterator": "^1.0.0" 486 | } 487 | }, 488 | "collection-visit": { 489 | "version": "1.0.0", 490 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 491 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 492 | "dev": true, 493 | "requires": { 494 | "map-visit": "^1.0.0", 495 | "object-visit": "^1.0.0" 496 | } 497 | }, 498 | "color-support": { 499 | "version": "1.1.3", 500 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 501 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 502 | "dev": true 503 | }, 504 | "component-emitter": { 505 | "version": "1.3.0", 506 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 507 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", 508 | "dev": true 509 | }, 510 | "concat-map": { 511 | "version": "0.0.1", 512 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 513 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 514 | "dev": true 515 | }, 516 | "concat-stream": { 517 | "version": "1.6.2", 518 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 519 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 520 | "dev": true, 521 | "requires": { 522 | "buffer-from": "^1.0.0", 523 | "inherits": "^2.0.3", 524 | "readable-stream": "^2.2.2", 525 | "typedarray": "^0.0.6" 526 | } 527 | }, 528 | "convert-source-map": { 529 | "version": "1.7.0", 530 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 531 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 532 | "dev": true, 533 | "requires": { 534 | "safe-buffer": "~5.1.1" 535 | } 536 | }, 537 | "copy-descriptor": { 538 | "version": "0.1.1", 539 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 540 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 541 | "dev": true 542 | }, 543 | "copy-props": { 544 | "version": "2.0.4", 545 | "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", 546 | "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", 547 | "dev": true, 548 | "requires": { 549 | "each-props": "^1.3.0", 550 | "is-plain-object": "^2.0.1" 551 | } 552 | }, 553 | "core-util-is": { 554 | "version": "1.0.2", 555 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 556 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 557 | "dev": true 558 | }, 559 | "d": { 560 | "version": "1.0.1", 561 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 562 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 563 | "dev": true, 564 | "requires": { 565 | "es5-ext": "^0.10.50", 566 | "type": "^1.0.1" 567 | } 568 | }, 569 | "debug": { 570 | "version": "2.6.9", 571 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 572 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 573 | "dev": true, 574 | "requires": { 575 | "ms": "2.0.0" 576 | } 577 | }, 578 | "decamelize": { 579 | "version": "1.2.0", 580 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 581 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 582 | "dev": true 583 | }, 584 | "decode-uri-component": { 585 | "version": "0.2.0", 586 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 587 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 588 | "dev": true 589 | }, 590 | "default-compare": { 591 | "version": "1.0.0", 592 | "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", 593 | "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", 594 | "dev": true, 595 | "requires": { 596 | "kind-of": "^5.0.2" 597 | }, 598 | "dependencies": { 599 | "kind-of": { 600 | "version": "5.1.0", 601 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 602 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 603 | "dev": true 604 | } 605 | } 606 | }, 607 | "default-resolution": { 608 | "version": "2.0.0", 609 | "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", 610 | "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", 611 | "dev": true 612 | }, 613 | "define-properties": { 614 | "version": "1.1.3", 615 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 616 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 617 | "dev": true, 618 | "requires": { 619 | "object-keys": "^1.0.12" 620 | } 621 | }, 622 | "define-property": { 623 | "version": "2.0.2", 624 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 625 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 626 | "dev": true, 627 | "requires": { 628 | "is-descriptor": "^1.0.2", 629 | "isobject": "^3.0.1" 630 | }, 631 | "dependencies": { 632 | "is-accessor-descriptor": { 633 | "version": "1.0.0", 634 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 635 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 636 | "dev": true, 637 | "requires": { 638 | "kind-of": "^6.0.0" 639 | } 640 | }, 641 | "is-data-descriptor": { 642 | "version": "1.0.0", 643 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 644 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 645 | "dev": true, 646 | "requires": { 647 | "kind-of": "^6.0.0" 648 | } 649 | }, 650 | "is-descriptor": { 651 | "version": "1.0.2", 652 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 653 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 654 | "dev": true, 655 | "requires": { 656 | "is-accessor-descriptor": "^1.0.0", 657 | "is-data-descriptor": "^1.0.0", 658 | "kind-of": "^6.0.2" 659 | } 660 | } 661 | } 662 | }, 663 | "detect-file": { 664 | "version": "1.0.0", 665 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", 666 | "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", 667 | "dev": true 668 | }, 669 | "duplexify": { 670 | "version": "3.7.1", 671 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", 672 | "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", 673 | "dev": true, 674 | "requires": { 675 | "end-of-stream": "^1.0.0", 676 | "inherits": "^2.0.1", 677 | "readable-stream": "^2.0.0", 678 | "stream-shift": "^1.0.0" 679 | } 680 | }, 681 | "each-props": { 682 | "version": "1.3.2", 683 | "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", 684 | "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", 685 | "dev": true, 686 | "requires": { 687 | "is-plain-object": "^2.0.1", 688 | "object.defaults": "^1.1.0" 689 | } 690 | }, 691 | "end-of-stream": { 692 | "version": "1.4.4", 693 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 694 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 695 | "dev": true, 696 | "requires": { 697 | "once": "^1.4.0" 698 | } 699 | }, 700 | "error-ex": { 701 | "version": "1.3.2", 702 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 703 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 704 | "dev": true, 705 | "requires": { 706 | "is-arrayish": "^0.2.1" 707 | } 708 | }, 709 | "es-abstract": { 710 | "version": "1.18.0-next.1", 711 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", 712 | "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", 713 | "dev": true, 714 | "requires": { 715 | "es-to-primitive": "^1.2.1", 716 | "function-bind": "^1.1.1", 717 | "has": "^1.0.3", 718 | "has-symbols": "^1.0.1", 719 | "is-callable": "^1.2.2", 720 | "is-negative-zero": "^2.0.0", 721 | "is-regex": "^1.1.1", 722 | "object-inspect": "^1.8.0", 723 | "object-keys": "^1.1.1", 724 | "object.assign": "^4.1.1", 725 | "string.prototype.trimend": "^1.0.1", 726 | "string.prototype.trimstart": "^1.0.1" 727 | } 728 | }, 729 | "es-to-primitive": { 730 | "version": "1.2.1", 731 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 732 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 733 | "dev": true, 734 | "requires": { 735 | "is-callable": "^1.1.4", 736 | "is-date-object": "^1.0.1", 737 | "is-symbol": "^1.0.2" 738 | } 739 | }, 740 | "es5-ext": { 741 | "version": "0.10.53", 742 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", 743 | "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", 744 | "dev": true, 745 | "requires": { 746 | "es6-iterator": "~2.0.3", 747 | "es6-symbol": "~3.1.3", 748 | "next-tick": "~1.0.0" 749 | } 750 | }, 751 | "es6-iterator": { 752 | "version": "2.0.3", 753 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 754 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 755 | "dev": true, 756 | "requires": { 757 | "d": "1", 758 | "es5-ext": "^0.10.35", 759 | "es6-symbol": "^3.1.1" 760 | } 761 | }, 762 | "es6-symbol": { 763 | "version": "3.1.3", 764 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", 765 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", 766 | "dev": true, 767 | "requires": { 768 | "d": "^1.0.1", 769 | "ext": "^1.1.2" 770 | } 771 | }, 772 | "es6-weak-map": { 773 | "version": "2.0.3", 774 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", 775 | "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", 776 | "dev": true, 777 | "requires": { 778 | "d": "1", 779 | "es5-ext": "^0.10.46", 780 | "es6-iterator": "^2.0.3", 781 | "es6-symbol": "^3.1.1" 782 | } 783 | }, 784 | "expand-brackets": { 785 | "version": "2.1.4", 786 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 787 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 788 | "dev": true, 789 | "requires": { 790 | "debug": "^2.3.3", 791 | "define-property": "^0.2.5", 792 | "extend-shallow": "^2.0.1", 793 | "posix-character-classes": "^0.1.0", 794 | "regex-not": "^1.0.0", 795 | "snapdragon": "^0.8.1", 796 | "to-regex": "^3.0.1" 797 | }, 798 | "dependencies": { 799 | "define-property": { 800 | "version": "0.2.5", 801 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 802 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 803 | "dev": true, 804 | "requires": { 805 | "is-descriptor": "^0.1.0" 806 | } 807 | }, 808 | "extend-shallow": { 809 | "version": "2.0.1", 810 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 811 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 812 | "dev": true, 813 | "requires": { 814 | "is-extendable": "^0.1.0" 815 | } 816 | } 817 | } 818 | }, 819 | "expand-tilde": { 820 | "version": "2.0.2", 821 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 822 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 823 | "dev": true, 824 | "requires": { 825 | "homedir-polyfill": "^1.0.1" 826 | } 827 | }, 828 | "ext": { 829 | "version": "1.4.0", 830 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", 831 | "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", 832 | "dev": true, 833 | "requires": { 834 | "type": "^2.0.0" 835 | }, 836 | "dependencies": { 837 | "type": { 838 | "version": "2.1.0", 839 | "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", 840 | "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", 841 | "dev": true 842 | } 843 | } 844 | }, 845 | "extend": { 846 | "version": "3.0.2", 847 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 848 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 849 | "dev": true 850 | }, 851 | "extend-shallow": { 852 | "version": "3.0.2", 853 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 854 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 855 | "dev": true, 856 | "requires": { 857 | "assign-symbols": "^1.0.0", 858 | "is-extendable": "^1.0.1" 859 | }, 860 | "dependencies": { 861 | "is-extendable": { 862 | "version": "1.0.1", 863 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 864 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 865 | "dev": true, 866 | "requires": { 867 | "is-plain-object": "^2.0.4" 868 | } 869 | } 870 | } 871 | }, 872 | "extglob": { 873 | "version": "2.0.4", 874 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 875 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 876 | "dev": true, 877 | "requires": { 878 | "array-unique": "^0.3.2", 879 | "define-property": "^1.0.0", 880 | "expand-brackets": "^2.1.4", 881 | "extend-shallow": "^2.0.1", 882 | "fragment-cache": "^0.2.1", 883 | "regex-not": "^1.0.0", 884 | "snapdragon": "^0.8.1", 885 | "to-regex": "^3.0.1" 886 | }, 887 | "dependencies": { 888 | "define-property": { 889 | "version": "1.0.0", 890 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 891 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 892 | "dev": true, 893 | "requires": { 894 | "is-descriptor": "^1.0.0" 895 | } 896 | }, 897 | "extend-shallow": { 898 | "version": "2.0.1", 899 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 900 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 901 | "dev": true, 902 | "requires": { 903 | "is-extendable": "^0.1.0" 904 | } 905 | }, 906 | "is-accessor-descriptor": { 907 | "version": "1.0.0", 908 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 909 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 910 | "dev": true, 911 | "requires": { 912 | "kind-of": "^6.0.0" 913 | } 914 | }, 915 | "is-data-descriptor": { 916 | "version": "1.0.0", 917 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 918 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 919 | "dev": true, 920 | "requires": { 921 | "kind-of": "^6.0.0" 922 | } 923 | }, 924 | "is-descriptor": { 925 | "version": "1.0.2", 926 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 927 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 928 | "dev": true, 929 | "requires": { 930 | "is-accessor-descriptor": "^1.0.0", 931 | "is-data-descriptor": "^1.0.0", 932 | "kind-of": "^6.0.2" 933 | } 934 | } 935 | } 936 | }, 937 | "fancy-log": { 938 | "version": "1.3.3", 939 | "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", 940 | "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", 941 | "dev": true, 942 | "requires": { 943 | "ansi-gray": "^0.1.1", 944 | "color-support": "^1.1.3", 945 | "parse-node-version": "^1.0.0", 946 | "time-stamp": "^1.0.0" 947 | } 948 | }, 949 | "fast-levenshtein": { 950 | "version": "1.1.4", 951 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", 952 | "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", 953 | "dev": true 954 | }, 955 | "file-uri-to-path": { 956 | "version": "1.0.0", 957 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 958 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", 959 | "dev": true, 960 | "optional": true 961 | }, 962 | "fill-range": { 963 | "version": "4.0.0", 964 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 965 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 966 | "dev": true, 967 | "requires": { 968 | "extend-shallow": "^2.0.1", 969 | "is-number": "^3.0.0", 970 | "repeat-string": "^1.6.1", 971 | "to-regex-range": "^2.1.0" 972 | }, 973 | "dependencies": { 974 | "extend-shallow": { 975 | "version": "2.0.1", 976 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 977 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 978 | "dev": true, 979 | "requires": { 980 | "is-extendable": "^0.1.0" 981 | } 982 | } 983 | } 984 | }, 985 | "find-up": { 986 | "version": "1.1.2", 987 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 988 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 989 | "dev": true, 990 | "requires": { 991 | "path-exists": "^2.0.0", 992 | "pinkie-promise": "^2.0.0" 993 | } 994 | }, 995 | "findup-sync": { 996 | "version": "3.0.0", 997 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", 998 | "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", 999 | "dev": true, 1000 | "requires": { 1001 | "detect-file": "^1.0.0", 1002 | "is-glob": "^4.0.0", 1003 | "micromatch": "^3.0.4", 1004 | "resolve-dir": "^1.0.1" 1005 | } 1006 | }, 1007 | "fined": { 1008 | "version": "1.2.0", 1009 | "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", 1010 | "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", 1011 | "dev": true, 1012 | "requires": { 1013 | "expand-tilde": "^2.0.2", 1014 | "is-plain-object": "^2.0.3", 1015 | "object.defaults": "^1.1.0", 1016 | "object.pick": "^1.2.0", 1017 | "parse-filepath": "^1.0.1" 1018 | } 1019 | }, 1020 | "flagged-respawn": { 1021 | "version": "1.0.1", 1022 | "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", 1023 | "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", 1024 | "dev": true 1025 | }, 1026 | "flush-write-stream": { 1027 | "version": "1.1.1", 1028 | "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", 1029 | "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", 1030 | "dev": true, 1031 | "requires": { 1032 | "inherits": "^2.0.3", 1033 | "readable-stream": "^2.3.6" 1034 | } 1035 | }, 1036 | "for-in": { 1037 | "version": "1.0.2", 1038 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1039 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1040 | "dev": true 1041 | }, 1042 | "for-own": { 1043 | "version": "1.0.0", 1044 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 1045 | "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 1046 | "dev": true, 1047 | "requires": { 1048 | "for-in": "^1.0.1" 1049 | } 1050 | }, 1051 | "fragment-cache": { 1052 | "version": "0.2.1", 1053 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 1054 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 1055 | "dev": true, 1056 | "requires": { 1057 | "map-cache": "^0.2.2" 1058 | } 1059 | }, 1060 | "fs-mkdirp-stream": { 1061 | "version": "1.0.0", 1062 | "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", 1063 | "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", 1064 | "dev": true, 1065 | "requires": { 1066 | "graceful-fs": "^4.1.11", 1067 | "through2": "^2.0.3" 1068 | } 1069 | }, 1070 | "fs.realpath": { 1071 | "version": "1.0.0", 1072 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1073 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1074 | "dev": true 1075 | }, 1076 | "fsevents": { 1077 | "version": "1.2.13", 1078 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", 1079 | "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", 1080 | "dev": true, 1081 | "optional": true, 1082 | "requires": { 1083 | "bindings": "^1.5.0", 1084 | "nan": "^2.12.1" 1085 | } 1086 | }, 1087 | "function-bind": { 1088 | "version": "1.1.1", 1089 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1090 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1091 | "dev": true 1092 | }, 1093 | "get-caller-file": { 1094 | "version": "1.0.3", 1095 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", 1096 | "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", 1097 | "dev": true 1098 | }, 1099 | "get-value": { 1100 | "version": "2.0.6", 1101 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 1102 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 1103 | "dev": true 1104 | }, 1105 | "glob": { 1106 | "version": "7.1.6", 1107 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1108 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1109 | "dev": true, 1110 | "requires": { 1111 | "fs.realpath": "^1.0.0", 1112 | "inflight": "^1.0.4", 1113 | "inherits": "2", 1114 | "minimatch": "^3.0.4", 1115 | "once": "^1.3.0", 1116 | "path-is-absolute": "^1.0.0" 1117 | } 1118 | }, 1119 | "glob-parent": { 1120 | "version": "3.1.0", 1121 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 1122 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 1123 | "dev": true, 1124 | "requires": { 1125 | "is-glob": "^3.1.0", 1126 | "path-dirname": "^1.0.0" 1127 | }, 1128 | "dependencies": { 1129 | "is-glob": { 1130 | "version": "3.1.0", 1131 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 1132 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 1133 | "dev": true, 1134 | "requires": { 1135 | "is-extglob": "^2.1.0" 1136 | } 1137 | } 1138 | } 1139 | }, 1140 | "glob-stream": { 1141 | "version": "6.1.0", 1142 | "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", 1143 | "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", 1144 | "dev": true, 1145 | "requires": { 1146 | "extend": "^3.0.0", 1147 | "glob": "^7.1.1", 1148 | "glob-parent": "^3.1.0", 1149 | "is-negated-glob": "^1.0.0", 1150 | "ordered-read-streams": "^1.0.0", 1151 | "pumpify": "^1.3.5", 1152 | "readable-stream": "^2.1.5", 1153 | "remove-trailing-separator": "^1.0.1", 1154 | "to-absolute-glob": "^2.0.0", 1155 | "unique-stream": "^2.0.2" 1156 | } 1157 | }, 1158 | "glob-watcher": { 1159 | "version": "5.0.5", 1160 | "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", 1161 | "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", 1162 | "dev": true, 1163 | "requires": { 1164 | "anymatch": "^2.0.0", 1165 | "async-done": "^1.2.0", 1166 | "chokidar": "^2.0.0", 1167 | "is-negated-glob": "^1.0.0", 1168 | "just-debounce": "^1.0.0", 1169 | "normalize-path": "^3.0.0", 1170 | "object.defaults": "^1.1.0" 1171 | } 1172 | }, 1173 | "global-modules": { 1174 | "version": "1.0.0", 1175 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", 1176 | "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", 1177 | "dev": true, 1178 | "requires": { 1179 | "global-prefix": "^1.0.1", 1180 | "is-windows": "^1.0.1", 1181 | "resolve-dir": "^1.0.0" 1182 | } 1183 | }, 1184 | "global-prefix": { 1185 | "version": "1.0.2", 1186 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", 1187 | "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", 1188 | "dev": true, 1189 | "requires": { 1190 | "expand-tilde": "^2.0.2", 1191 | "homedir-polyfill": "^1.0.1", 1192 | "ini": "^1.3.4", 1193 | "is-windows": "^1.0.1", 1194 | "which": "^1.2.14" 1195 | } 1196 | }, 1197 | "glogg": { 1198 | "version": "1.0.2", 1199 | "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", 1200 | "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", 1201 | "dev": true, 1202 | "requires": { 1203 | "sparkles": "^1.0.0" 1204 | } 1205 | }, 1206 | "graceful-fs": { 1207 | "version": "4.2.4", 1208 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 1209 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 1210 | "dev": true 1211 | }, 1212 | "gulp": { 1213 | "version": "4.0.2", 1214 | "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", 1215 | "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", 1216 | "dev": true, 1217 | "requires": { 1218 | "glob-watcher": "^5.0.3", 1219 | "gulp-cli": "^2.2.0", 1220 | "undertaker": "^1.2.1", 1221 | "vinyl-fs": "^3.0.0" 1222 | }, 1223 | "dependencies": { 1224 | "gulp-cli": { 1225 | "version": "2.3.0", 1226 | "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", 1227 | "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", 1228 | "dev": true, 1229 | "requires": { 1230 | "ansi-colors": "^1.0.1", 1231 | "archy": "^1.0.0", 1232 | "array-sort": "^1.0.0", 1233 | "color-support": "^1.1.3", 1234 | "concat-stream": "^1.6.0", 1235 | "copy-props": "^2.0.1", 1236 | "fancy-log": "^1.3.2", 1237 | "gulplog": "^1.0.0", 1238 | "interpret": "^1.4.0", 1239 | "isobject": "^3.0.1", 1240 | "liftoff": "^3.1.0", 1241 | "matchdep": "^2.0.0", 1242 | "mute-stdout": "^1.0.0", 1243 | "pretty-hrtime": "^1.0.0", 1244 | "replace-homedir": "^1.0.0", 1245 | "semver-greatest-satisfied-range": "^1.1.0", 1246 | "v8flags": "^3.2.0", 1247 | "yargs": "^7.1.0" 1248 | } 1249 | } 1250 | } 1251 | }, 1252 | "gulplog": { 1253 | "version": "1.0.0", 1254 | "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", 1255 | "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", 1256 | "dev": true, 1257 | "requires": { 1258 | "glogg": "^1.0.0" 1259 | } 1260 | }, 1261 | "has": { 1262 | "version": "1.0.3", 1263 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1264 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1265 | "dev": true, 1266 | "requires": { 1267 | "function-bind": "^1.1.1" 1268 | } 1269 | }, 1270 | "has-symbols": { 1271 | "version": "1.0.1", 1272 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1273 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 1274 | "dev": true 1275 | }, 1276 | "has-value": { 1277 | "version": "1.0.0", 1278 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 1279 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 1280 | "dev": true, 1281 | "requires": { 1282 | "get-value": "^2.0.6", 1283 | "has-values": "^1.0.0", 1284 | "isobject": "^3.0.0" 1285 | } 1286 | }, 1287 | "has-values": { 1288 | "version": "1.0.0", 1289 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 1290 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 1291 | "dev": true, 1292 | "requires": { 1293 | "is-number": "^3.0.0", 1294 | "kind-of": "^4.0.0" 1295 | }, 1296 | "dependencies": { 1297 | "kind-of": { 1298 | "version": "4.0.0", 1299 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1300 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1301 | "dev": true, 1302 | "requires": { 1303 | "is-buffer": "^1.1.5" 1304 | } 1305 | } 1306 | } 1307 | }, 1308 | "homedir-polyfill": { 1309 | "version": "1.0.3", 1310 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", 1311 | "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", 1312 | "dev": true, 1313 | "requires": { 1314 | "parse-passwd": "^1.0.0" 1315 | } 1316 | }, 1317 | "hosted-git-info": { 1318 | "version": "2.8.8", 1319 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", 1320 | "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", 1321 | "dev": true 1322 | }, 1323 | "inflight": { 1324 | "version": "1.0.6", 1325 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1326 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1327 | "dev": true, 1328 | "requires": { 1329 | "once": "^1.3.0", 1330 | "wrappy": "1" 1331 | } 1332 | }, 1333 | "inherits": { 1334 | "version": "2.0.4", 1335 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1336 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1337 | "dev": true 1338 | }, 1339 | "ini": { 1340 | "version": "1.3.8", 1341 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1342 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1343 | "dev": true 1344 | }, 1345 | "interpret": { 1346 | "version": "1.4.0", 1347 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", 1348 | "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", 1349 | "dev": true 1350 | }, 1351 | "invert-kv": { 1352 | "version": "1.0.0", 1353 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", 1354 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", 1355 | "dev": true 1356 | }, 1357 | "is-absolute": { 1358 | "version": "1.0.0", 1359 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 1360 | "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 1361 | "dev": true, 1362 | "requires": { 1363 | "is-relative": "^1.0.0", 1364 | "is-windows": "^1.0.1" 1365 | } 1366 | }, 1367 | "is-accessor-descriptor": { 1368 | "version": "0.1.6", 1369 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 1370 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 1371 | "dev": true, 1372 | "requires": { 1373 | "kind-of": "^3.0.2" 1374 | }, 1375 | "dependencies": { 1376 | "kind-of": { 1377 | "version": "3.2.2", 1378 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1379 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1380 | "dev": true, 1381 | "requires": { 1382 | "is-buffer": "^1.1.5" 1383 | } 1384 | } 1385 | } 1386 | }, 1387 | "is-arrayish": { 1388 | "version": "0.2.1", 1389 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1390 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1391 | "dev": true 1392 | }, 1393 | "is-binary-path": { 1394 | "version": "1.0.1", 1395 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 1396 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 1397 | "dev": true, 1398 | "requires": { 1399 | "binary-extensions": "^1.0.0" 1400 | } 1401 | }, 1402 | "is-buffer": { 1403 | "version": "1.1.6", 1404 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1405 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1406 | "dev": true 1407 | }, 1408 | "is-callable": { 1409 | "version": "1.2.2", 1410 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", 1411 | "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", 1412 | "dev": true 1413 | }, 1414 | "is-data-descriptor": { 1415 | "version": "0.1.4", 1416 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 1417 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 1418 | "dev": true, 1419 | "requires": { 1420 | "kind-of": "^3.0.2" 1421 | }, 1422 | "dependencies": { 1423 | "kind-of": { 1424 | "version": "3.2.2", 1425 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1426 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1427 | "dev": true, 1428 | "requires": { 1429 | "is-buffer": "^1.1.5" 1430 | } 1431 | } 1432 | } 1433 | }, 1434 | "is-date-object": { 1435 | "version": "1.0.2", 1436 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1437 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 1438 | "dev": true 1439 | }, 1440 | "is-descriptor": { 1441 | "version": "0.1.6", 1442 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 1443 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 1444 | "dev": true, 1445 | "requires": { 1446 | "is-accessor-descriptor": "^0.1.6", 1447 | "is-data-descriptor": "^0.1.4", 1448 | "kind-of": "^5.0.0" 1449 | }, 1450 | "dependencies": { 1451 | "kind-of": { 1452 | "version": "5.1.0", 1453 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 1454 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 1455 | "dev": true 1456 | } 1457 | } 1458 | }, 1459 | "is-extendable": { 1460 | "version": "0.1.1", 1461 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1462 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1463 | "dev": true 1464 | }, 1465 | "is-extglob": { 1466 | "version": "2.1.1", 1467 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1468 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1469 | "dev": true 1470 | }, 1471 | "is-fullwidth-code-point": { 1472 | "version": "1.0.0", 1473 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1474 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1475 | "dev": true, 1476 | "requires": { 1477 | "number-is-nan": "^1.0.0" 1478 | } 1479 | }, 1480 | "is-glob": { 1481 | "version": "4.0.1", 1482 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1483 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1484 | "dev": true, 1485 | "requires": { 1486 | "is-extglob": "^2.1.1" 1487 | } 1488 | }, 1489 | "is-negated-glob": { 1490 | "version": "1.0.0", 1491 | "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", 1492 | "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", 1493 | "dev": true 1494 | }, 1495 | "is-negative-zero": { 1496 | "version": "2.0.0", 1497 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", 1498 | "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", 1499 | "dev": true 1500 | }, 1501 | "is-number": { 1502 | "version": "3.0.0", 1503 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1504 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1505 | "dev": true, 1506 | "requires": { 1507 | "kind-of": "^3.0.2" 1508 | }, 1509 | "dependencies": { 1510 | "kind-of": { 1511 | "version": "3.2.2", 1512 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1513 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1514 | "dev": true, 1515 | "requires": { 1516 | "is-buffer": "^1.1.5" 1517 | } 1518 | } 1519 | } 1520 | }, 1521 | "is-plain-object": { 1522 | "version": "2.0.4", 1523 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1524 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1525 | "dev": true, 1526 | "requires": { 1527 | "isobject": "^3.0.1" 1528 | } 1529 | }, 1530 | "is-regex": { 1531 | "version": "1.1.1", 1532 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 1533 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 1534 | "dev": true, 1535 | "requires": { 1536 | "has-symbols": "^1.0.1" 1537 | } 1538 | }, 1539 | "is-relative": { 1540 | "version": "1.0.0", 1541 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 1542 | "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 1543 | "dev": true, 1544 | "requires": { 1545 | "is-unc-path": "^1.0.0" 1546 | } 1547 | }, 1548 | "is-symbol": { 1549 | "version": "1.0.3", 1550 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1551 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1552 | "dev": true, 1553 | "requires": { 1554 | "has-symbols": "^1.0.1" 1555 | } 1556 | }, 1557 | "is-unc-path": { 1558 | "version": "1.0.0", 1559 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 1560 | "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 1561 | "dev": true, 1562 | "requires": { 1563 | "unc-path-regex": "^0.1.2" 1564 | } 1565 | }, 1566 | "is-utf8": { 1567 | "version": "0.2.1", 1568 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1569 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1570 | "dev": true 1571 | }, 1572 | "is-valid-glob": { 1573 | "version": "1.0.0", 1574 | "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", 1575 | "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", 1576 | "dev": true 1577 | }, 1578 | "is-windows": { 1579 | "version": "1.0.2", 1580 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1581 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 1582 | "dev": true 1583 | }, 1584 | "isarray": { 1585 | "version": "1.0.0", 1586 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1587 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1588 | "dev": true 1589 | }, 1590 | "isexe": { 1591 | "version": "2.0.0", 1592 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1593 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1594 | "dev": true 1595 | }, 1596 | "isobject": { 1597 | "version": "3.0.1", 1598 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1599 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1600 | "dev": true 1601 | }, 1602 | "json-stable-stringify-without-jsonify": { 1603 | "version": "1.0.1", 1604 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1605 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1606 | "dev": true 1607 | }, 1608 | "just-debounce": { 1609 | "version": "1.0.0", 1610 | "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", 1611 | "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", 1612 | "dev": true 1613 | }, 1614 | "kind-of": { 1615 | "version": "6.0.3", 1616 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 1617 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 1618 | "dev": true 1619 | }, 1620 | "last-run": { 1621 | "version": "1.1.1", 1622 | "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", 1623 | "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", 1624 | "dev": true, 1625 | "requires": { 1626 | "default-resolution": "^2.0.0", 1627 | "es6-weak-map": "^2.0.1" 1628 | } 1629 | }, 1630 | "lazystream": { 1631 | "version": "1.0.0", 1632 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", 1633 | "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", 1634 | "dev": true, 1635 | "requires": { 1636 | "readable-stream": "^2.0.5" 1637 | } 1638 | }, 1639 | "lcid": { 1640 | "version": "1.0.0", 1641 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", 1642 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", 1643 | "dev": true, 1644 | "requires": { 1645 | "invert-kv": "^1.0.0" 1646 | } 1647 | }, 1648 | "lead": { 1649 | "version": "1.0.0", 1650 | "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", 1651 | "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", 1652 | "dev": true, 1653 | "requires": { 1654 | "flush-write-stream": "^1.0.2" 1655 | } 1656 | }, 1657 | "liftoff": { 1658 | "version": "3.1.0", 1659 | "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", 1660 | "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", 1661 | "dev": true, 1662 | "requires": { 1663 | "extend": "^3.0.0", 1664 | "findup-sync": "^3.0.0", 1665 | "fined": "^1.0.1", 1666 | "flagged-respawn": "^1.0.0", 1667 | "is-plain-object": "^2.0.4", 1668 | "object.map": "^1.0.0", 1669 | "rechoir": "^0.6.2", 1670 | "resolve": "^1.1.7" 1671 | } 1672 | }, 1673 | "load-json-file": { 1674 | "version": "1.1.0", 1675 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 1676 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 1677 | "dev": true, 1678 | "requires": { 1679 | "graceful-fs": "^4.1.2", 1680 | "parse-json": "^2.2.0", 1681 | "pify": "^2.0.0", 1682 | "pinkie-promise": "^2.0.0", 1683 | "strip-bom": "^2.0.0" 1684 | } 1685 | }, 1686 | "make-iterator": { 1687 | "version": "1.0.1", 1688 | "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", 1689 | "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", 1690 | "dev": true, 1691 | "requires": { 1692 | "kind-of": "^6.0.2" 1693 | } 1694 | }, 1695 | "map-cache": { 1696 | "version": "0.2.2", 1697 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 1698 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 1699 | "dev": true 1700 | }, 1701 | "map-visit": { 1702 | "version": "1.0.0", 1703 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 1704 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 1705 | "dev": true, 1706 | "requires": { 1707 | "object-visit": "^1.0.0" 1708 | } 1709 | }, 1710 | "matchdep": { 1711 | "version": "2.0.0", 1712 | "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", 1713 | "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", 1714 | "dev": true, 1715 | "requires": { 1716 | "findup-sync": "^2.0.0", 1717 | "micromatch": "^3.0.4", 1718 | "resolve": "^1.4.0", 1719 | "stack-trace": "0.0.10" 1720 | }, 1721 | "dependencies": { 1722 | "findup-sync": { 1723 | "version": "2.0.0", 1724 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", 1725 | "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", 1726 | "dev": true, 1727 | "requires": { 1728 | "detect-file": "^1.0.0", 1729 | "is-glob": "^3.1.0", 1730 | "micromatch": "^3.0.4", 1731 | "resolve-dir": "^1.0.1" 1732 | } 1733 | }, 1734 | "is-glob": { 1735 | "version": "3.1.0", 1736 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 1737 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 1738 | "dev": true, 1739 | "requires": { 1740 | "is-extglob": "^2.1.0" 1741 | } 1742 | } 1743 | } 1744 | }, 1745 | "micromatch": { 1746 | "version": "3.1.10", 1747 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 1748 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 1749 | "dev": true, 1750 | "requires": { 1751 | "arr-diff": "^4.0.0", 1752 | "array-unique": "^0.3.2", 1753 | "braces": "^2.3.1", 1754 | "define-property": "^2.0.2", 1755 | "extend-shallow": "^3.0.2", 1756 | "extglob": "^2.0.4", 1757 | "fragment-cache": "^0.2.1", 1758 | "kind-of": "^6.0.2", 1759 | "nanomatch": "^1.2.9", 1760 | "object.pick": "^1.3.0", 1761 | "regex-not": "^1.0.0", 1762 | "snapdragon": "^0.8.1", 1763 | "to-regex": "^3.0.2" 1764 | } 1765 | }, 1766 | "minimatch": { 1767 | "version": "3.0.4", 1768 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1769 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1770 | "dev": true, 1771 | "requires": { 1772 | "brace-expansion": "^1.1.7" 1773 | } 1774 | }, 1775 | "mixin-deep": { 1776 | "version": "1.3.2", 1777 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 1778 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 1779 | "dev": true, 1780 | "requires": { 1781 | "for-in": "^1.0.2", 1782 | "is-extendable": "^1.0.1" 1783 | }, 1784 | "dependencies": { 1785 | "is-extendable": { 1786 | "version": "1.0.1", 1787 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1788 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1789 | "dev": true, 1790 | "requires": { 1791 | "is-plain-object": "^2.0.4" 1792 | } 1793 | } 1794 | } 1795 | }, 1796 | "ms": { 1797 | "version": "2.0.0", 1798 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1799 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1800 | "dev": true 1801 | }, 1802 | "mute-stdout": { 1803 | "version": "1.0.1", 1804 | "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", 1805 | "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", 1806 | "dev": true 1807 | }, 1808 | "nan": { 1809 | "version": "2.14.2", 1810 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", 1811 | "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", 1812 | "dev": true, 1813 | "optional": true 1814 | }, 1815 | "nanomatch": { 1816 | "version": "1.2.13", 1817 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 1818 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 1819 | "dev": true, 1820 | "requires": { 1821 | "arr-diff": "^4.0.0", 1822 | "array-unique": "^0.3.2", 1823 | "define-property": "^2.0.2", 1824 | "extend-shallow": "^3.0.2", 1825 | "fragment-cache": "^0.2.1", 1826 | "is-windows": "^1.0.2", 1827 | "kind-of": "^6.0.2", 1828 | "object.pick": "^1.3.0", 1829 | "regex-not": "^1.0.0", 1830 | "snapdragon": "^0.8.1", 1831 | "to-regex": "^3.0.1" 1832 | } 1833 | }, 1834 | "next-tick": { 1835 | "version": "1.0.0", 1836 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 1837 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", 1838 | "dev": true 1839 | }, 1840 | "normalize-package-data": { 1841 | "version": "2.5.0", 1842 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1843 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1844 | "dev": true, 1845 | "requires": { 1846 | "hosted-git-info": "^2.1.4", 1847 | "resolve": "^1.10.0", 1848 | "semver": "2 || 3 || 4 || 5", 1849 | "validate-npm-package-license": "^3.0.1" 1850 | } 1851 | }, 1852 | "normalize-path": { 1853 | "version": "3.0.0", 1854 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1855 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1856 | "dev": true 1857 | }, 1858 | "now-and-later": { 1859 | "version": "2.0.1", 1860 | "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", 1861 | "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", 1862 | "dev": true, 1863 | "requires": { 1864 | "once": "^1.3.2" 1865 | } 1866 | }, 1867 | "number-is-nan": { 1868 | "version": "1.0.1", 1869 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1870 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 1871 | "dev": true 1872 | }, 1873 | "object-copy": { 1874 | "version": "0.1.0", 1875 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 1876 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 1877 | "dev": true, 1878 | "requires": { 1879 | "copy-descriptor": "^0.1.0", 1880 | "define-property": "^0.2.5", 1881 | "kind-of": "^3.0.3" 1882 | }, 1883 | "dependencies": { 1884 | "define-property": { 1885 | "version": "0.2.5", 1886 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1887 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1888 | "dev": true, 1889 | "requires": { 1890 | "is-descriptor": "^0.1.0" 1891 | } 1892 | }, 1893 | "kind-of": { 1894 | "version": "3.2.2", 1895 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1896 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1897 | "dev": true, 1898 | "requires": { 1899 | "is-buffer": "^1.1.5" 1900 | } 1901 | } 1902 | } 1903 | }, 1904 | "object-inspect": { 1905 | "version": "1.8.0", 1906 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", 1907 | "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", 1908 | "dev": true 1909 | }, 1910 | "object-keys": { 1911 | "version": "1.1.1", 1912 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1913 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1914 | "dev": true 1915 | }, 1916 | "object-visit": { 1917 | "version": "1.0.1", 1918 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 1919 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 1920 | "dev": true, 1921 | "requires": { 1922 | "isobject": "^3.0.0" 1923 | } 1924 | }, 1925 | "object.assign": { 1926 | "version": "4.1.1", 1927 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", 1928 | "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", 1929 | "dev": true, 1930 | "requires": { 1931 | "define-properties": "^1.1.3", 1932 | "es-abstract": "^1.18.0-next.0", 1933 | "has-symbols": "^1.0.1", 1934 | "object-keys": "^1.1.1" 1935 | } 1936 | }, 1937 | "object.defaults": { 1938 | "version": "1.1.0", 1939 | "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 1940 | "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 1941 | "dev": true, 1942 | "requires": { 1943 | "array-each": "^1.0.1", 1944 | "array-slice": "^1.0.0", 1945 | "for-own": "^1.0.0", 1946 | "isobject": "^3.0.0" 1947 | } 1948 | }, 1949 | "object.map": { 1950 | "version": "1.0.1", 1951 | "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", 1952 | "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", 1953 | "dev": true, 1954 | "requires": { 1955 | "for-own": "^1.0.0", 1956 | "make-iterator": "^1.0.0" 1957 | } 1958 | }, 1959 | "object.pick": { 1960 | "version": "1.3.0", 1961 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 1962 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 1963 | "dev": true, 1964 | "requires": { 1965 | "isobject": "^3.0.1" 1966 | } 1967 | }, 1968 | "object.reduce": { 1969 | "version": "1.0.1", 1970 | "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", 1971 | "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", 1972 | "dev": true, 1973 | "requires": { 1974 | "for-own": "^1.0.0", 1975 | "make-iterator": "^1.0.0" 1976 | } 1977 | }, 1978 | "once": { 1979 | "version": "1.4.0", 1980 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1981 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1982 | "dev": true, 1983 | "requires": { 1984 | "wrappy": "1" 1985 | } 1986 | }, 1987 | "ordered-read-streams": { 1988 | "version": "1.0.1", 1989 | "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", 1990 | "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", 1991 | "dev": true, 1992 | "requires": { 1993 | "readable-stream": "^2.0.1" 1994 | } 1995 | }, 1996 | "os-locale": { 1997 | "version": "1.4.0", 1998 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", 1999 | "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", 2000 | "dev": true, 2001 | "requires": { 2002 | "lcid": "^1.0.0" 2003 | } 2004 | }, 2005 | "parse-filepath": { 2006 | "version": "1.0.2", 2007 | "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", 2008 | "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", 2009 | "dev": true, 2010 | "requires": { 2011 | "is-absolute": "^1.0.0", 2012 | "map-cache": "^0.2.0", 2013 | "path-root": "^0.1.1" 2014 | } 2015 | }, 2016 | "parse-json": { 2017 | "version": "2.2.0", 2018 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2019 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 2020 | "dev": true, 2021 | "requires": { 2022 | "error-ex": "^1.2.0" 2023 | } 2024 | }, 2025 | "parse-node-version": { 2026 | "version": "1.0.1", 2027 | "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", 2028 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", 2029 | "dev": true 2030 | }, 2031 | "parse-passwd": { 2032 | "version": "1.0.0", 2033 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 2034 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", 2035 | "dev": true 2036 | }, 2037 | "pascalcase": { 2038 | "version": "0.1.1", 2039 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 2040 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 2041 | "dev": true 2042 | }, 2043 | "path-dirname": { 2044 | "version": "1.0.2", 2045 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 2046 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 2047 | "dev": true 2048 | }, 2049 | "path-exists": { 2050 | "version": "2.1.0", 2051 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 2052 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 2053 | "dev": true, 2054 | "requires": { 2055 | "pinkie-promise": "^2.0.0" 2056 | } 2057 | }, 2058 | "path-is-absolute": { 2059 | "version": "1.0.1", 2060 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2061 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2062 | "dev": true 2063 | }, 2064 | "path-parse": { 2065 | "version": "1.0.6", 2066 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2067 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 2068 | "dev": true 2069 | }, 2070 | "path-root": { 2071 | "version": "0.1.1", 2072 | "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 2073 | "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 2074 | "dev": true, 2075 | "requires": { 2076 | "path-root-regex": "^0.1.0" 2077 | } 2078 | }, 2079 | "path-root-regex": { 2080 | "version": "0.1.2", 2081 | "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 2082 | "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", 2083 | "dev": true 2084 | }, 2085 | "path-type": { 2086 | "version": "1.1.0", 2087 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 2088 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 2089 | "dev": true, 2090 | "requires": { 2091 | "graceful-fs": "^4.1.2", 2092 | "pify": "^2.0.0", 2093 | "pinkie-promise": "^2.0.0" 2094 | } 2095 | }, 2096 | "pify": { 2097 | "version": "2.3.0", 2098 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2099 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2100 | "dev": true 2101 | }, 2102 | "pinkie": { 2103 | "version": "2.0.4", 2104 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 2105 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 2106 | "dev": true 2107 | }, 2108 | "pinkie-promise": { 2109 | "version": "2.0.1", 2110 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 2111 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 2112 | "dev": true, 2113 | "requires": { 2114 | "pinkie": "^2.0.0" 2115 | } 2116 | }, 2117 | "posix-character-classes": { 2118 | "version": "0.1.1", 2119 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 2120 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 2121 | "dev": true 2122 | }, 2123 | "pretty-hrtime": { 2124 | "version": "1.0.3", 2125 | "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", 2126 | "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", 2127 | "dev": true 2128 | }, 2129 | "process-nextick-args": { 2130 | "version": "2.0.1", 2131 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2132 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 2133 | "dev": true 2134 | }, 2135 | "pump": { 2136 | "version": "2.0.1", 2137 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 2138 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 2139 | "dev": true, 2140 | "requires": { 2141 | "end-of-stream": "^1.1.0", 2142 | "once": "^1.3.1" 2143 | } 2144 | }, 2145 | "pumpify": { 2146 | "version": "1.5.1", 2147 | "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", 2148 | "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", 2149 | "dev": true, 2150 | "requires": { 2151 | "duplexify": "^3.6.0", 2152 | "inherits": "^2.0.3", 2153 | "pump": "^2.0.0" 2154 | } 2155 | }, 2156 | "read-pkg": { 2157 | "version": "1.1.0", 2158 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 2159 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 2160 | "dev": true, 2161 | "requires": { 2162 | "load-json-file": "^1.0.0", 2163 | "normalize-package-data": "^2.3.2", 2164 | "path-type": "^1.0.0" 2165 | } 2166 | }, 2167 | "read-pkg-up": { 2168 | "version": "1.0.1", 2169 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 2170 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 2171 | "dev": true, 2172 | "requires": { 2173 | "find-up": "^1.0.0", 2174 | "read-pkg": "^1.0.0" 2175 | } 2176 | }, 2177 | "readable-stream": { 2178 | "version": "2.3.7", 2179 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2180 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2181 | "dev": true, 2182 | "requires": { 2183 | "core-util-is": "~1.0.0", 2184 | "inherits": "~2.0.3", 2185 | "isarray": "~1.0.0", 2186 | "process-nextick-args": "~2.0.0", 2187 | "safe-buffer": "~5.1.1", 2188 | "string_decoder": "~1.1.1", 2189 | "util-deprecate": "~1.0.1" 2190 | } 2191 | }, 2192 | "readdirp": { 2193 | "version": "2.2.1", 2194 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", 2195 | "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", 2196 | "dev": true, 2197 | "requires": { 2198 | "graceful-fs": "^4.1.11", 2199 | "micromatch": "^3.1.10", 2200 | "readable-stream": "^2.0.2" 2201 | } 2202 | }, 2203 | "rechoir": { 2204 | "version": "0.6.2", 2205 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 2206 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 2207 | "dev": true, 2208 | "requires": { 2209 | "resolve": "^1.1.6" 2210 | } 2211 | }, 2212 | "regex-not": { 2213 | "version": "1.0.2", 2214 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 2215 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 2216 | "dev": true, 2217 | "requires": { 2218 | "extend-shallow": "^3.0.2", 2219 | "safe-regex": "^1.1.0" 2220 | } 2221 | }, 2222 | "remove-bom-buffer": { 2223 | "version": "3.0.0", 2224 | "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", 2225 | "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", 2226 | "dev": true, 2227 | "requires": { 2228 | "is-buffer": "^1.1.5", 2229 | "is-utf8": "^0.2.1" 2230 | } 2231 | }, 2232 | "remove-bom-stream": { 2233 | "version": "1.2.0", 2234 | "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", 2235 | "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", 2236 | "dev": true, 2237 | "requires": { 2238 | "remove-bom-buffer": "^3.0.0", 2239 | "safe-buffer": "^5.1.0", 2240 | "through2": "^2.0.3" 2241 | } 2242 | }, 2243 | "remove-trailing-separator": { 2244 | "version": "1.1.0", 2245 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2246 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 2247 | "dev": true 2248 | }, 2249 | "repeat-element": { 2250 | "version": "1.1.3", 2251 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 2252 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 2253 | "dev": true 2254 | }, 2255 | "repeat-string": { 2256 | "version": "1.6.1", 2257 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2258 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2259 | "dev": true 2260 | }, 2261 | "replace-ext": { 2262 | "version": "1.0.1", 2263 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", 2264 | "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", 2265 | "dev": true 2266 | }, 2267 | "replace-homedir": { 2268 | "version": "1.0.0", 2269 | "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", 2270 | "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", 2271 | "dev": true, 2272 | "requires": { 2273 | "homedir-polyfill": "^1.0.1", 2274 | "is-absolute": "^1.0.0", 2275 | "remove-trailing-separator": "^1.1.0" 2276 | } 2277 | }, 2278 | "require-directory": { 2279 | "version": "2.1.1", 2280 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2281 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 2282 | "dev": true 2283 | }, 2284 | "require-main-filename": { 2285 | "version": "1.0.1", 2286 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", 2287 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", 2288 | "dev": true 2289 | }, 2290 | "resolve": { 2291 | "version": "1.17.0", 2292 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 2293 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 2294 | "dev": true, 2295 | "requires": { 2296 | "path-parse": "^1.0.6" 2297 | } 2298 | }, 2299 | "resolve-dir": { 2300 | "version": "1.0.1", 2301 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", 2302 | "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", 2303 | "dev": true, 2304 | "requires": { 2305 | "expand-tilde": "^2.0.0", 2306 | "global-modules": "^1.0.0" 2307 | } 2308 | }, 2309 | "resolve-options": { 2310 | "version": "1.1.0", 2311 | "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", 2312 | "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", 2313 | "dev": true, 2314 | "requires": { 2315 | "value-or-function": "^3.0.0" 2316 | } 2317 | }, 2318 | "resolve-url": { 2319 | "version": "0.2.1", 2320 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 2321 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 2322 | "dev": true 2323 | }, 2324 | "ret": { 2325 | "version": "0.1.15", 2326 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 2327 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 2328 | "dev": true 2329 | }, 2330 | "safe-buffer": { 2331 | "version": "5.1.2", 2332 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2333 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2334 | "dev": true 2335 | }, 2336 | "safe-regex": { 2337 | "version": "1.1.0", 2338 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 2339 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 2340 | "dev": true, 2341 | "requires": { 2342 | "ret": "~0.1.10" 2343 | } 2344 | }, 2345 | "semver": { 2346 | "version": "5.7.1", 2347 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2348 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2349 | "dev": true 2350 | }, 2351 | "semver-greatest-satisfied-range": { 2352 | "version": "1.1.0", 2353 | "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", 2354 | "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", 2355 | "dev": true, 2356 | "requires": { 2357 | "sver-compat": "^1.5.0" 2358 | } 2359 | }, 2360 | "set-blocking": { 2361 | "version": "2.0.0", 2362 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2363 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 2364 | "dev": true 2365 | }, 2366 | "set-value": { 2367 | "version": "2.0.1", 2368 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", 2369 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", 2370 | "dev": true, 2371 | "requires": { 2372 | "extend-shallow": "^2.0.1", 2373 | "is-extendable": "^0.1.1", 2374 | "is-plain-object": "^2.0.3", 2375 | "split-string": "^3.0.1" 2376 | }, 2377 | "dependencies": { 2378 | "extend-shallow": { 2379 | "version": "2.0.1", 2380 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2381 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2382 | "dev": true, 2383 | "requires": { 2384 | "is-extendable": "^0.1.0" 2385 | } 2386 | } 2387 | } 2388 | }, 2389 | "snapdragon": { 2390 | "version": "0.8.2", 2391 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 2392 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 2393 | "dev": true, 2394 | "requires": { 2395 | "base": "^0.11.1", 2396 | "debug": "^2.2.0", 2397 | "define-property": "^0.2.5", 2398 | "extend-shallow": "^2.0.1", 2399 | "map-cache": "^0.2.2", 2400 | "source-map": "^0.5.6", 2401 | "source-map-resolve": "^0.5.0", 2402 | "use": "^3.1.0" 2403 | }, 2404 | "dependencies": { 2405 | "define-property": { 2406 | "version": "0.2.5", 2407 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2408 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2409 | "dev": true, 2410 | "requires": { 2411 | "is-descriptor": "^0.1.0" 2412 | } 2413 | }, 2414 | "extend-shallow": { 2415 | "version": "2.0.1", 2416 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2417 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2418 | "dev": true, 2419 | "requires": { 2420 | "is-extendable": "^0.1.0" 2421 | } 2422 | } 2423 | } 2424 | }, 2425 | "snapdragon-node": { 2426 | "version": "2.1.1", 2427 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 2428 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 2429 | "dev": true, 2430 | "requires": { 2431 | "define-property": "^1.0.0", 2432 | "isobject": "^3.0.0", 2433 | "snapdragon-util": "^3.0.1" 2434 | }, 2435 | "dependencies": { 2436 | "define-property": { 2437 | "version": "1.0.0", 2438 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 2439 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 2440 | "dev": true, 2441 | "requires": { 2442 | "is-descriptor": "^1.0.0" 2443 | } 2444 | }, 2445 | "is-accessor-descriptor": { 2446 | "version": "1.0.0", 2447 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 2448 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 2449 | "dev": true, 2450 | "requires": { 2451 | "kind-of": "^6.0.0" 2452 | } 2453 | }, 2454 | "is-data-descriptor": { 2455 | "version": "1.0.0", 2456 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 2457 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 2458 | "dev": true, 2459 | "requires": { 2460 | "kind-of": "^6.0.0" 2461 | } 2462 | }, 2463 | "is-descriptor": { 2464 | "version": "1.0.2", 2465 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 2466 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 2467 | "dev": true, 2468 | "requires": { 2469 | "is-accessor-descriptor": "^1.0.0", 2470 | "is-data-descriptor": "^1.0.0", 2471 | "kind-of": "^6.0.2" 2472 | } 2473 | } 2474 | } 2475 | }, 2476 | "snapdragon-util": { 2477 | "version": "3.0.1", 2478 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 2479 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 2480 | "dev": true, 2481 | "requires": { 2482 | "kind-of": "^3.2.0" 2483 | }, 2484 | "dependencies": { 2485 | "kind-of": { 2486 | "version": "3.2.2", 2487 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2488 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2489 | "dev": true, 2490 | "requires": { 2491 | "is-buffer": "^1.1.5" 2492 | } 2493 | } 2494 | } 2495 | }, 2496 | "source-map": { 2497 | "version": "0.5.7", 2498 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2499 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2500 | "dev": true 2501 | }, 2502 | "source-map-resolve": { 2503 | "version": "0.5.3", 2504 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", 2505 | "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", 2506 | "dev": true, 2507 | "requires": { 2508 | "atob": "^2.1.2", 2509 | "decode-uri-component": "^0.2.0", 2510 | "resolve-url": "^0.2.1", 2511 | "source-map-url": "^0.4.0", 2512 | "urix": "^0.1.0" 2513 | } 2514 | }, 2515 | "source-map-url": { 2516 | "version": "0.4.0", 2517 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 2518 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 2519 | "dev": true 2520 | }, 2521 | "sparkles": { 2522 | "version": "1.0.1", 2523 | "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", 2524 | "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", 2525 | "dev": true 2526 | }, 2527 | "spdx-correct": { 2528 | "version": "3.1.1", 2529 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 2530 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 2531 | "dev": true, 2532 | "requires": { 2533 | "spdx-expression-parse": "^3.0.0", 2534 | "spdx-license-ids": "^3.0.0" 2535 | } 2536 | }, 2537 | "spdx-exceptions": { 2538 | "version": "2.3.0", 2539 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 2540 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 2541 | "dev": true 2542 | }, 2543 | "spdx-expression-parse": { 2544 | "version": "3.0.1", 2545 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 2546 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 2547 | "dev": true, 2548 | "requires": { 2549 | "spdx-exceptions": "^2.1.0", 2550 | "spdx-license-ids": "^3.0.0" 2551 | } 2552 | }, 2553 | "spdx-license-ids": { 2554 | "version": "3.0.6", 2555 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", 2556 | "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", 2557 | "dev": true 2558 | }, 2559 | "split-string": { 2560 | "version": "3.1.0", 2561 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 2562 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 2563 | "dev": true, 2564 | "requires": { 2565 | "extend-shallow": "^3.0.0" 2566 | } 2567 | }, 2568 | "stack-trace": { 2569 | "version": "0.0.10", 2570 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 2571 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", 2572 | "dev": true 2573 | }, 2574 | "static-extend": { 2575 | "version": "0.1.2", 2576 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 2577 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 2578 | "dev": true, 2579 | "requires": { 2580 | "define-property": "^0.2.5", 2581 | "object-copy": "^0.1.0" 2582 | }, 2583 | "dependencies": { 2584 | "define-property": { 2585 | "version": "0.2.5", 2586 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2587 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2588 | "dev": true, 2589 | "requires": { 2590 | "is-descriptor": "^0.1.0" 2591 | } 2592 | } 2593 | } 2594 | }, 2595 | "stream-exhaust": { 2596 | "version": "1.0.2", 2597 | "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", 2598 | "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", 2599 | "dev": true 2600 | }, 2601 | "stream-shift": { 2602 | "version": "1.0.1", 2603 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", 2604 | "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", 2605 | "dev": true 2606 | }, 2607 | "string-width": { 2608 | "version": "1.0.2", 2609 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 2610 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 2611 | "dev": true, 2612 | "requires": { 2613 | "code-point-at": "^1.0.0", 2614 | "is-fullwidth-code-point": "^1.0.0", 2615 | "strip-ansi": "^3.0.0" 2616 | } 2617 | }, 2618 | "string.prototype.trimend": { 2619 | "version": "1.0.1", 2620 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", 2621 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", 2622 | "dev": true, 2623 | "requires": { 2624 | "define-properties": "^1.1.3", 2625 | "es-abstract": "^1.17.5" 2626 | }, 2627 | "dependencies": { 2628 | "es-abstract": { 2629 | "version": "1.17.7", 2630 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", 2631 | "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", 2632 | "dev": true, 2633 | "requires": { 2634 | "es-to-primitive": "^1.2.1", 2635 | "function-bind": "^1.1.1", 2636 | "has": "^1.0.3", 2637 | "has-symbols": "^1.0.1", 2638 | "is-callable": "^1.2.2", 2639 | "is-regex": "^1.1.1", 2640 | "object-inspect": "^1.8.0", 2641 | "object-keys": "^1.1.1", 2642 | "object.assign": "^4.1.1", 2643 | "string.prototype.trimend": "^1.0.1", 2644 | "string.prototype.trimstart": "^1.0.1" 2645 | } 2646 | } 2647 | } 2648 | }, 2649 | "string.prototype.trimstart": { 2650 | "version": "1.0.1", 2651 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", 2652 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", 2653 | "dev": true, 2654 | "requires": { 2655 | "define-properties": "^1.1.3", 2656 | "es-abstract": "^1.17.5" 2657 | }, 2658 | "dependencies": { 2659 | "es-abstract": { 2660 | "version": "1.17.7", 2661 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", 2662 | "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", 2663 | "dev": true, 2664 | "requires": { 2665 | "es-to-primitive": "^1.2.1", 2666 | "function-bind": "^1.1.1", 2667 | "has": "^1.0.3", 2668 | "has-symbols": "^1.0.1", 2669 | "is-callable": "^1.2.2", 2670 | "is-regex": "^1.1.1", 2671 | "object-inspect": "^1.8.0", 2672 | "object-keys": "^1.1.1", 2673 | "object.assign": "^4.1.1", 2674 | "string.prototype.trimend": "^1.0.1", 2675 | "string.prototype.trimstart": "^1.0.1" 2676 | } 2677 | } 2678 | } 2679 | }, 2680 | "string_decoder": { 2681 | "version": "1.1.1", 2682 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2683 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2684 | "dev": true, 2685 | "requires": { 2686 | "safe-buffer": "~5.1.0" 2687 | } 2688 | }, 2689 | "strip-ansi": { 2690 | "version": "3.0.1", 2691 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2692 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2693 | "dev": true, 2694 | "requires": { 2695 | "ansi-regex": "^2.0.0" 2696 | } 2697 | }, 2698 | "strip-bom": { 2699 | "version": "2.0.0", 2700 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 2701 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 2702 | "dev": true, 2703 | "requires": { 2704 | "is-utf8": "^0.2.0" 2705 | } 2706 | }, 2707 | "sver-compat": { 2708 | "version": "1.5.0", 2709 | "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", 2710 | "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", 2711 | "dev": true, 2712 | "requires": { 2713 | "es6-iterator": "^2.0.1", 2714 | "es6-symbol": "^3.1.1" 2715 | } 2716 | }, 2717 | "through2": { 2718 | "version": "2.0.5", 2719 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 2720 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 2721 | "dev": true, 2722 | "requires": { 2723 | "readable-stream": "~2.3.6", 2724 | "xtend": "~4.0.1" 2725 | } 2726 | }, 2727 | "through2-filter": { 2728 | "version": "3.0.0", 2729 | "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", 2730 | "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", 2731 | "dev": true, 2732 | "requires": { 2733 | "through2": "~2.0.0", 2734 | "xtend": "~4.0.0" 2735 | } 2736 | }, 2737 | "time-stamp": { 2738 | "version": "1.1.0", 2739 | "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", 2740 | "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", 2741 | "dev": true 2742 | }, 2743 | "to-absolute-glob": { 2744 | "version": "2.0.2", 2745 | "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", 2746 | "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", 2747 | "dev": true, 2748 | "requires": { 2749 | "is-absolute": "^1.0.0", 2750 | "is-negated-glob": "^1.0.0" 2751 | } 2752 | }, 2753 | "to-object-path": { 2754 | "version": "0.3.0", 2755 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 2756 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 2757 | "dev": true, 2758 | "requires": { 2759 | "kind-of": "^3.0.2" 2760 | }, 2761 | "dependencies": { 2762 | "kind-of": { 2763 | "version": "3.2.2", 2764 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2765 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2766 | "dev": true, 2767 | "requires": { 2768 | "is-buffer": "^1.1.5" 2769 | } 2770 | } 2771 | } 2772 | }, 2773 | "to-regex": { 2774 | "version": "3.0.2", 2775 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 2776 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 2777 | "dev": true, 2778 | "requires": { 2779 | "define-property": "^2.0.2", 2780 | "extend-shallow": "^3.0.2", 2781 | "regex-not": "^1.0.2", 2782 | "safe-regex": "^1.1.0" 2783 | } 2784 | }, 2785 | "to-regex-range": { 2786 | "version": "2.1.1", 2787 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 2788 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 2789 | "dev": true, 2790 | "requires": { 2791 | "is-number": "^3.0.0", 2792 | "repeat-string": "^1.6.1" 2793 | } 2794 | }, 2795 | "to-through": { 2796 | "version": "2.0.0", 2797 | "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", 2798 | "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", 2799 | "dev": true, 2800 | "requires": { 2801 | "through2": "^2.0.3" 2802 | } 2803 | }, 2804 | "type": { 2805 | "version": "1.2.0", 2806 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", 2807 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", 2808 | "dev": true 2809 | }, 2810 | "typedarray": { 2811 | "version": "0.0.6", 2812 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2813 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 2814 | "dev": true 2815 | }, 2816 | "unc-path-regex": { 2817 | "version": "0.1.2", 2818 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 2819 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 2820 | "dev": true 2821 | }, 2822 | "undertaker": { 2823 | "version": "1.3.0", 2824 | "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", 2825 | "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", 2826 | "dev": true, 2827 | "requires": { 2828 | "arr-flatten": "^1.0.1", 2829 | "arr-map": "^2.0.0", 2830 | "bach": "^1.0.0", 2831 | "collection-map": "^1.0.0", 2832 | "es6-weak-map": "^2.0.1", 2833 | "fast-levenshtein": "^1.0.0", 2834 | "last-run": "^1.1.0", 2835 | "object.defaults": "^1.0.0", 2836 | "object.reduce": "^1.0.0", 2837 | "undertaker-registry": "^1.0.0" 2838 | } 2839 | }, 2840 | "undertaker-registry": { 2841 | "version": "1.0.1", 2842 | "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", 2843 | "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", 2844 | "dev": true 2845 | }, 2846 | "union-value": { 2847 | "version": "1.0.1", 2848 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", 2849 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", 2850 | "dev": true, 2851 | "requires": { 2852 | "arr-union": "^3.1.0", 2853 | "get-value": "^2.0.6", 2854 | "is-extendable": "^0.1.1", 2855 | "set-value": "^2.0.1" 2856 | } 2857 | }, 2858 | "unique-stream": { 2859 | "version": "2.3.1", 2860 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", 2861 | "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", 2862 | "dev": true, 2863 | "requires": { 2864 | "json-stable-stringify-without-jsonify": "^1.0.1", 2865 | "through2-filter": "^3.0.0" 2866 | } 2867 | }, 2868 | "unset-value": { 2869 | "version": "1.0.0", 2870 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 2871 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 2872 | "dev": true, 2873 | "requires": { 2874 | "has-value": "^0.3.1", 2875 | "isobject": "^3.0.0" 2876 | }, 2877 | "dependencies": { 2878 | "has-value": { 2879 | "version": "0.3.1", 2880 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 2881 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 2882 | "dev": true, 2883 | "requires": { 2884 | "get-value": "^2.0.3", 2885 | "has-values": "^0.1.4", 2886 | "isobject": "^2.0.0" 2887 | }, 2888 | "dependencies": { 2889 | "isobject": { 2890 | "version": "2.1.0", 2891 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 2892 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 2893 | "dev": true, 2894 | "requires": { 2895 | "isarray": "1.0.0" 2896 | } 2897 | } 2898 | } 2899 | }, 2900 | "has-values": { 2901 | "version": "0.1.4", 2902 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 2903 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 2904 | "dev": true 2905 | } 2906 | } 2907 | }, 2908 | "upath": { 2909 | "version": "1.2.0", 2910 | "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", 2911 | "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", 2912 | "dev": true 2913 | }, 2914 | "urix": { 2915 | "version": "0.1.0", 2916 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 2917 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 2918 | "dev": true 2919 | }, 2920 | "use": { 2921 | "version": "3.1.1", 2922 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 2923 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 2924 | "dev": true 2925 | }, 2926 | "util-deprecate": { 2927 | "version": "1.0.2", 2928 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2929 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2930 | "dev": true 2931 | }, 2932 | "v8flags": { 2933 | "version": "3.2.0", 2934 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", 2935 | "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", 2936 | "dev": true, 2937 | "requires": { 2938 | "homedir-polyfill": "^1.0.1" 2939 | } 2940 | }, 2941 | "validate-npm-package-license": { 2942 | "version": "3.0.4", 2943 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2944 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2945 | "dev": true, 2946 | "requires": { 2947 | "spdx-correct": "^3.0.0", 2948 | "spdx-expression-parse": "^3.0.0" 2949 | } 2950 | }, 2951 | "value-or-function": { 2952 | "version": "3.0.0", 2953 | "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", 2954 | "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", 2955 | "dev": true 2956 | }, 2957 | "vinyl": { 2958 | "version": "2.2.1", 2959 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", 2960 | "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", 2961 | "dev": true, 2962 | "requires": { 2963 | "clone": "^2.1.1", 2964 | "clone-buffer": "^1.0.0", 2965 | "clone-stats": "^1.0.0", 2966 | "cloneable-readable": "^1.0.0", 2967 | "remove-trailing-separator": "^1.0.1", 2968 | "replace-ext": "^1.0.0" 2969 | } 2970 | }, 2971 | "vinyl-fs": { 2972 | "version": "3.0.3", 2973 | "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", 2974 | "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", 2975 | "dev": true, 2976 | "requires": { 2977 | "fs-mkdirp-stream": "^1.0.0", 2978 | "glob-stream": "^6.1.0", 2979 | "graceful-fs": "^4.0.0", 2980 | "is-valid-glob": "^1.0.0", 2981 | "lazystream": "^1.0.0", 2982 | "lead": "^1.0.0", 2983 | "object.assign": "^4.0.4", 2984 | "pumpify": "^1.3.5", 2985 | "readable-stream": "^2.3.3", 2986 | "remove-bom-buffer": "^3.0.0", 2987 | "remove-bom-stream": "^1.2.0", 2988 | "resolve-options": "^1.1.0", 2989 | "through2": "^2.0.0", 2990 | "to-through": "^2.0.0", 2991 | "value-or-function": "^3.0.0", 2992 | "vinyl": "^2.0.0", 2993 | "vinyl-sourcemap": "^1.1.0" 2994 | } 2995 | }, 2996 | "vinyl-sourcemap": { 2997 | "version": "1.1.0", 2998 | "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", 2999 | "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", 3000 | "dev": true, 3001 | "requires": { 3002 | "append-buffer": "^1.0.2", 3003 | "convert-source-map": "^1.5.0", 3004 | "graceful-fs": "^4.1.6", 3005 | "normalize-path": "^2.1.1", 3006 | "now-and-later": "^2.0.0", 3007 | "remove-bom-buffer": "^3.0.0", 3008 | "vinyl": "^2.0.0" 3009 | }, 3010 | "dependencies": { 3011 | "normalize-path": { 3012 | "version": "2.1.1", 3013 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 3014 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 3015 | "dev": true, 3016 | "requires": { 3017 | "remove-trailing-separator": "^1.0.1" 3018 | } 3019 | } 3020 | } 3021 | }, 3022 | "which": { 3023 | "version": "1.3.1", 3024 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3025 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3026 | "dev": true, 3027 | "requires": { 3028 | "isexe": "^2.0.0" 3029 | } 3030 | }, 3031 | "which-module": { 3032 | "version": "1.0.0", 3033 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", 3034 | "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", 3035 | "dev": true 3036 | }, 3037 | "wrap-ansi": { 3038 | "version": "2.1.0", 3039 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", 3040 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 3041 | "dev": true, 3042 | "requires": { 3043 | "string-width": "^1.0.1", 3044 | "strip-ansi": "^3.0.1" 3045 | } 3046 | }, 3047 | "wrappy": { 3048 | "version": "1.0.2", 3049 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3050 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3051 | "dev": true 3052 | }, 3053 | "xtend": { 3054 | "version": "4.0.2", 3055 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 3056 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 3057 | "dev": true 3058 | }, 3059 | "y18n": { 3060 | "version": "3.2.1", 3061 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", 3062 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", 3063 | "dev": true 3064 | }, 3065 | "yargs": { 3066 | "version": "7.1.1", 3067 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz", 3068 | "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==", 3069 | "dev": true, 3070 | "requires": { 3071 | "camelcase": "^3.0.0", 3072 | "cliui": "^3.2.0", 3073 | "decamelize": "^1.1.1", 3074 | "get-caller-file": "^1.0.1", 3075 | "os-locale": "^1.4.0", 3076 | "read-pkg-up": "^1.0.1", 3077 | "require-directory": "^2.1.1", 3078 | "require-main-filename": "^1.0.1", 3079 | "set-blocking": "^2.0.0", 3080 | "string-width": "^1.0.2", 3081 | "which-module": "^1.0.0", 3082 | "y18n": "^3.2.1", 3083 | "yargs-parser": "5.0.0-security.0" 3084 | } 3085 | }, 3086 | "yargs-parser": { 3087 | "version": "5.0.0-security.0", 3088 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz", 3089 | "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==", 3090 | "dev": true, 3091 | "requires": { 3092 | "camelcase": "^3.0.0", 3093 | "object.assign": "^4.1.0" 3094 | } 3095 | } 3096 | } 3097 | } 3098 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pkgtemplate", 3 | "version": "1.0.0", 4 | "description": "gulp script to manage file copies", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "Umbraco Collaborators", 10 | "license": "ISC", 11 | "private": true, 12 | "devDependencies": { 13 | "gulp": "^4.0.2" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /paths.json: -------------------------------------------------------------------------------- 1 | { 2 | "library": "src/Our.Umbraco.Matryoshka", 3 | "pluginFolder": "Our.Umbraco.Matryoshka", 4 | "site": ".website" 5 | } 6 | -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30128.74 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Our.Umbraco.Matryoshka", "Our.Umbraco.Matryoshka\Our.Umbraco.Matryoshka.csproj", "{6D0A96C6-152F-4268-8B09-EC5978833B37}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {6D0A96C6-152F-4268-8B09-EC5978833B37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {6D0A96C6-152F-4268-8B09-EC5978833B37}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {6D0A96C6-152F-4268-8B09-EC5978833B37}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {6D0A96C6-152F-4268-8B09-EC5978833B37}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {D0A3D888-4280-4B78-9E1E-91C0280FF009} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/content-interceptor.js: -------------------------------------------------------------------------------- 1 | angular.module('umbraco.services').config([ 2 | '$httpProvider', 3 | function ($httpProvider) { 4 | 5 | 6 | 7 | $httpProvider.interceptors.push(function ($q) { 8 | return { 9 | 'response': function (response) { 10 | 11 | if (response.config.url.includes("views/content/apps/content/content.html") || response.config.url.includes("doctypegrideditor.dialog.html")) { 12 | response.data = response.data.replace("umb-tabbed-content", "matryoshka-tabbed-content"); 13 | } 14 | 15 | else if (response.config.url.includes("views/member/apps/content/content.html")) { 16 | response.data = "
"; 17 | } 18 | 19 | else if (response.config.url.includes("views/media/apps/content/content.html")) { 20 | response.data = "
"; 21 | } 22 | 23 | return response; 24 | } 25 | }; 26 | }); 27 | 28 | }]); 29 | -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.directive.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 'use strict'; 3 | 4 | function tabbedContentDirective($timeout, eventsService) { 5 | 6 | function link($scope, $element, $attrs) { 7 | // Filter out native tabs without properties 8 | $scope.content.tabs = $scope.content.tabs.filter(function (tab) { 9 | return !tab.type || tab.type === 0 || tab.properties.length > 0; 10 | }); 11 | 12 | var appRootNode = $element[0]; 13 | $scope.currentTab = ""; 14 | if ($scope.content.tabs[0]) { 15 | $scope.currentTab = $scope.content.tabs[0].label; 16 | } 17 | 18 | $scope.overflowingTabs = 0; 19 | 20 | var tabNavItemsWidths = []; 21 | 22 | $timeout(function () { 23 | $element.find(".matryoshka-tab-link").each(function () { 24 | tabNavItemsWidths.push($(this).outerWidth()); 25 | }); 26 | calculateWidth(); 27 | }); 28 | 29 | function calculateWidth() { 30 | $timeout(function () { 31 | $scope.overflowingSections = 0; 32 | $scope.needTray = false; 33 | $scope.maxTabs = tabNavItemsWidths.length; 34 | 35 | // detect how many tabs we can show on the screen 36 | var tabsWidth = 0; 37 | //containerWidth = element innerWidth - 75 (umb-tab-button) + 5px for rounding issues and to prevent multilining during resizing. 38 | var containerWidth = $element.innerWidth() - 75; 39 | for (var i = 0; i <= tabNavItemsWidths.length; i++) { 40 | var tabWidth = tabNavItemsWidths[i]; 41 | tabsWidth += tabWidth; 42 | if (tabsWidth >= containerWidth) { 43 | 44 | $scope.needTray = true; 45 | $scope.maxTabs = i; 46 | $scope.overflowingTabs = $scope.maxTabs - $scope.content.tabs.length; 47 | break; 48 | } 49 | } 50 | 51 | }); 52 | } 53 | 54 | var ro = new ResizeObserver(function () { 55 | calculateWidth(); 56 | }); 57 | ro.observe(appRootNode); 58 | } 59 | 60 | function controller($scope, $element, $attrs, $timeout) { 61 | 62 | var appRootNode = $element[0]; 63 | 64 | // add form-horizontal class for <8.6 65 | var umbracoVersion = Umbraco.Sys.ServerVariables.application.version.split(".").map(v => parseInt(v)); 66 | $scope.formHorizontalClass = umbracoVersion[0] == 8 && umbracoVersion[1] < 6 ? "form-horizontal" : ""; 67 | 68 | $scope.currentTab = $scope.content.tabs[0]; 69 | 70 | this.content = $scope.content; 71 | this.activeVariant = _.find(this.content.variants, variant => { 72 | return variant.active; 73 | }); 74 | 75 | 76 | $scope.hide = function (label) { 77 | if ($scope.currentTab === label) { 78 | return false; 79 | } 80 | return true; 81 | }; 82 | 83 | // on changeTab event we change the tab so all active tab instances are synced. 84 | eventsService.on("matryoshka.tabbedContent.changedTab", function (event, args) { 85 | //broadcastEvent is false so we don't create a loop 86 | if ($scope.$parent.content?.id == args.contentId) { 87 | $scope.changeTab(args.label, false) 88 | } 89 | }); 90 | 91 | $scope.changeTab = function changeTab(label, broadcastEvent = true) { 92 | $scope.currentTab = label; 93 | $scope.scrollTo(label, 0); 94 | //if broadcastEvent is true and tabs are synced eventsService is used to broadcast event. 95 | if (broadcastEvent && $scope.syncTabs) { 96 | 97 | eventsService.emit("matryoshka.tabbedContent.changedTab", { label: label, contentId: $scope.$parent.content?.id }); 98 | } 99 | }; 100 | 101 | $scope.activeVariant = this.activeVariant; 102 | 103 | $scope.defaultVariant = _.find(this.content.variants, variant => { 104 | return variant.language.isDefault; 105 | }); 106 | 107 | $scope.unlockInvariantValue = function (property) { 108 | property.unlockInvariantValue = !property.unlockInvariantValue; 109 | }; 110 | 111 | $scope.$watch("tabbedContentForm.$dirty", 112 | function (newValue, oldValue) { 113 | if (newValue === true) { 114 | $scope.content.isDirty = true; 115 | } 116 | } 117 | ); 118 | 119 | // on syncstate event we set the syncstate to the new state for all active controllers. 120 | eventsService.on("matryoshka.tabbedContent.changedSyncState", function (event, args) { 121 | $scope.syncTabs = args.syncTabs; 122 | }); 123 | 124 | // Emits syncstate so it can be used in all active controllers. 125 | function toggleSync() { 126 | eventsService.emit("matryoshka.tabbedContent.changedSyncState", { syncTabs: !$scope.syncTabs }); 127 | } 128 | 129 | // When the splitViewChanged event is broadcasted set the variable splitview 130 | // to true if the arg contains more than one editor. 131 | $scope.$on("editors.content.splitViewChanged", function (event, args) { 132 | if (args.editors.length > 1) { 133 | $scope.splitview = true 134 | } else { 135 | $scope.splitview = false; 136 | } 137 | }); 138 | 139 | $scope.needTray = false; 140 | $scope.showTray = false; 141 | $scope.overflowingSections = 0; 142 | 143 | $scope.toggleTray = toggleTray; 144 | $scope.hideTray = hideTray; 145 | 146 | $scope.splitview = false; 147 | $scope.syncTabs = true; 148 | $scope.toggleSync = toggleSync; 149 | 150 | function toggleTray() { 151 | $scope.showTray = !$scope.showTray; 152 | } 153 | 154 | function hideTray() { 155 | $scope.showTray = false; 156 | } 157 | 158 | 159 | $scope.groupSeparators = {}; 160 | var scrollableNode = appRootNode.closest('.umb-scrollable'); 161 | scrollableNode.addEventListener('mousewheel', cancelScrollTween); 162 | 163 | function getScrollPositionFor(tab, alias) { 164 | var offset = null; 165 | var groupSeparator = null; 166 | 167 | if (alias == 0) { 168 | offset = 0; 169 | } else { 170 | var previousTab = $scope.currentTab + ""; 171 | $scope.currentTab = tab; 172 | 173 | groupSeparator = document.querySelector("#our-matryoshka-group-separator-" + alias); 174 | 175 | if (!groupSeparator) { 176 | $scope.currentTab = previousTab; 177 | offset = null; 178 | } 179 | } 180 | 181 | return $timeout(function () { 182 | if (groupSeparator) { 183 | offset = groupSeparator.closest(".umb-control-group").offsetTop; 184 | } 185 | 186 | return offset; 187 | }); 188 | } 189 | 190 | // on scrolledTo event we change the scrollposition so all active tab instances are synced. 191 | eventsService.on("matryoshka.tabbedContent.scrolledTo", function (event, args) { 192 | //broadcastEvent is false so we don't create a loop 193 | $scope.scrollTo(args.tab, args.alias, false) 194 | }); 195 | 196 | $scope.scrollTo = function (tab, alias, broadcastEvent = true) { 197 | getScrollPositionFor(tab, alias).then(function(response) { 198 | var y = response; 199 | 200 | if (alias === 0 || y !== null) { 201 | var viewportHeight = scrollableNode.clientHeight; 202 | var from = scrollableNode.scrollTop; 203 | var to = Math.min(y, scrollableNode.scrollHeight - viewportHeight); 204 | var animeObject = { _y: from }; 205 | $scope.scrollTween = anime({ 206 | targets: animeObject, 207 | _y: to, 208 | easing: 'easeOutExpo', 209 | duration: 200 + Math.min(Math.abs(to - from) / viewportHeight * 100, 400), 210 | update: function update() { 211 | scrollableNode.scrollTo(0, animeObject._y); 212 | } 213 | }); 214 | } 215 | }); 216 | //if broadcastEvent is true and tabs are synced eventsService is used to broadcast event. 217 | if (broadcastEvent && $scope.syncTabs) { 218 | eventsService.emit("matryoshka.tabbedContent.scrolledTo", { tab: tab, alias: alias }); 219 | } 220 | } 221 | function cancelScrollTween() { 222 | if ($scope.scrollTween) { 223 | $scope.scrollTween.pause(); 224 | } 225 | } 226 | 227 | $scope.content.tabs.map(function(tab) { 228 | $scope.groupSeparators[tab.label] = []; 229 | 230 | tab.properties.map(function(prop, i) { 231 | if (prop.editor == "Our.Umbraco.Matryoshka.GroupSeparator" && prop.config.anchor == "1") { 232 | $scope.groupSeparators[tab.label].push(prop); 233 | } 234 | }); 235 | }); 236 | 237 | //ensure to unregister from all dom-events 238 | $scope.$on('$destroy', function () { 239 | cancelScrollTween(); 240 | }); 241 | } 242 | 243 | var directive = { 244 | restrict: 'E', 245 | replace: true, 246 | templateUrl: '/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.html?umb_rnd=' + Umbraco.Sys.ServerVariables.application.cacheBuster, 247 | controller: controller, 248 | link: link, 249 | scope: { 250 | content: "=" 251 | } 252 | }; 253 | 254 | return directive; 255 | 256 | } 257 | 258 | angular.module('umbraco.directives').directive('matryoshkaTabbedContent', tabbedContentDirective); 259 | 260 | })(); 261 | -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.html: -------------------------------------------------------------------------------- 1 | 
2 | 3 |
4 |
    5 | 26 | 27 |
  • 28 | 29 | 30 | View more options 31 | 32 | 33 | 34 | 40 | 41 | 42 |
  • 43 |
44 | 48 |
49 |
50 | 51 |
52 | 53 |
54 | 59 | 60 |
61 | 63 | 64 |
65 | 66 |
67 |
68 | 69 |
70 | 71 | 73 | 74 | 75 | 76 |
77 |
78 | -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-val-tab.directive.js: -------------------------------------------------------------------------------- 1 | function valTab(timeout) { 2 | return { 3 | require: ['^^form', '^^valFormManager'], 4 | restrict: "A", 5 | link: function (scope, element, attr, ctrs) { 6 | 7 | var valFormManager = ctrs[1]; 8 | 9 | var tabAlias = scope.group.alias; 10 | scope.tabHasError = false; 11 | 12 | //listen for form validation changes 13 | valFormManager.onValidationStatusChanged(function (evt, args) { 14 | 15 | if (!args.form.$valid) { 16 | 17 | 18 | var tabContent = element.closest(".umb-editor").find("[data-element='group-" + tabAlias + "']"); 19 | //check if the validation messages are contained inside of this tabs 20 | 21 | if (tabContent.find(".ng-invalid").length > 0) { 22 | scope.tabHasError = true; 23 | } else { 24 | scope.tabHasError = false; 25 | } 26 | 27 | } 28 | else { 29 | scope.tabHasError = false; 30 | } 31 | 32 | }); 33 | } 34 | }; 35 | } 36 | angular.module('umbraco.directives.validation').directive("matryoshkaValTab", ['$timeout',valTab]); -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/group-separator.css: -------------------------------------------------------------------------------- 1 | .our-matryoshka-group-separator { 2 | position: relative; 3 | overflow: hidden; 4 | margin: -20px -21px 0; 5 | padding: 0 1px 0; 6 | background: #f6f4f4; 7 | } 8 | 9 | umb-property:not(:first-child) .our-matryoshka-group-separator, 10 | .umb-property:not(:first-child) .our-matryoshka-group-separator { 11 | margin-top: 0; 12 | padding-top: 40px; 13 | } 14 | 15 | umb-property:not(:first-child) .our-matryoshka-group-separator:before, 16 | .umb-property:not(:first-child) .our-matryoshka-group-separator:before { 17 | content: ''; 18 | background: #fff; 19 | height: 10px; 20 | display: block; 21 | position: absolute; 22 | top: 0; 23 | left: 1px; 24 | right: 1px; 25 | border-radius: 3px; 26 | box-shadow: 0 1px 1px 0 rgba(0,0,0,.16); 27 | } 28 | 29 | .our-matryoshka-group-separator label { 30 | display: block; 31 | padding: 20px 20px 0; 32 | background: #fff; 33 | font-weight: bold; 34 | border-radius: 3px; 35 | box-shadow: 0 1px 1px 0 rgba(0,0,0,.16); 36 | margin-bottom:-1px; 37 | } 38 | 39 | .our-matryoshka-group-separator label small { 40 | color:inherit; 41 | font-weight:normal; 42 | } 43 | 44 | .blockelement-inlineblock-editor__inner .our-matryoshka-group-separator { 45 | padding: 0; 46 | background: none; 47 | padding: 12px 20px; 48 | font-weight: 700; 49 | font-size: 14px; 50 | display: flex; 51 | flex-direction: row-reverse; 52 | align-items: center; 53 | justify-content: space-between; 54 | color: #222; 55 | border-bottom: 1px solid #e9e9eb; 56 | } 57 | 58 | .umb-nested-content-property-container .our-matryoshka-group-separator { 59 | margin-top: 0; 60 | margin-bottom: -3px; 61 | padding: 5px 20px 0 0; 62 | background: none; 63 | } 64 | 65 | .blockelement-inlineblock-editor__inner umb-property .our-matryoshka-group-separator::before, 66 | .blockelement-inlineblock-editor__inner .our-matryoshka-group-separator::before { 67 | display:none; 68 | } 69 | 70 | .umb-nested-content-property-container umb-property .our-matryoshka-group-separator::before, 71 | .umb-nested-content-property-container .our-matryoshka-group-separator::before { 72 | content: ''; 73 | position: absolute; 74 | top: auto; 75 | left: auto; 76 | bottom: 0; 77 | right: 0; 78 | width: 20px; 79 | height: 20px; 80 | background-color: transparent; 81 | background-image: linear-gradient(to bottom, transparent, #f4f4f5); 82 | border-bottom: 1px solid #e9e9eb; 83 | } 84 | 85 | .blockelement-inlineblock-editor__inner .our-matryoshka-group-separator label { 86 | padding:0; 87 | background:none; 88 | border-radius:0; 89 | box-shadow:none; 90 | margin:0; 91 | } 92 | 93 | .umb-nested-content-property-container .our-matryoshka-group-separator label { 94 | background: none; 95 | border-radius: 0 6px; 96 | box-shadow: none; 97 | margin-bottom: -3px; 98 | border: 1px solid #e9e9eb; 99 | border-bottom: 0; 100 | border-left: 0; 101 | background-image: linear-gradient(to bottom, #fdfcfc, #faf9f9); 102 | } 103 | 104 | .our-matryoshka-group-separator--collapsed:not(.our-matryoshka-group-separator-container) { 105 | display:none; 106 | } 107 | 108 | .our-matryoshka-group-separator-container.our-matryoshka-group-separator--collapsed .umb-control-group { 109 | margin-bottom:0; 110 | } 111 | 112 | .our-matryoshka-group-separator-container.our-matryoshka-group-separator--collapsed .umb-control-group:after { 113 | display:none; 114 | } 115 | 116 | .our-matryoshka-group-separator-collapser { 117 | color:#1b264f; 118 | float:right; 119 | margin-right:20px; 120 | margin-top:10px; 121 | border-color:#e9e9eb !important; 122 | } 123 | 124 | .blockelement-inlineblock-editor__inner .our-matryoshka-group-separator-collapser { 125 | margin:0; 126 | } 127 | 128 | .our-matryoshka-group-separator-collapser:hover, 129 | .our-matryoshka-group-separator-collapser:focus { 130 | outline:none; 131 | color:#2152a3; 132 | background:#faf9f9; 133 | } 134 | 135 | .our-matryoshka-group-separator-container.our-matryoshka-group-separator--collapsed .our-matryoshka-group-separator-collapser--expanded, 136 | .our-matryoshka-group-separator-container:not(.our-matryoshka-group-separator--collapsed) .our-matryoshka-group-separator-collapser--collapsed { 137 | display:none; 138 | } 139 | 140 | .our-matryoshka-group-separator-container:not(.our-matryoshka-group-separator--collapsed) .our-matryoshka-group-separator-collapser--expanded, 141 | .our-matryoshka-group-separator-container.our-matryoshka-group-separator--collapsed .our-matryoshka-group-separator-collapser--collapsed { 142 | display:block; 143 | } -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/group-separator.html: -------------------------------------------------------------------------------- 1 | 
2 | 12 | 16 |
-------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/groupseparator.controller.js: -------------------------------------------------------------------------------- 1 | angular.module("umbraco").controller("Matryoshka.GroupSeparator.Controller", [ 2 | 3 | "$scope", 4 | "$timeout", 5 | "$element", 6 | "editorState", 7 | 8 | function ($scope, $timeout, $element, editorState) { 9 | var isNew = editorState.getCurrent().id == 0; 10 | 11 | var separator = $element.closest(".umb-nested-content-property-container"); 12 | if (separator.length == 0) { 13 | separator = $element.closest(".umb-property"); 14 | 15 | //Get parent of separator 16 | let separatorParent = separator.parent()[0]; 17 | 18 | //If parent of separator is the new umb-property directive assign it to separator. 19 | if (separatorParent != null && separatorParent.nodeName == "UMB-PROPERTY") { 20 | separator = $(separatorParent); 21 | } 22 | } 23 | 24 | $timeout(function() { 25 | separator.addClass("our-matryoshka-group-separator-container"); 26 | }); 27 | 28 | $scope.toggleCollapse = function() { 29 | $timeout(function() { 30 | separator.toggleClass("our-matryoshka-group-separator--collapsed"); 31 | separator.nextUntil(".our-matryoshka-group-separator-container").toggleClass("our-matryoshka-group-separator--collapsed"); 32 | }, 1); 33 | } 34 | 35 | $scope.collapsible = $scope.model.config.collapsible && $scope.model.config.collapsible.indexOf("collapsible") == 0; 36 | 37 | if (($scope.model.config.collapsible == "collapsibleOpenOnCreation" && !isNew) || $scope.model.config.collapsible == "collapsibleClosedOnLoad") { 38 | $scope.toggleCollapse(); 39 | } 40 | 41 | } 42 | ]); 43 | -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/package.manifest: -------------------------------------------------------------------------------- 1 | { 2 | "$schema" : "http://json.schemastore.org/package.manifest", 3 | "propertyEditors": [ 4 | { 5 | "alias": "Our.Umbraco.Matryoshka.GroupSeparator", 6 | "name": "Matryoshka Group Separator", 7 | "editor": { 8 | "view": "~/App_Plugins/Our.Umbraco.Matryoshka/group-separator.html", 9 | "hideLabel": true 10 | }, 11 | "prevalues": { 12 | "fields": [ 13 | { 14 | "label": "Show as anchor", 15 | "description": "Should groups starting with this separator be shown as an anchor in a dropdown menu from its tab?", 16 | "key": "anchor", 17 | "view": "boolean" 18 | }, 19 | { 20 | "label": "Collapsible", 21 | "description": "Should this group be collapsible? And what default state should they have?", 22 | "key": "collapsible", 23 | "view": "radiobuttonlist", 24 | "config": { 25 | "prevalues": [ 26 | { "value": "fixed", "label": "Fixed" }, 27 | { "value": "collapsibleOpenOnLoad", "label": "Collapsible, open on load" }, 28 | { "value": "collapsibleClosedOnLoad", "label": "Collapsible, closed on load" }, 29 | { "value": "collapsibleOpenOnCreation", "label": "Collapsible, open on creation, closed on edit" } 30 | ] 31 | } 32 | } 33 | ] 34 | }, 35 | "icon": "icon-umb-contour" 36 | }], 37 | "javascript": [ 38 | "~/App_Plugins/Our.Umbraco.Matryoshka/content-interceptor.js", 39 | "~/App_Plugins/Our.Umbraco.Matryoshka/groupseparator.controller.js", 40 | "~/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-tabbed-content.directive.js", 41 | "~/App_Plugins/Our.Umbraco.Matryoshka/directives/matryoshka-val-tab.directive.js" 42 | ], 43 | "css": [ 44 | "~/App_Plugins/Our.Umbraco.Matryoshka/group-separator.css", 45 | "~/App_Plugins/Our.Umbraco.Matryoshka/tabbed-content.css" 46 | ] 47 | } -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/App_Plugins/Our.Umbraco.Matryoshka/tabbed-content.css: -------------------------------------------------------------------------------- 1 | /* Disable adding native tabs while package is installed */ 2 | .umb-group-builder__tabs-list__add-tab, 3 | .umb-group-builder__convert-dropzone { 4 | display: none; 5 | } 6 | 7 | .matryoshka-tabbed-content .umb-group-panel { 8 | margin-bottom: 0; 9 | } 10 | 11 | .matryoshka-tabs-list-wrapper { 12 | position: sticky; 13 | top: 0; 14 | width: 100%; 15 | margin: -20px 0 0 -20px; 16 | background: #fff; 17 | padding: 0 20px; 18 | z-index: 90; 19 | } 20 | 21 | .matryoshka-tabs-syncbutton { 22 | background: none; 23 | border: none; 24 | position: absolute; 25 | display: block; 26 | top: 0; 27 | right: 0; 28 | z-index: 91; 29 | padding: 19px 10px; 30 | } 31 | 32 | .matryoshka-tabs-syncbutton:focus { 33 | outline:none; 34 | } 35 | 36 | .matryoshka-tabs-syncbutton:focus > i { 37 | border-radius: 100%; 38 | background-color: #eee; 39 | padding: 5px; 40 | margin: -3px -5px; 41 | display: inline-block; 42 | line-height: 1; 43 | } 44 | 45 | .matryoshka-tabs-list { 46 | margin: 0; 47 | padding:0; 48 | } 49 | 50 | .matryoshka-tabs-list ~ .umb-group-panel { 51 | margin-bottom: 0; 52 | } 53 | 54 | .matryoshka-tab-link { 55 | position: relative; 56 | display: inline-block; 57 | list-style: none; 58 | cursor: pointer; 59 | font-weight: 700; 60 | font-size: 15px; 61 | padding: 20px; 62 | color: #1b264f; 63 | } 64 | 65 | .matryoshka-tab-link:before { 66 | content: ""; 67 | position: absolute; 68 | bottom: 0; 69 | left: 0; 70 | right: 0; 71 | height: 0; 72 | background-color: #f6f4f4; 73 | opacity: 1; 74 | transition: all 0.3s ease-in-out 0s; 75 | } 76 | 77 | .matryoshka-tab-link:not(.active):hover, 78 | .matryoshka-tab-link:focus, 79 | .matryoshka-tab-link:focus-within > p { 80 | color: #2152a3; 81 | } 82 | 83 | .matryoshka-tab-link.active:before { 84 | opacity: 1; 85 | left: 12px; 86 | right: 12px; 87 | height: 4px; 88 | border-radius: 3px 3px 0 0; 89 | background-color: #f5c1bc; 90 | } 91 | 92 | .matryoshka-tab-link:not(.active):hover:before, 93 | .matryoshka-tab-link:not(.active):focus:before { 94 | opacity: 1; 95 | left: 12px; 96 | right: 12px; 97 | height: 4px; 98 | border-radius: 3px 3px 0 0; 99 | background-color: #e9e9eb; 100 | } 101 | 102 | .matryoshka-tab-link:focus { 103 | outline: 0; 104 | } 105 | 106 | /* Validation */ 107 | 108 | .matryoshka-tabs-list .umb-tab .icon { 109 | display: none; 110 | } 111 | 112 | .show-validation .matryoshka-tabs-list .umb-tab.hasError .icon { 113 | display: inline; 114 | position: absolute; 115 | color: #d42054; 116 | } 117 | 118 | .show-validation .matryoshka-tabs-list .umb-tab.hasError span { 119 | margin-left: 20px; 120 | } 121 | 122 | .matryoshka-tabs-list .umb-tab p { 123 | margin: 0; 124 | } 125 | 126 | /* hide the "Content" dropdown (avoid confusion) */ 127 | .dropdown-menu.umb-sub-views-nav-item__anchor_dropdown { 128 | display:none; 129 | } 130 | 131 | .matryoshka-tab-dropdown { 132 | display:none; 133 | margin-top: -1px; 134 | border-top-left-radius: 0; 135 | border-top-right-radius: 0; 136 | box-shadow: 0 3px 5px rgba(0,0,0,.15); 137 | } 138 | 139 | .matryoshka-tab-dropdown .umb-tab-button:focus { 140 | outline:none; 141 | } 142 | 143 | .matryoshka-tab-link:hover .matryoshka-tab-dropdown, 144 | .matryoshka-tab-dropdown:hover { 145 | display:block; 146 | } 147 | 148 | .matryoshka-tab-link-button { 149 | position:absolute; 150 | top:0; 151 | left:0; 152 | right:0; 153 | bottom:0; 154 | width:100%; 155 | } 156 | 157 | .matryoshka-tab-link-button:focus { 158 | outline: 0; 159 | } 160 | 161 | .matryoshka-tab-link:not(.active) > .matryoshka-tab-link-button:focus:before { 162 | content: ''; 163 | display: block; 164 | position: absolute; 165 | bottom: 0; 166 | opacity: 1; 167 | left: 12px; 168 | right: 12px; 169 | height: 4px; 170 | border-radius: 3px 3px 0 0; 171 | background-color: #e9e9eb; 172 | } 173 | 174 | .matryoshka-tabbed-content-push { 175 | height: 20px; 176 | } 177 | 178 | /* moves the Grid re-order bar down so it doesn't cover the tabs */ 179 | #umb-grid > .umb-editor-sub-header[umb-sticky-bar] { 180 | top: 60px; 181 | } 182 | 183 | /* moves down the Grid RTE sections so it doesn't cover the tabs or re-order bar*/ 184 | #umb-grid .umb-control.-active .mce-toolbar[style*="top: 177px;"] { 185 | top: 241px !important; 186 | z-index: 1000; 187 | } 188 | -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/Our.Umbraco.Matryoshka.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net472 5 | Our.Umbraco.Matryoshka 6 | 7 | true 8 | content 9 | 0.8.0 10 | Søren Kottal 11 | Matryoshka enables you to layer your document type properties in tabs and groups. It substitutes the content editor view, with its own view, to make existing groups appear as tabs, and adds a property editor, which gives the impression of groups. 12 | Copyright 2020 13 | https://github.com/skttl/our-umbraco-matryoshka 14 | icon.png 15 | https://github.com/skttl/our-umbraco-matryoshka 16 | umbraco, umbraco-cms 17 | 18 | false 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | True 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/Our.Umbraco.Matryoshka/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skttl/umbraco-matryoshka/e2b2b25c1dd7e854eb3e73cb3bcf67c069598c49/src/Our.Umbraco.Matryoshka/icon.png -------------------------------------------------------------------------------- /src/package.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Our.Umbraco.Matryoshka 6 | 0.4.0 7 | https://raw.githubusercontent.com/skttl/umbraco-matryoshka/master/docs/icon.png 8 | MIT 9 | https://github.com/skttl/our-umbraco-matryoshka 10 | 11 | 8 12 | 1 13 | 0 14 | 15 | 16 | 17 | Søren Kottal 18 | https://github.com/skttl 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | --------------------------------------------------------------------------------