diff --git a/.gitignore b/.gitignore
index 23ba01ebf0..585bd855b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -161,3 +161,4 @@ build/temp/
# eof
/src/Umbraco.Web.UI.Client/TESTS-*.xml
+/src/ApiDocs/api/*
diff --git a/build/build-docs.ps1 b/build/build-docs.ps1
new file mode 100644
index 0000000000..8cd3f090c7
--- /dev/null
+++ b/build/build-docs.ps1
@@ -0,0 +1,44 @@
+$uenv=build/build.ps1 -get
+
+$src = "$($uenv.SolutionRoot)\src"
+$tmp = $uenv.BuildTemp
+$out = $uenv.BuildOutput
+$DocFxJson = "$src\ApiDocs\docfx.json"
+$DocFxSiteOutput = "$tmp\_site\*.*"
+
+################ Do the UI docs
+$uenv.CompileBelle()
+
+"Moving to Umbraco.Web.UI.Client folder"
+cd .\src\Umbraco.Web.UI.Client
+
+"Generating the docs and waiting before executing the next commands"
+& gulp docs | Out-Null
+
+# change baseUrl
+$BaseUrl = "https://our.umbraco.com/apidocs/v8/ui/"
+$IndexPath = "./docs/api/index.html"
+(Get-Content $IndexPath).replace('location.href.replace(rUrl, indexFile)', "`'" + $BaseUrl + "`'") | Set-Content $IndexPath
+
+# zip it
+& $uenv.BuildEnv.Zip a -tzip -r "$out\ui-docs.zip" "$src\Umbraco.Web.UI.Client\docs\api\*.*"
+
+
+################ Do the c# docs
+
+# Build the solution in debug mode
+$SolutionPath = Join-Path -Path $src -ChildPath "umbraco.sln"
+#$uenv.CompileUmbraco()
+
+#restore nuget packages
+$uenv.RestoreNuGet()
+
+# run DocFx
+$DocFx = $uenv.BuildEnv.DocFx
+
+Write-Host "$DocFxJson"
+& $DocFx metadata $DocFxJson
+& $DocFx build $DocFxJson
+
+# zip it
+& $uenv.BuildEnv.Zip a -tzip -r "$out\csharp-docs.zip" $DocFxSiteOutput
diff --git a/build/build.ps1 b/build/build.ps1
index 1088da33bc..55b686c98e 100644
--- a/build/build.ps1
+++ b/build/build.ps1
@@ -11,6 +11,11 @@
[Alias("loc")]
[switch] $local = $false,
+ # enable docfx
+ [Parameter(Mandatory=$false)]
+ [Alias("doc")]
+ [switch] $docfx = $false,
+
# keep the build directories, don't clear them
[Parameter(Mandatory=$false)]
[Alias("c")]
@@ -31,7 +36,7 @@
$ubuild = &"$PSScriptRoot\build-bootstrap.ps1"
if (-not $?) { return }
$ubuild.Boot($PSScriptRoot,
- @{ Local = $local; },
+ @{ Local = $local; WithDocFx = $docfx },
@{ Continue = $continue })
if ($ubuild.OnError()) { return }
@@ -424,6 +429,53 @@
Write-Host "Prepare Azure Gallery"
$this.CopyFile("$($this.SolutionRoot)\build\Azure\azuregalleryrelease.ps1", $this.BuildOutput)
})
+
+ $ubuild.DefineMethod("PrepareCSharpDocs",
+ {
+ Write-Host "Prepare C# Documentation"
+
+ $src = "$($this.SolutionRoot)\src"
+ $tmp = $this.BuildTemp
+ $out = $this.BuildOutput
+ $DocFxJson = Join-Path -Path $src "\ApiDocs\docfx.json"
+ $DocFxSiteOutput = Join-Path -Path $tmp "\_site\*.*"
+
+
+ #restore nuget packages
+ $this.RestoreNuGet()
+ # run DocFx
+ $DocFx = $this.BuildEnv.DocFx
+
+ & $DocFx metadata $DocFxJson
+ & $DocFx build $DocFxJson
+
+ # zip it
+ & $this.BuildEnv.Zip a -tzip -r "$out\csharp-docs.zip" $DocFxSiteOutput
+ })
+
+ $ubuild.DefineMethod("PrepareAngularDocs",
+ {
+ Write-Host "Prepare Angular Documentation"
+
+ $src = "$($this.SolutionRoot)\src"
+ $out = $this.BuildOutput
+
+ $this.CompileBelle()
+
+ "Moving to Umbraco.Web.UI.Client folder"
+ cd .\src\Umbraco.Web.UI.Client
+
+ "Generating the docs and waiting before executing the next commands"
+ & gulp docs | Out-Null
+
+ # change baseUrl
+ $BaseUrl = "https://our.umbraco.com/apidocs/v8/ui/"
+ $IndexPath = "./docs/api/index.html"
+ (Get-Content $IndexPath).replace('location.href.replace(rUrl, indexFile)', "`'" + $BaseUrl + "`'") | Set-Content $IndexPath
+
+ # zip it
+ & $this.BuildEnv.Zip a -tzip -r "$out\ui-docs.zip" "$src\Umbraco.Web.UI.Client\docs\api\*.*"
+ })
$ubuild.DefineMethod("Build",
{
@@ -456,6 +508,7 @@
if ($this.OnError()) { return }
$this.PostPackageHook()
if ($this.OnError()) { return }
+
Write-Host "Done"
})
diff --git a/src/ApiDocs/docfx.json b/src/ApiDocs/docfx.json
index 520622a0e0..76677d45d5 100644
--- a/src/ApiDocs/docfx.json
+++ b/src/ApiDocs/docfx.json
@@ -2,21 +2,20 @@
"metadata": [
{
"src": [
- {
+ {
+ "src": "../",
"files": [
"Umbraco.Core/Umbraco.Core.csproj",
"Umbraco.Web/Umbraco.Web.csproj"
],
"exclude": [
"**/obj/**",
- "**/bin/**",
- "_site/**"
- ],
- "cwd": "../src"
+ "**/bin/**"
+ ]
}
],
- "dest": "../apidocs/api",
- "filter": "../apidocs/docfx.filter.yml"
+ "dest": "api",
+ "filter": "docfx.filter.yml"
}
],
"build": {
@@ -35,19 +34,7 @@
"*.md"
],
"exclude": [
- "obj/**",
- "_site/**"
- ]
- }
- ],
- "resource": [
- {
- "files": [
- "images/**"
- ],
- "exclude": [
- "obj/**",
- "_site/**"
+ "obj/**"
]
}
],
@@ -57,8 +44,7 @@
"**.md"
],
"exclude": [
- "obj/**",
- "_site/**"
+ "obj/**"
]
}
],
@@ -67,9 +53,9 @@
"_enableSearch": true,
"_disableContribution": false
},
- "dest": "_site",
+ "dest": "../../build.tmp/_site",
"template": [
"default", "umbracotemplate"
]
}
-}
\ No newline at end of file
+}
diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json
index 6cf4704622..c1c85a9688 100644
--- a/src/Umbraco.Web.UI.Client/package-lock.json
+++ b/src/Umbraco.Web.UI.Client/package-lock.json
@@ -1104,7 +1104,6 @@
"resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz",
"integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=",
"dev": true,
- "optional": true,
"requires": {
"file-type": "^3.1.0"
},
@@ -1113,8 +1112,7 @@
"version": "3.9.0",
"resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
"integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
@@ -1540,7 +1538,6 @@
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
"integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
"dev": true,
- "optional": true,
"requires": {
"readable-stream": "^2.3.5",
"safe-buffer": "^5.1.1"
@@ -1550,15 +1547,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -1574,7 +1569,6 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -1763,8 +1757,7 @@
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
- "dev": true,
- "optional": true
+ "dev": true
},
"buffer-fill": {
"version": "1.0.0",
@@ -1783,7 +1776,6 @@
"resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz",
"integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=",
"dev": true,
- "optional": true,
"requires": {
"file-type": "^3.1.0",
"readable-stream": "^2.0.2",
@@ -1795,22 +1787,19 @@
"version": "3.9.0",
"resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
"integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
- "dev": true,
- "optional": true
+ "dev": true
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -1826,7 +1815,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -1835,15 +1823,13 @@
"version": "2.0.3",
"resolved": "http://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
"integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
- "dev": true,
- "optional": true
+ "dev": true
},
"vinyl": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
- "optional": true,
"requires": {
"clone": "^1.0.0",
"clone-stats": "^0.0.1",
@@ -1949,9 +1935,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30000913",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000913.tgz",
- "integrity": "sha512-PP7Ypc35XY1mNduHqweGNOp0qfNUCmaQauGOYDByvirlFjrzRyY72pBRx7jnBidOB8zclg00DAzsy2H475BouQ==",
+ "version": "1.0.30000967",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz",
+ "integrity": "sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ==",
"dev": true
},
"canonical-path": {
@@ -1964,8 +1950,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
"integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
- "dev": true,
- "optional": true
+ "dev": true
},
"caseless": {
"version": "0.12.0",
@@ -1978,7 +1963,6 @@
"resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz",
"integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=",
"dev": true,
- "optional": true,
"requires": {
"get-proxy": "^1.0.1",
"is-obj": "^1.0.0",
@@ -1990,8 +1974,7 @@
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
"integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
@@ -2266,8 +2249,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
"integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=",
- "dev": true,
- "optional": true
+ "dev": true
},
"coa": {
"version": "2.0.1",
@@ -2391,7 +2373,6 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
"integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
"dev": true,
- "optional": true,
"requires": {
"graceful-readlink": ">= 1.0.0"
}
@@ -2604,7 +2585,6 @@
"resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
"integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
"dev": true,
- "optional": true,
"requires": {
"capture-stack-trace": "^1.0.0"
}
@@ -2859,7 +2839,6 @@
"resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz",
"integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=",
"dev": true,
- "optional": true,
"requires": {
"buffer-to-vinyl": "^1.0.0",
"concat-stream": "^1.4.6",
@@ -2877,7 +2856,6 @@
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"dev": true,
- "optional": true,
"requires": {
"arr-flatten": "^1.0.1"
}
@@ -2886,15 +2864,13 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
"integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true,
- "optional": true
+ "dev": true
},
"braces": {
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"dev": true,
- "optional": true,
"requires": {
"expand-range": "^1.8.1",
"preserve": "^0.2.0",
@@ -2906,7 +2882,6 @@
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"dev": true,
- "optional": true,
"requires": {
"is-posix-bracket": "^0.1.0"
}
@@ -2916,7 +2891,6 @@
"resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"dev": true,
- "optional": true,
"requires": {
"is-extglob": "^1.0.0"
}
@@ -2926,7 +2900,6 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
- "optional": true,
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
@@ -2940,7 +2913,6 @@
"resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
"integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
"dev": true,
- "optional": true,
"requires": {
"extend": "^3.0.0",
"glob": "^5.0.3",
@@ -2956,15 +2928,13 @@
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "1.0.34",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
@@ -2976,15 +2946,13 @@
"version": "0.10.31",
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true,
- "optional": true
+ "dev": true
},
"through2": {
"version": "0.6.5",
"resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true,
- "optional": true,
"requires": {
"readable-stream": ">=1.0.33-1 <1.1.0-0",
"xtend": ">=4.0.0 <4.1.0-0"
@@ -2996,22 +2964,19 @@
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-extglob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
"integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-glob": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
- "optional": true,
"requires": {
"is-extglob": "^1.0.0"
}
@@ -3020,15 +2985,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
- "optional": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -3038,7 +3001,6 @@
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
"dev": true,
- "optional": true,
"requires": {
"arr-diff": "^2.0.0",
"array-unique": "^0.2.1",
@@ -3059,15 +3021,13 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true,
- "optional": true
+ "dev": true
},
"ordered-read-streams": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
"integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
"dev": true,
- "optional": true,
"requires": {
"is-stream": "^1.0.1",
"readable-stream": "^2.0.1"
@@ -3078,7 +3038,6 @@
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -3094,7 +3053,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -3104,7 +3062,6 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
- "optional": true,
"requires": {
"is-utf8": "^0.2.0"
}
@@ -3114,7 +3071,6 @@
"resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
"integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
"dev": true,
- "optional": true,
"requires": {
"first-chunk-stream": "^1.0.0",
"strip-bom": "^2.0.0"
@@ -3125,7 +3081,6 @@
"resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
"integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
"dev": true,
- "optional": true,
"requires": {
"json-stable-stringify-without-jsonify": "^1.0.1",
"through2-filter": "^3.0.0"
@@ -3136,7 +3091,6 @@
"resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
"integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
"dev": true,
- "optional": true,
"requires": {
"through2": "~2.0.0",
"xtend": "~4.0.0"
@@ -3149,7 +3103,6 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
- "optional": true,
"requires": {
"clone": "^1.0.0",
"clone-stats": "^0.0.1",
@@ -3161,7 +3114,6 @@
"resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
"integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
"dev": true,
- "optional": true,
"requires": {
"duplexify": "^3.2.0",
"glob-stream": "^5.3.2",
@@ -3189,7 +3141,6 @@
"resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz",
"integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=",
"dev": true,
- "optional": true,
"requires": {
"is-tar": "^1.0.0",
"object-assign": "^2.0.0",
@@ -3203,22 +3154,19 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
"integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
"integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "1.0.34",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
@@ -3231,7 +3179,6 @@
"resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true,
- "optional": true,
"requires": {
"readable-stream": ">=1.0.33-1 <1.1.0-0",
"xtend": ">=4.0.0 <4.1.0-0"
@@ -3242,7 +3189,6 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
"integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
"dev": true,
- "optional": true,
"requires": {
"clone": "^0.2.0",
"clone-stats": "^0.0.1"
@@ -3255,7 +3201,6 @@
"resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz",
"integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=",
"dev": true,
- "optional": true,
"requires": {
"is-bzip2": "^1.0.0",
"object-assign": "^2.0.0",
@@ -3270,22 +3215,19 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
"integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
"integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "1.0.34",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
@@ -3298,7 +3240,6 @@
"resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true,
- "optional": true,
"requires": {
"readable-stream": ">=1.0.33-1 <1.1.0-0",
"xtend": ">=4.0.0 <4.1.0-0"
@@ -3309,7 +3250,6 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
"integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
"dev": true,
- "optional": true,
"requires": {
"clone": "^0.2.0",
"clone-stats": "^0.0.1"
@@ -3322,7 +3262,6 @@
"resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz",
"integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=",
"dev": true,
- "optional": true,
"requires": {
"is-gzip": "^1.0.0",
"object-assign": "^2.0.0",
@@ -3336,22 +3275,19 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
"integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
"integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "1.0.34",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
@@ -3364,7 +3300,6 @@
"resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true,
- "optional": true,
"requires": {
"readable-stream": ">=1.0.33-1 <1.1.0-0",
"xtend": ">=4.0.0 <4.1.0-0"
@@ -3375,7 +3310,6 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
"integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
"dev": true,
- "optional": true,
"requires": {
"clone": "^0.2.0",
"clone-stats": "^0.0.1"
@@ -3388,7 +3322,6 @@
"resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz",
"integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=",
"dev": true,
- "optional": true,
"requires": {
"is-zip": "^1.0.0",
"read-all-stream": "^3.0.0",
@@ -3404,7 +3337,6 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
- "optional": true,
"requires": {
"clone": "^1.0.0",
"clone-stats": "^0.0.1",
@@ -3417,8 +3349,7 @@
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true,
- "optional": true
+ "dev": true
},
"deep-is": {
"version": "0.1.3",
@@ -3637,7 +3568,6 @@
"resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz",
"integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=",
"dev": true,
- "optional": true,
"requires": {
"caw": "^1.0.1",
"concat-stream": "^1.4.7",
@@ -3661,7 +3591,6 @@
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"dev": true,
- "optional": true,
"requires": {
"arr-flatten": "^1.0.1"
}
@@ -3670,15 +3599,13 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
"integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true,
- "optional": true
+ "dev": true
},
"braces": {
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"dev": true,
- "optional": true,
"requires": {
"expand-range": "^1.8.1",
"preserve": "^0.2.0",
@@ -3690,7 +3617,6 @@
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"dev": true,
- "optional": true,
"requires": {
"is-posix-bracket": "^0.1.0"
}
@@ -3700,7 +3626,6 @@
"resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"dev": true,
- "optional": true,
"requires": {
"is-extglob": "^1.0.0"
}
@@ -3710,7 +3635,6 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
- "optional": true,
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
@@ -3724,7 +3648,6 @@
"resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
"integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
"dev": true,
- "optional": true,
"requires": {
"extend": "^3.0.0",
"glob": "^5.0.3",
@@ -3740,15 +3663,13 @@
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "1.0.34",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
@@ -3760,15 +3681,13 @@
"version": "0.10.31",
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true,
- "optional": true
+ "dev": true
},
"through2": {
"version": "0.6.5",
"resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true,
- "optional": true,
"requires": {
"readable-stream": ">=1.0.33-1 <1.1.0-0",
"xtend": ">=4.0.0 <4.1.0-0"
@@ -3780,22 +3699,19 @@
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-extglob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
"integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-glob": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
- "optional": true,
"requires": {
"is-extglob": "^1.0.0"
}
@@ -3804,15 +3720,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
- "optional": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -3822,7 +3736,6 @@
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
"dev": true,
- "optional": true,
"requires": {
"arr-diff": "^2.0.0",
"array-unique": "^0.2.1",
@@ -3843,15 +3756,13 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true,
- "optional": true
+ "dev": true
},
"ordered-read-streams": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
"integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
"dev": true,
- "optional": true,
"requires": {
"is-stream": "^1.0.1",
"readable-stream": "^2.0.1"
@@ -3862,7 +3773,6 @@
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -3878,7 +3788,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -3888,7 +3797,6 @@
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
- "optional": true,
"requires": {
"is-utf8": "^0.2.0"
}
@@ -3898,7 +3806,6 @@
"resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
"integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
"dev": true,
- "optional": true,
"requires": {
"first-chunk-stream": "^1.0.0",
"strip-bom": "^2.0.0"
@@ -3909,7 +3816,6 @@
"resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
"integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
"dev": true,
- "optional": true,
"requires": {
"json-stable-stringify-without-jsonify": "^1.0.1",
"through2-filter": "^3.0.0"
@@ -3920,7 +3826,6 @@
"resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
"integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
"dev": true,
- "optional": true,
"requires": {
"through2": "~2.0.0",
"xtend": "~4.0.0"
@@ -3933,7 +3838,6 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
- "optional": true,
"requires": {
"clone": "^1.0.0",
"clone-stats": "^0.0.1",
@@ -3945,7 +3849,6 @@
"resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
"integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
"dev": true,
- "optional": true,
"requires": {
"duplexify": "^3.2.0",
"glob-stream": "^5.3.2",
@@ -3988,7 +3891,6 @@
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz",
"integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==",
"dev": true,
- "optional": true,
"requires": {
"end-of-stream": "^1.0.0",
"inherits": "^2.0.1",
@@ -4001,7 +3903,6 @@
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
"dev": true,
- "optional": true,
"requires": {
"once": "^1.4.0"
}
@@ -4010,15 +3911,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
- "optional": true,
"requires": {
"wrappy": "1"
}
@@ -4028,7 +3927,6 @@
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -4044,7 +3942,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -4056,7 +3953,6 @@
"resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz",
"integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=",
"dev": true,
- "optional": true,
"requires": {
"onetime": "^1.0.0",
"set-immediate-shim": "^1.0.0"
@@ -4066,8 +3962,7 @@
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
@@ -5050,7 +4945,6 @@
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
"integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
"dev": true,
- "optional": true,
"requires": {
"pend": "~1.2.0"
}
@@ -5098,15 +4992,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz",
"integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=",
- "dev": true,
- "optional": true
+ "dev": true
},
"filenamify": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz",
"integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=",
"dev": true,
- "optional": true,
"requires": {
"filename-reserved-regex": "^1.0.0",
"strip-outer": "^1.0.0",
@@ -5352,10 +5244,8 @@
"fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
-
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true,
- "optional": true
+ "dev": true
},
"fs-extra": {
"version": "1.0.0",
@@ -5979,7 +5869,6 @@
"resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz",
"integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=",
"dev": true,
- "optional": true,
"requires": {
"rc": "^1.1.2"
}
@@ -6286,7 +6175,6 @@
"resolved": "http://registry.npmjs.org/got/-/got-5.7.1.tgz",
"integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=",
"dev": true,
- "optional": true,
"requires": {
"create-error-class": "^3.0.1",
"duplexer2": "^0.1.4",
@@ -6310,7 +6198,6 @@
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
"integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
"dev": true,
- "optional": true,
"requires": {
"readable-stream": "^2.0.2"
}
@@ -6319,22 +6206,19 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true,
- "optional": true
+ "dev": true
},
"parse-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
- "optional": true,
"requires": {
"error-ex": "^1.2.0"
}
@@ -6344,7 +6228,6 @@
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -6360,7 +6243,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -6380,8 +6262,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
- "dev": true,
- "optional": true
+ "dev": true
},
"growly": {
"version": "1.3.0",
@@ -6698,7 +6579,6 @@
"resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz",
"integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=",
"dev": true,
- "optional": true,
"requires": {
"archive-type": "^3.0.0",
"decompress": "^3.0.0",
@@ -6710,15 +6590,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -6734,7 +6612,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -7352,7 +7229,6 @@
"resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
"integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
"dev": true,
- "optional": true,
"requires": {
"convert-source-map": "^1.1.1",
"graceful-fs": "^4.1.2",
@@ -7365,15 +7241,13 @@
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
- "dev": true,
- "optional": true
+ "dev": true
},
"strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
- "optional": true,
"requires": {
"is-utf8": "^0.2.0"
}
@@ -7383,7 +7257,6 @@
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
"integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
"dev": true,
- "optional": true,
"requires": {
"clone": "^1.0.0",
"clone-stats": "^0.0.1",
@@ -8266,8 +8139,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz",
"integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-callable": {
"version": "1.1.4",
@@ -8402,8 +8274,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz",
"integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-jpg": {
"version": "1.0.1",
@@ -8416,8 +8287,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz",
"integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-number": {
"version": "3.0.0",
@@ -8483,8 +8353,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
"integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-regex": {
"version": "1.0.4",
@@ -8514,8 +8383,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
"integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-stream": {
"version": "1.1.0",
@@ -8545,8 +8413,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz",
"integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-typedarray": {
"version": "1.0.0",
@@ -8567,8 +8434,7 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
"integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-utf8": {
"version": "0.2.1",
@@ -8580,8 +8446,7 @@
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz",
"integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-windows": {
"version": "1.0.2",
@@ -8599,8 +8464,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz",
"integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=",
- "dev": true,
- "optional": true
+ "dev": true
},
"isarray": {
"version": "0.0.1",
@@ -8940,7 +8804,6 @@
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
"integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
"dev": true,
- "optional": true,
"requires": {
"readable-stream": "^2.0.5"
},
@@ -8949,15 +8812,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -8973,7 +8834,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -9279,8 +9139,7 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
- "dev": true,
- "optional": true
+ "dev": true
},
"lodash.isobject": {
"version": "2.4.1",
@@ -9477,8 +9336,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
- "dev": true,
- "optional": true
+ "dev": true
},
"lpad-align": {
"version": "1.1.2",
@@ -9914,8 +9772,7 @@
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
"integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=",
- "dev": true,
- "optional": true
+ "dev": true
},
"node.extend": {
"version": "1.1.8",
@@ -12965,8 +12822,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true,
- "optional": true
+ "dev": true
},
"p-pipe": {
"version": "1.2.0",
@@ -13677,8 +13533,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
- "dev": true,
- "optional": true
+ "dev": true
},
"preserve": {
"version": "0.2.0",
@@ -13810,7 +13665,6 @@
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
- "optional": true,
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
@@ -13823,7 +13677,6 @@
"resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
"integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
"dev": true,
- "optional": true,
"requires": {
"pinkie-promise": "^2.0.0",
"readable-stream": "^2.0.0"
@@ -13833,15 +13686,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -13857,7 +13708,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -14474,7 +14324,6 @@
"resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz",
"integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=",
"dev": true,
- "optional": true,
"requires": {
"commander": "~2.8.1"
}
@@ -14620,8 +14469,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
"integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
- "dev": true,
- "optional": true
+ "dev": true
},
"set-value": {
"version": "2.0.0",
@@ -15126,8 +14974,7 @@
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
"integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=",
- "dev": true,
- "optional": true
+ "dev": true
},
"static-extend": {
"version": "0.1.2",
@@ -15171,7 +15018,6 @@
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
"integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
"dev": true,
- "optional": true,
"requires": {
"duplexer2": "~0.1.0",
"readable-stream": "^2.0.2"
@@ -15182,7 +15028,6 @@
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
"integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
"dev": true,
- "optional": true,
"requires": {
"readable-stream": "^2.0.2"
}
@@ -15191,15 +15036,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -15215,7 +15058,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -15232,8 +15074,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
- "dev": true,
- "optional": true
+ "dev": true
},
"streamroller": {
"version": "0.7.0",
@@ -15411,7 +15252,6 @@
"resolved": "http://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz",
"integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=",
"dev": true,
- "optional": true,
"requires": {
"chalk": "^1.0.0",
"get-stdin": "^4.0.1",
@@ -15425,15 +15265,13 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true,
- "optional": true
+ "dev": true
},
"chalk": {
"version": "1.1.3",
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
- "optional": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
@@ -15447,7 +15285,6 @@
"resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz",
"integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=",
"dev": true,
- "optional": true,
"requires": {
"is-relative": "^0.1.0"
}
@@ -15456,15 +15293,13 @@
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz",
"integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=",
- "dev": true,
- "optional": true
+ "dev": true
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
@@ -15495,7 +15330,6 @@
"resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
"integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
"dev": true,
- "optional": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
@@ -15529,7 +15363,6 @@
"resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz",
"integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=",
"dev": true,
- "optional": true,
"requires": {
"chalk": "^1.0.0"
},
@@ -15538,15 +15371,13 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true,
- "optional": true
+ "dev": true
},
"chalk": {
"version": "1.1.3",
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
- "optional": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
@@ -15559,8 +15390,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
@@ -15622,7 +15452,6 @@
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
"integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
"dev": true,
- "optional": true,
"requires": {
"bl": "^1.0.0",
"buffer-alloc": "^1.2.0",
@@ -15638,7 +15467,6 @@
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
"integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=",
"dev": true,
- "optional": true,
"requires": {
"once": "^1.4.0"
}
@@ -15647,15 +15475,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
- "optional": true,
"requires": {
"wrappy": "1"
}
@@ -15665,7 +15491,6 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -15681,7 +15506,6 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -15786,7 +15610,6 @@
"resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
"integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
"dev": true,
- "optional": true,
"requires": {
"through2": "~2.0.0",
"xtend": "~4.0.0"
@@ -15811,8 +15634,7 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz",
"integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=",
- "dev": true,
- "optional": true
+ "dev": true
},
"timers-ext": {
"version": "0.1.7",
@@ -15885,7 +15707,6 @@
"resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
"integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
"dev": true,
- "optional": true,
"requires": {
"extend-shallow": "^2.0.1"
},
@@ -15895,7 +15716,6 @@
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
- "optional": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -15912,8 +15732,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
"integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
- "dev": true,
- "optional": true
+ "dev": true
},
"to-fast-properties": {
"version": "2.0.0",
@@ -15992,7 +15811,6 @@
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
"integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
"dev": true,
- "optional": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
@@ -16241,8 +16059,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
"integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=",
- "dev": true,
- "optional": true
+ "dev": true
},
"upath": {
"version": "1.1.0",
@@ -16270,7 +16087,6 @@
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
"integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
"dev": true,
- "optional": true,
"requires": {
"prepend-http": "^1.0.1"
}
@@ -16356,8 +16172,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
"integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
- "dev": true,
- "optional": true
+ "dev": true
},
"validate-npm-package-license": {
"version": "3.0.4",
@@ -16402,7 +16217,6 @@
"resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz",
"integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=",
"dev": true,
- "optional": true,
"requires": {
"object-assign": "^4.0.1",
"readable-stream": "^2.0.0"
@@ -16412,22 +16226,19 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true,
- "optional": true
+ "dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
- "optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -16443,7 +16254,6 @@
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -16583,7 +16393,6 @@
"resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz",
"integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=",
"dev": true,
- "optional": true,
"requires": {
"wrap-fn": "^0.1.0"
}
@@ -16674,7 +16483,6 @@
"resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz",
"integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=",
"dev": true,
- "optional": true,
"requires": {
"co": "3.1.0"
}
@@ -16778,7 +16586,6 @@
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
"integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
"dev": true,
- "optional": true,
"requires": {
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json
index 2eb06da9e0..ef1a9cc28d 100644
--- a/src/Umbraco.Web.UI.Client/package.json
+++ b/src/Umbraco.Web.UI.Client/package.json
@@ -77,6 +77,7 @@
"lodash": "4.17.11",
"marked": "^0.5.2",
"merge-stream": "1.0.1",
- "run-sequence": "2.2.1"
+ "run-sequence": "2.2.1",
+ "caniuse-lite": "^1.0.30000966"
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbappheader.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbappheader.directive.js
index 3ddb7af0e1..ead54b3fc3 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbappheader.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbappheader.directive.js
@@ -1,7 +1,7 @@
(function () {
"use strict";
- function AppHeaderDirective(eventsService, appState, userService) {
+ function AppHeaderDirective(eventsService, appState, userService, focusService) {
function link(scope, el, attr, ctrl) {
@@ -54,7 +54,9 @@
}
});
}));
-
+
+ scope.rememberFocus = focusService.rememberFocus;
+
scope.searchClick = function() {
var showSearch = appState.getSearchState("show");
appState.setSearchState("show", !showSearch);
@@ -101,4 +103,4 @@
angular.module("umbraco.directives").directive("umbAppHeader", AppHeaderDirective);
-})();
\ No newline at end of file
+})();
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbsearch.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbsearch.directive.js
index 7ff76d5670..91eb077ba3 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbsearch.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/application/umbsearch.directive.js
@@ -13,7 +13,7 @@
}
};
- function umbSearchController($timeout, backdropService, searchService) {
+ function umbSearchController($timeout, backdropService, searchService, focusService) {
var vm = this;
@@ -25,6 +25,9 @@
vm.handleKeyUp = handleKeyUp;
vm.closeSearch = closeSearch;
vm.focusSearch = focusSearch;
+
+ //we need to capture the focus before this element is initialized.
+ vm.focusBeforeOpening = focusService.getLastKnownFocus();
function onInit() {
vm.searchQuery = "";
@@ -70,6 +73,10 @@
* @param {object} event
*/
function handleKeyUp(event) {
+
+ event.stopPropagation();
+ event.preventDefault();
+
// esc
if(event.keyCode === 27) {
closeSearch();
@@ -80,6 +87,9 @@
* Used to proxy a callback
*/
function closeSearch() {
+ if(vm.focusBeforeOpening) {
+ vm.focusBeforeOpening.focus();
+ }
if(vm.onClose) {
vm.onClose();
}
@@ -115,4 +125,4 @@
angular.module('umbraco.directives').component('umbSearch', umbSearch);
-})();
\ No newline at end of file
+})();
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/hotkey.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/hotkey.directive.js
index b4040d1c77..8db301da55 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/hotkey.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/forms/hotkey.directive.js
@@ -4,7 +4,7 @@
**/
angular.module("umbraco.directives")
- .directive('hotkey', function($window, keyboardService, $log) {
+ .directive('hotkey', function($window, keyboardService, $log, focusService) {
return function(scope, el, attrs) {
@@ -28,7 +28,9 @@ angular.module("umbraco.directives")
}
keyboardService.bind(keyCombo, function() {
-
+
+ focusService.rememberFocus();
+
var element = $(el);
var activeElementType = document.activeElement.tagName;
var clickableElements = ["A", "BUTTON"];
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/overlays/umboverlay.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/overlays/umboverlay.directive.js
index 99b89bf8cf..e65a3d238c 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/overlays/umboverlay.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/overlays/umboverlay.directive.js
@@ -295,7 +295,8 @@ Opens an overlay to show a custom YSOD.
scope.closeOverLay();
});
}
-
+
+ event.stopPropagation();
event.preventDefault();
}
@@ -511,6 +512,7 @@ Opens an overlay to show a custom YSOD.
model: "=",
view: "=",
position: "@",
+ size: "=?",
parentScope: "=?"
},
link: link
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/tags/umbtagseditor.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/tags/umbtagseditor.directive.js
index 40def728ed..7d1def43a8 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/tags/umbtagseditor.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/tags/umbtagseditor.directive.js
@@ -41,6 +41,7 @@
vm.removeTag = removeTag;
vm.showPrompt = showPrompt;
vm.hidePrompt = hidePrompt;
+ vm.onKeyUpOnTag = onKeyUpOnTag;
vm.htmlId = "t" + String.CreateGuid();
vm.isLoading = true;
@@ -272,6 +273,12 @@
vm.promptIsVisible = "-1";
}
+ function onKeyUpOnTag(tag, $event) {
+ if ($event.keyCode === 8 || $event.keyCode === 46) {
+ removeTag(tag);
+ }
+ }
+
// helper method to remove current tags
function removeCurrentTagsFromSuggestions(suggestions) {
return $.grep(suggestions, function (suggestion) {
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnestedcontent.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnestedcontent.directive.js
index 366294630b..471714d30b 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnestedcontent.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnestedcontent.directive.js
@@ -3,7 +3,7 @@
function () {
var link = function ($scope) {
-
+
// Clone the model because some property editors
// do weird things like updating and config values
// so we want to ensure we start from a fresh every
@@ -12,10 +12,10 @@
$scope.nodeContext = $scope.model;
// Find the selected tab
- var selectedTab = $scope.model.tabs[0];
+ var selectedTab = $scope.model.variants[0].tabs[0];
if ($scope.tabAlias) {
- angular.forEach($scope.model.tabs, function (tab) {
+ angular.forEach($scope.model.variants[0].tabs, function (tab) {
if (tab.alias.toLowerCase() === $scope.tabAlias.toLowerCase()) {
selectedTab = tab;
return;
@@ -31,9 +31,9 @@
// Tell inner controls we are submitting
$scope.$broadcast("formSubmitting", { scope: $scope });
-
+
// Sync the values back
- angular.forEach($scope.ngModel.tabs, function (tab) {
+ angular.forEach($scope.ngModel.variants[0].tabs, function (tab) {
if (tab.alias.toLowerCase() === selectedTab.alias.toLowerCase()) {
var localPropsMap = selectedTab.properties.reduce(function (map, obj) {
@@ -94,4 +94,4 @@
// },
// link: link
// }
-//});
\ No newline at end of file
+//});
diff --git a/src/Umbraco.Web.UI.Client/src/common/filters/truncate.filter.js b/src/Umbraco.Web.UI.Client/src/common/filters/truncate.filter.js
new file mode 100644
index 0000000000..5efe0f5fff
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/common/filters/truncate.filter.js
@@ -0,0 +1,31 @@
+/**
+ * @ngdoc filter
+ * @name umbraco.filters.filter:truncate
+ * @namespace truncateFilter
+ *
+ * param {any} wordwise if true, the string will be cut after last fully displayed word.
+ * param {any} max max length of the outputtet string
+ * param {any} tail option tail, defaults to: ' ...'
+ *
+ * @description
+ * Limits the length of a string, if a cut happens only the string will be appended with three dots to indicate that more is available.
+ */
+angular.module("umbraco.filters").filter('truncate',
+ function () {
+ return function (value, wordwise, max, tail) {
+ if (!value) return '';
+ max = parseInt(max, 10);
+ if (!max) return value;
+ if (value.length <= max) return value;
+
+ value = value.substr(0, max);
+ if (wordwise) {
+ var lastspace = value.lastIndexOf(' ');
+ if (lastspace != -1) {
+ value = value.substr(0, lastspace);
+ }
+ }
+ return value + (tail || (wordwise ? ' …' : '…'));
+ };
+ }
+);
diff --git a/src/Umbraco.Web.UI.Client/src/common/services/clipboard.service.js b/src/Umbraco.Web.UI.Client/src/common/services/clipboard.service.js
new file mode 100644
index 0000000000..647133f0b7
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/common/services/clipboard.service.js
@@ -0,0 +1,203 @@
+/**
+ * @ngdoc service
+ * @name umbraco.services.clipboardService
+ *
+ * @requires notificationsService
+ * @requires eventsService
+ *
+ * @description
+ * Service to handle clipboard in general across the application. Responsible for handling the data both storing and retrive.
+ * The service has a set way for defining a data-set by a entryType and alias, which later will be used to retrive the posible entries for a paste scenario.
+ *
+ */
+function clipboardService(notificationsService, eventsService, localStorageService) {
+
+
+ var STORAGE_KEY = "umbClipboardService";
+
+ var retriveStorage = function() {
+ if (localStorageService.isSupported === false) {
+ return null;
+ }
+ var dataJSON;
+ var dataString = localStorageService.get(STORAGE_KEY);
+ if (dataString != null) {
+ dataJSON = JSON.parse(dataString);
+ }
+
+ if(dataJSON == null) {
+ dataJSON = new Object();
+ }
+
+ if(dataJSON.entries === undefined) {
+ dataJSON.entries = [];
+ }
+
+ return dataJSON;
+ }
+
+ var saveStorage = function(storage) {
+ var storageString = JSON.stringify(storage);
+
+ try {
+ var storageJSON = JSON.parse(storageString);
+ localStorageService.set(STORAGE_KEY, storageString);
+
+ eventsService.emit("clipboardService.storageUpdate");
+
+ return true;
+ } catch(e) {
+ return false;
+ }
+
+ return false;
+ }
+
+
+ var service = {};
+
+ /**
+ * @ngdoc method
+ * @name umbraco.services.clipboardService#copy
+ * @methodOf umbraco.services.clipboardService
+ *
+ * @param {string} type A string defining the type of data to storing, example: 'elementType', 'contentNode'
+ * @param {string} alias A string defining the alias of the data to store, example: 'product'
+ * @param {object} data A object containing the properties to be saved.
+ *
+ * @description
+ * Saves a single JS-object with a type and alias to the clipboard.
+ */
+ service.copy = function(type, alias, data) {
+
+ var storage = retriveStorage();
+
+ var shallowCloneData = Object.assign({}, data);// Notice only a shallow copy, since we dont need to deep copy. (that will happen when storing the data)
+ delete shallowCloneData.key;
+ delete shallowCloneData.$$hashKey;
+
+ var key = data.key || data.$$hashKey || console.error("missing unique key for this content");
+
+ // remove previous copies of this entry:
+ storage.entries = storage.entries.filter(
+ (entry) => {
+ return entry.unique !== key;
+ }
+ );
+
+ var entry = {unique:key, type:type, alias:alias, data:shallowCloneData};
+ storage.entries.push(entry);
+
+ if (saveStorage(storage) === true) {
+ notificationsService.success("Clipboard", "Copied to clipboard.");
+ } else {
+ notificationsService.success("Clipboard", "Couldnt copy this data to clipboard.");
+ }
+
+ };
+
+
+ /**
+ * @ngdoc method
+ * @name umbraco.services.supportsCopy#supported
+ * @methodOf umbraco.services.clipboardService
+ *
+ * @description
+ * Determins wether the current browser is able to performe its actions.
+ */
+ service.isSupported = function() {
+ return localStorageService.isSupported;
+ };
+
+ /**
+ * @ngdoc method
+ * @name umbraco.services.supportsCopy#hasEntriesOfType
+ * @methodOf umbraco.services.clipboardService
+ *
+ * @param {string} type A string defining the type of data test for.
+ * @param {string} aliases A array of strings providing the alias of the data you want to test for.
+ *
+ * @description
+ * Determines whether the current clipboard has entries that match a given type and one of the aliases.
+ */
+ service.hasEntriesOfType = function(type, aliases) {
+
+ if(service.retriveEntriesOfType(type, aliases).length > 0) {
+ return true;
+ }
+
+ return false;
+ };
+
+ /**
+ * @ngdoc method
+ * @name umbraco.services.supportsCopy#retriveEntriesOfType
+ * @methodOf umbraco.services.clipboardService
+ *
+ * @param {string} type A string defining the type of data to recive.
+ * @param {string} aliases A array of strings providing the alias of the data you want to recive.
+ *
+ * @description
+ * Returns an array of entries matching the given type and one of the provided aliases.
+ */
+ service.retriveEntriesOfType = function(type, aliases) {
+
+ var storage = retriveStorage();
+
+ // Find entries that are fulfilling the criteria for this nodeType and nodeTypesAliases.
+ var filteretEntries = storage.entries.filter(
+ (entry) => {
+ return (entry.type === type && aliases.filter(alias => alias === entry.alias).length > 0);
+ }
+ );
+
+ return filteretEntries;
+ };
+
+ /**
+ * @ngdoc method
+ * @name umbraco.services.supportsCopy#retriveEntriesOfType
+ * @methodOf umbraco.services.clipboardService
+ *
+ * @param {string} type A string defining the type of data to recive.
+ * @param {string} aliases A array of strings providing the alias of the data you want to recive.
+ *
+ * @description
+ * Returns an array of data of entries matching the given type and one of the provided aliases.
+ */
+ service.retriveDataOfType = function(type, aliases) {
+ return service.retriveEntriesOfType(type, aliases).map((x) => x.data);
+ };
+
+ /**
+ * @ngdoc method
+ * @name umbraco.services.supportsCopy#retriveEntriesOfType
+ * @methodOf umbraco.services.clipboardService
+ *
+ * @param {string} type A string defining the type of data to remove.
+ * @param {string} aliases A array of strings providing the alias of the data you want to remove.
+ *
+ * @description
+ * Removes entries matching the given type and one of the provided aliases.
+ */
+ service.clearEntriesOfType = function(type, aliases) {
+
+ var storage = retriveStorage();
+
+ // Find entries that are NOT fulfilling the criteria for this nodeType and nodeTypesAliases.
+ var filteretEntries = storage.entries.filter(
+ (entry) => {
+ return !(entry.type === type && aliases.filter(alias => alias === entry.alias).length > 0);
+ }
+ );
+
+ storage.entries = filteretEntries;
+
+ saveStorage(storage);
+ };
+
+
+
+ return service;
+}
+angular.module("umbraco.services").factory("clipboardService", clipboardService);
diff --git a/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js b/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js
index 4357caf5be..a97773f77e 100644
--- a/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js
+++ b/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js
@@ -164,9 +164,22 @@ When building a custom infinite editor view you can use the same components as a
"use strict";
function editorService(eventsService, keyboardService, $timeout) {
-
+
+
let editorsKeyboardShorcuts = [];
var editors = [];
+ var isEnabled = true;
+
+
+ // events for backdrop
+ eventsService.on("appState.backdrop", function (name, args) {
+ if (args.show === true) {
+ blur();
+ } else {
+ focus();
+ }
+ });
+
/**
* @ngdoc method
@@ -191,7 +204,43 @@ When building a custom infinite editor view you can use the same components as a
function getNumberOfEditors() {
return editors.length;
};
+
+ /**
+ * @ngdoc method
+ * @name umbraco.services.editorService#blur
+ * @methodOf umbraco.services.editorService
+ *
+ * @description
+ * Method to tell editors that they are begin blurred.
+ */
+ function blur() {
+ /* keyboard shortcuts will be overwritten by the new infinite editor
+ so we need to store the shortcuts for the current editor so they can be rebound
+ when the infinite editor closes
+ */
+ unbindKeyboardShortcuts();
+ isEnabled = false;
+ }
+ /**
+ * @ngdoc method
+ * @name umbraco.services.editorService#blur
+ * @methodOf umbraco.services.editorService
+ *
+ * @description
+ * Method to tell editors that they are gaining focus again.
+ */
+ function focus() {
+ if(isEnabled === false) {
+ /* keyboard shortcuts will be overwritten by the new infinite editor
+ so we need to store the shortcuts for the current editor so they can be rebound
+ when the infinite editor closes
+ */
+ rebindKeyboardShortcuts();
+ isEnabled = true;
+ }
+ }
+
/**
* @ngdoc method
* @name umbraco.services.editorService#open
diff --git a/src/Umbraco.Web.UI.Client/src/common/services/focus.service.js b/src/Umbraco.Web.UI.Client/src/common/services/focus.service.js
new file mode 100644
index 0000000000..3979f194b8
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/common/services/focus.service.js
@@ -0,0 +1,78 @@
+/**
+ @ngdoc service
+ * @name umbraco.services.focusService
+ *
+ * @description
+ * Added in Umbraco 8.1. Application-wide service for focus related stuff.
+ *
+ */
+
+(function () {
+ "use strict";
+
+ function focusService() {
+
+
+ var currentFocus = null;
+ var lastKnownFocus = null;
+
+
+ function focusInApp(e) {
+ currentFocus = e.target;
+ }
+ document.addEventListener('focusin', focusInApp);
+
+
+ var service = {
+
+ /**
+ * @ngdoc function
+ * @name umbraco.services.focusService#getLastKnownFocus
+ * @methodOf umbraco.services.focusService
+ * @function
+ *
+ * @description
+ * Gives the element that was set to be remembered, the directive using this should store the value of this to make sure that its not changed white using that directive.
+ * This variable is avaiable for directives that are not able to figure out the focused element on init, and there this service will help remembering it untill the directive is initialized.
+ *
+ */
+ getLastKnownFocus: function() {
+ return lastKnownFocus;
+ },
+
+ /**
+ * @ngdoc function
+ * @name umbraco.services.focusService#rememberFocus
+ * @methodOf umbraco.services.focusService
+ * @function
+ *
+ * @description
+ * Call this before a new focus is begin set, to be able to return to the focus before a given scenario.
+ *
+ */
+ rememberFocus: function() {
+ lastKnownFocus = currentFocus;
+ },
+
+ /**
+ * @ngdoc function
+ * @name umbraco.services.focusService#setLastKnownFocus
+ * @methodOf umbraco.services.focusService
+ * @function
+ *
+ * @description
+ * Overwrite the element remembered as the last known element in focus.
+ *
+ */
+ setLastKnownFocus: function(element) {
+ lastKnownFocus = element;
+ }
+ };
+
+ return service;
+
+ }
+
+ angular.module("umbraco.services").factory("focusService", focusService);
+
+})();
diff --git a/src/Umbraco.Web.UI.Client/src/common/services/overlay.service.js b/src/Umbraco.Web.UI.Client/src/common/services/overlay.service.js
index 6de0b4170b..e853e07092 100644
--- a/src/Umbraco.Web.UI.Client/src/common/services/overlay.service.js
+++ b/src/Umbraco.Web.UI.Client/src/common/services/overlay.service.js
@@ -27,6 +27,11 @@
overlay.position = "center";
}
+ // set the default overlay size to small
+ if(!overlay.size) {
+ overlay.size = "small";
+ }
+
// use a default empty view if nothing is set
if(!overlay.view) {
overlay.view = "views/common/overlays/default/default.html";
@@ -72,4 +77,4 @@
angular.module("umbraco.services").factory("overlayService", overlayService);
-})();
\ No newline at end of file
+})();
diff --git a/src/Umbraco.Web.UI.Client/src/controllers/main.controller.js b/src/Umbraco.Web.UI.Client/src/controllers/main.controller.js
index 269e269be8..83b3c920d7 100644
--- a/src/Umbraco.Web.UI.Client/src/controllers/main.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/controllers/main.controller.js
@@ -8,7 +8,9 @@
* The main application controller
*
*/
-function MainController($scope, $location, appState, treeService, notificationsService, userService, historyService, updateChecker, assetsService, eventsService, tmhDynamicLocale, localStorageService, editorService, overlayService) {
+function MainController($scope, $location, appState, treeService, notificationsService,
+ userService, historyService, updateChecker, assetsService, eventsService,
+ tmhDynamicLocale, localStorageService, editorService, overlayService, focusService) {
//the null is important because we do an explicit bool check on this in the view
$scope.authenticated = null;
@@ -25,6 +27,7 @@ function MainController($scope, $location, appState, treeService, notificationsS
function handleFirstTab(evt) {
if (evt.keyCode === 9) {
$scope.tabbingActive = true;
+ $scope.$digest();
window.removeEventListener('keydown', handleFirstTab);
window.addEventListener('mousedown', disableTabbingActive);
}
@@ -32,6 +35,7 @@ function MainController($scope, $location, appState, treeService, notificationsS
function disableTabbingActive(evt) {
$scope.tabbingActive = false;
+ $scope.$digest();
window.removeEventListener('mousedown', disableTabbingActive);
window.addEventListener("keydown", handleFirstTab);
}
diff --git a/src/Umbraco.Web.UI.Client/src/less/belle.less b/src/Umbraco.Web.UI.Client/src/less/belle.less
index 441f52c81b..1e48500bb0 100644
--- a/src/Umbraco.Web.UI.Client/src/less/belle.less
+++ b/src/Umbraco.Web.UI.Client/src/less/belle.less
@@ -130,6 +130,7 @@
@import "components/tooltip/umb-tooltip.less";
@import "components/tooltip/umb-tooltip-list.less";
@import "components/overlays/umb-overlay-backdrop.less";
+@import "components/overlays/umb-itempicker.less";
@import "components/umb-grid.less";
@import "components/umb-empty-state.less";
@import "components/umb-property-editor.less";
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/card.less b/src/Umbraco.Web.UI.Client/src/less/components/card.less
index 0f4f2a7a9d..8324698685 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/card.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/card.less
@@ -6,6 +6,7 @@
position: relative;
padding: 5px 10px 5px 10px;
background: white;
+ width: 100%;
.title{padding: 12px; color: @gray-3; border-bottom: 1px solid @gray-8; font-weight: 400; font-size: 16px; text-transform: none; margin: 0 -10px 10px -10px;}
@@ -84,63 +85,73 @@
padding: 0;
margin: 0 auto;
list-style: none;
-
+ width: 100%;
+
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
}
.umb-card-grid li {
- padding: 5px;
overflow: hidden;
font-size: 12px;
text-align: center;
- width: 100px;
box-sizing: border-box;
position: relative;
+ width: 100px;
}
-.umb-card-grid li.-four-in-row {
+.umb-card-grid.-four-in-row li {
flex: 0 0 25%;
max-width: 25%;
}
-.umb-card-grid li.-three-in-row {
+.umb-card-grid.-three-in-row li {
flex: 0 0 33.33%;
max-width:33.33%;
}
.umb-card-grid .umb-card-grid-item {
+ position: relative;
display: block;
width: 100%;
- height: 100%;
+ //height: 100%;
+ padding-top: 100%;
border-radius: 3px;
- padding-bottom: 5px;
+ transition: background-color 120ms;
+
+ > span {
+ position: absolute;
+ top: 10px;
+ bottom: 10px;
+ left: 10px;
+ right: 10px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ background-color: transparent;
+ }
}
- .umb-card-grid .umb-card-grid-item:hover,
- .umb-card-grid .umb-card-grid-item:focus,
- .umb-card-grid .umb-card-grid-item:hover > *,
- .umb-card-grid .umb-card-grid-item:focus > * {
- background: @ui-option-hover;
+.umb-card-grid .umb-card-grid-item:hover,
+.umb-card-grid .umb-card-grid-item:focus {
+ background-color: @ui-option-hover;
color: @ui-option-type-hover;
- cursor: pointer;
- outline: none;
- border-radius: 3px;
}
.umb-card-grid a {
- color: @ui-option-type;
- text-decoration: none;
- }
+ color: @ui-option-type;
+ text-decoration: none;
+}
.umb-card-grid i {
- font-size: 30px;
- line-height: 50px;
- display: block;
- color: @ui-option-type;
- }
+ font-size: 30px;
+ line-height: 20px;
+ margin-bottom: 10px;
+ display: block;
+}
.umb-card-grid .umb-card-grid-item__loading {
position: absolute;
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/overlays.less b/src/Umbraco.Web.UI.Client/src/less/components/overlays.less
index 9205dc9c5f..f5050fad85 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/overlays.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/overlays.less
@@ -5,51 +5,72 @@
z-index: @zindexUmbOverlay;
animation: fadeIn 0.2s;
box-shadow: 0 10px 50px rgba(0,0,0,0.1), 0 6px 20px rgba(0,0,0,0.16);
+ text-align: left;
}
.umb-overlay__form {
display: flex;
flex-wrap: nowrap;
flex-direction: column;
- height: 100%;
}
.umb-overlay .umb-overlay-header {
- //background: @gray-10;
border-bottom: 1px solid @purple-l3;
- //background: @blueExtraDark;
- //color:@u-white;
- padding: 10px;
margin-top: 0;
flex-grow: 0;
flex-shrink: 0;
+
+ padding: 20px 30px 0;
}
-.umb-overlay .umb-overlay__title {
+
+.umb-overlay__section-header {
+ width: 100%;
+ margin-top:30px;
+ margin-bottom: 10px;
+
+ h5 {
+ display: inline;
+ }
+
+ button {
+ display: inline;
+ float: right;
+ background-color: transparent;
+ border:none;
+ &:hover {
+ color: @ui-option-type-hover;
+ }
+ }
+}
+
+.umb-overlay__title {
font-size: @fontSizeLarge;
color: @black;
font-weight: bold;
margin: 7px 0;
}
-.umb-overlay .umb-overlay__subtitle {
+.umb-overlay__subtitle {
font-size: @fontSizeSmall;
color: @gray-3;
margin: 0;
}
-.umb-overlay .umb-overlay-container {
+.umb-overlay-container {
flex-grow: 1;
flex-shrink: 1;
flex-basis: auto;
- overflow-y: auto;
- overflow-x: hidden;
position: relative;
- height: auto;
+
+ padding: 0px 30px;
+ margin-bottom: 10px;
+ max-height: calc(100vh - 170px);
+ overflow-y: auto;
}
-.umb-overlay .umb-overlay-drawer {
+.umb-overlay-drawer {
flex-grow: 0;
flex-shrink: 0;
flex-basis: 31px;
@@ -60,16 +81,16 @@
border-top: 1px solid @purple-l3;
}
-.umb-overlay .umb-overlay-drawer.-auto-height {
+.umb-overlay-drawer.-auto-height {
flex-basis: auto;
}
-.umb-overlay .umb-overlay-drawer .umb-overlay-drawer__align-right {
+.umb-overlay-drawer .umb-overlay-drawer__align-right {
display: flex;
justify-content: flex-end;
}
-.umb-overlay .umb-overlay-drawer .umb-overlay-drawer-content .dropdown-menu {
+.umb-overlay-drawer .umb-overlay-drawer-content .dropdown-menu {
right: 0;
left: auto;
}
@@ -89,46 +110,44 @@
.umb-overlay.umb-overlay-center .umb-overlay-header {
border: none;
background: transparent;
- padding: 20px 20px 0 20px;
+ padding: 30px 30px 0;
}
.umb-overlay.umb-overlay-center .umb-overlay__form {
- max-height: 80vh;
-}
-
-.umb-overlay.umb-overlay-center .umb-overlay-container {
- padding: 20px;
+
}
.umb-overlay.umb-overlay-center .umb-overlay-drawer {
border: none;
background: transparent;
- padding: 0 20px 20px 20px;
+ padding: 0 30px 20px;
}
/* ---------- OVERLAY TARGET ---------- */
.umb-overlay.umb-overlay-target {
width: 400px;
- height: 400px;
+ max-height: 100vh;
box-sizing: border-box;
border-radius: @baseBorderRadius;
+ /* default:
+ &.umb-overlay--small {
+ width: 400px;
+ }
+ */
+ &.umb-overlay--medium {
+ width: 480px;
+ }
}
.umb-overlay.umb-overlay-target .umb-overlay-header {
border: none;
background: transparent;
- padding: 20px 20px 0 20px;
- text-align: center;
-}
-
-.umb-overlay.umb-overlay-target .umb-overlay-container {
- padding: 20px;
}
.umb-overlay.umb-overlay-target .umb-overlay-drawer {
border: none;
background: transparent;
- padding: 0 20px 20px 20px;
+ padding: 0 30px 20px;
}
/* ---------- OVERLAY RIGHT ---------- */
@@ -143,14 +162,9 @@
.umb-overlay.umb-overlay-right .umb-overlay-header {
flex-basis: 100px;
- padding: 20px;
box-sizing: border-box;
}
-.umb-overlay.umb-overlay-right .umb-overlay-container {
- padding: 20px;
-}
-
// reset the top position to 0 because we are in a asbolute container and want to
// overlay to go all the way to the top
.umb-editors .umb-overlay.umb-overlay-right {
@@ -175,14 +189,10 @@
.umb-overlay.umb-overlay-left .umb-overlay-header {
flex-basis: 100px;
- padding: 20px;
+ padding: 30px 30px 0;
box-sizing: border-box;
}
-.umb-overlay.umb-overlay-left .umb-overlay-container {
- padding: 20px;
-}
-
@media (max-width: 767px) {
.umb-overlay.umb-overlay-left {
margin-left: 61px;
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/overlays/umb-itempicker.less b/src/Umbraco.Web.UI.Client/src/less/components/overlays/umb-itempicker.less
new file mode 100644
index 0000000000..3727c92251
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/less/components/overlays/umb-itempicker.less
@@ -0,0 +1,6 @@
+.umb-itempicker .form-search {
+ margin-top:10px;
+}
+.umb-card-grid {
+ margin-top: 10px;
+}
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-form-check.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-form-check.less
index 4446ead255..d8a5ebf9d8 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/umb-form-check.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-form-check.less
@@ -30,23 +30,13 @@
}
&:checked ~ .umb-form-check__state .umb-form-check__check {
border-color: @ui-option-type;
- background-color: @ui-option-type;
}
&:checked:hover ~ .umb-form-check__state .umb-form-check__check {
&::before {
background: @ui-option-type-hover;
}
}
-
- &:focus:checked ~ .umb-form-check .umb-form-check__check,
- &:focus ~ .umb-form-check__state .umb-form-check__check {
- border-color: @inputBorderFocus;
-
- .tabbing-active & {
- outline: 2px solid @inputBorderTabFocus;
- }
- }
-
+
&:checked ~ .umb-form-check__state {
.umb-form-check__check {
// This only happens if the state has a radiobutton modifier
@@ -72,6 +62,19 @@
}
}
}
+
+
+ .tabbing-active &.umb-form-check--radiobutton &__input:focus ~ .umb-form-check__state .umb-form-check__check {
+ //outline: 2px solid @inputBorderTabFocus;
+ border: 2px solid @inputBorderTabFocus;
+ margin: -1px;
+ }
+ .tabbing-active &.umb-form-check--checkbox &__input:focus ~ .umb-form-check__state .umb-form-check__check {
+ outline: 2px solid @inputBorderTabFocus;
+ }
+ .tabbing-active &.umb-form-check--checkbox &__input:checked:focus ~ .umb-form-check__state .umb-form-check__check {
+ border-color: white;
+ }
&__state {
display: flex;
diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less b/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less
index b49be17a40..f1a6300481 100644
--- a/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less
+++ b/src/Umbraco.Web.UI.Client/src/less/components/umb-nested-content.less
@@ -87,23 +87,11 @@
.umb-nested-content__icons {
opacity: 0;
- transition: opacity .15s ease-in-out;
+ transition: opacity 120ms ease-in-out;
position: absolute;
- right: 0px;
- top: 2px;
- background-color: @white;
+ right: 8px;
+ top: 4px;
padding: 5px;
-
- &:before {
- content: ' ';
- position: absolute;
- display: block;
- width: 30px;
- left: -30px;
- top: 0;
- bottom: 0;
- background: linear-gradient(90deg, rgba(255,255,255,0), white);
- }
}
.umb-nested-content__item--active > .umb-nested-content__header-bar {
@@ -130,41 +118,22 @@
-.umb-nested-content__icon,
-.umb-nested-content__icon.umb-nested-content__icon--disabled:hover {
+.umb-nested-content__icon {
display: inline-block;
- padding: 4px 6px;
+ padding: 4px;
margin: 2px;
cursor: pointer;
- background: @white;
- border: 1px solid @gray-7;
- border-radius: 200px;
- text-decoration: none !important;
+ color: @ui-option-type;
}
-.umb-nested-content__icon.umb-nested-content__icon--disabled:hover {
- cursor: default;
-}
-
-.umb-nested-content__icon:hover,
-.umb-nested-content__icon--active
-{
- color: @white;
- background: @blueMid;
- border-color: @blueMid;
+.umb-nested-content__icon:hover {
+ color: @ui-option-type-hover;
text-decoration: none;
}
-.umb-nested-content__icon .icon,
-.umb-nested-content__icon.umb-nested-content__icon--disabled:hover .icon {
+.umb-nested-content__icon .icon {
display: block;
font-size: 16px !important;
- color: @gray-3;
-}
-
-.umb-nested-content__icon:hover .icon,
-.umb-nested-content__icon--active .icon {
- color: @white;
}
.umb-nested-content__icon--disabled {
@@ -223,16 +192,6 @@
display: none !important;
}
-.umb-nested-content__help-text {
- display: inline-block;
- padding: 10px 20px 10px 20px;
- clear: both;
- font-size: 14px;
- color: @gray-3;
- background: @gray-10;
- border-radius: 15px;
-}
-
.umb-nested-content__doctypepicker table input,
.umb-nested-content__doctypepicker table select {
width: 100%;
diff --git a/src/Umbraco.Web.UI.Client/src/less/main.less b/src/Umbraco.Web.UI.Client/src/less/main.less
index c666a69166..9f9bbce310 100644
--- a/src/Umbraco.Web.UI.Client/src/less/main.less
+++ b/src/Umbraco.Web.UI.Client/src/less/main.less
@@ -118,7 +118,6 @@ h5.-black {
.umb-control-group {
border-bottom: 1px solid @gray-11;
padding-bottom: 20px;
- margin-bottom: 15px !important;
}
.umb-control-group.-no-border {
diff --git a/src/Umbraco.Web.UI.Client/src/less/property-editors.less b/src/Umbraco.Web.UI.Client/src/less/property-editors.less
index a75c73df60..435b64ad34 100644
--- a/src/Umbraco.Web.UI.Client/src/less/property-editors.less
+++ b/src/Umbraco.Web.UI.Client/src/less/property-editors.less
@@ -852,9 +852,10 @@
//
// Tags
// --------------------------------------------------
-.umb-tags{
+.umb-tags {
border: @inputBorder solid 1px;
- padding: 10px;
+ padding: 5px;
+ min-height: 54px;
font-size: 13px;
text-shadow: none;
box-sizing: border-box;
@@ -862,17 +863,19 @@
.tag {
cursor: default;
- margin: 7px;
- padding: 10px;
- background: @blueDark;
+ margin: 10px;
+ padding: 10px 15px;
+ background: @blueExtraDark;
position: relative;
-
- .icon-trash{
- cursor: pointer;
- padding: 2px;
- font-size: 12px;
+ user-select: all;
+
+ .icon-trash {
position: relative;
- right: -6px;
+ cursor: pointer;
+ padding-left: 2px;
+ font-size: 15px;
+ right: -5px;
+ bottom: -1px;
}
.umb_confirm-action__overlay.-left{
@@ -882,10 +885,19 @@
}
}
- input{
+ input {
border: none;
background: @white;
}
+
+ .twitter-typeahead {
+ margin: 10px;
+ margin-top: 16px;
+ vertical-align: top;
+ input {
+ padding-left: 0;
+ }
+ }
}
//
diff --git a/src/Umbraco.Web.UI.Client/src/less/typeahead.less b/src/Umbraco.Web.UI.Client/src/less/typeahead.less
index 884f44974a..4822605200 100644
--- a/src/Umbraco.Web.UI.Client/src/less/typeahead.less
+++ b/src/Umbraco.Web.UI.Client/src/less/typeahead.less
@@ -31,8 +31,8 @@
padding: 8px 0;
background-color: @white;
border: 1px solid @gray-8;
- border-radius: 8px;
- box-shadow: 0 5px 10px rgba(0,0,0,.2);
+ border-radius: 3px;
+ box-shadow: 0 3px 6px rgba(0,0,0,.16);
}
.tt-suggestion {
@@ -44,7 +44,7 @@
.tt-suggestion.tt-cursor {
color: @white;
- background-color: @turquoise;
+ background-color: @ui-selected-type-hover;
}
.tt-suggestion p {
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/datatypepicker/datatypepicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/datatypepicker/datatypepicker.html
index 43933f8051..fd859b9e2e 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/datatypepicker/datatypepicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/datatypepicker/datatypepicker.html
@@ -33,24 +33,25 @@