diff --git a/eperusteet-ui-2015.zip b/eperusteet-ui-2015.zip new file mode 100644 index 0000000000..ffcede3e74 Binary files /dev/null and b/eperusteet-ui-2015.zip differ diff --git a/eperusteet/eperusteet-app/.gitignore b/eperusteet/eperusteet-app/.gitignore deleted file mode 100644 index 37ffe8b5b9..0000000000 --- a/eperusteet/eperusteet-app/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -target/ -*.swp -npm-debug.log -.idea/ -*.iml diff --git a/eperusteet/eperusteet-app/pom.xml b/eperusteet/eperusteet-app/pom.xml deleted file mode 100644 index d92e2bf099..0000000000 --- a/eperusteet/eperusteet-app/pom.xml +++ /dev/null @@ -1,32 +0,0 @@ - - 4.0.0 - - fi.vm.sade.eperusteet - eperusteet - ../pom.xml - 1.0-SNAPSHOT - - eperusteet-app - war - eperusteet-app - - UTF-8 - - - - - maven-war-plugin - 3.0.0 - - - - dist - - - - - - eperusteet-app - - diff --git a/eperusteet/eperusteet-app/src/main/webapp/META-INF/context.xml b/eperusteet/eperusteet-app/src/main/webapp/META-INF/context.xml deleted file mode 100644 index b7e2410916..0000000000 --- a/eperusteet/eperusteet-app/src/main/webapp/META-INF/context.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/eperusteet/eperusteet-app/src/main/webapp/WEB-INF/web.xml b/eperusteet/eperusteet-app/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 86e09b2df0..0000000000 --- a/eperusteet/eperusteet-app/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - eperusteetApp - - ExpiresFilter - org.apache.catalina.filters.ExpiresFilter - - ExpiresByType image - access plus 1 years - - - ExpiresByType text/css - access plus 1 years - - - ExpiresByType application/javascript - access plus 1 years - - - ExpiresByType text/html - access plus 0 seconds - - - - ExpiresFilter - /* - REQUEST - - diff --git a/eperusteet/eperusteet-app/yo/.babelrc b/eperusteet/eperusteet-app/yo/.babelrc deleted file mode 100644 index 72ac96c87a..0000000000 --- a/eperusteet/eperusteet-app/yo/.babelrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - compact: false, - "presets": [], - "plugins": ["angularjs-annotate"] -} diff --git a/eperusteet/eperusteet-app/yo/.bowerrc b/eperusteet/eperusteet-app/yo/.bowerrc deleted file mode 100644 index ba0accc5a3..0000000000 --- a/eperusteet/eperusteet-app/yo/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "app/bower_components" -} diff --git a/eperusteet/eperusteet-app/yo/.editorconfig b/eperusteet/eperusteet-app/yo/.editorconfig deleted file mode 100644 index 9937ead567..0000000000 --- a/eperusteet/eperusteet-app/yo/.editorconfig +++ /dev/null @@ -1,28 +0,0 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# editorconfig.org - -root = true - - -[*] -# Change these settings to your own preference -indent_style = space - -# We recommend you to keep these unchanged -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.ts] -indent_size = 4 - -[*.json] -indent_size = 2 - -[*.scss] -indent_size = 4 - -[*.md] -trim_trailing_whitespace = false diff --git a/eperusteet/eperusteet-app/yo/.gitattributes b/eperusteet/eperusteet-app/yo/.gitattributes deleted file mode 100644 index 2125666142..0000000000 --- a/eperusteet/eperusteet-app/yo/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto \ No newline at end of file diff --git a/eperusteet/eperusteet-app/yo/.gitignore b/eperusteet/eperusteet-app/yo/.gitignore deleted file mode 100644 index b37db2324c..0000000000 --- a/eperusteet/eperusteet-app/yo/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -coverage -node_modules -dist -.awcache -.tmp -.sass-cache -app/bower_components -.netbeans.xml -*~ -.bundle_stats.html -.log - -app/**/*.map -bundle_stats.html diff --git a/eperusteet/eperusteet-app/yo/.prettierrc b/eperusteet/eperusteet-app/yo/.prettierrc deleted file mode 100644 index 1dc0aac62c..0000000000 --- a/eperusteet/eperusteet-app/yo/.prettierrc +++ /dev/null @@ -1,8 +0,0 @@ -printWidth: 120 -semi: true -tabWidth: 4 -useTabs: false -singleQuote: false -trailingComma: "none" -bracketSpacing: true -parser: typescript diff --git a/eperusteet/eperusteet-app/yo/.watchmanconfig b/eperusteet/eperusteet-app/yo/.watchmanconfig deleted file mode 100644 index 8b49637111..0000000000 --- a/eperusteet/eperusteet-app/yo/.watchmanconfig +++ /dev/null @@ -1,14 +0,0 @@ -{ - "root_files": [ - ".watchmanconfig" - ], - "ignore_dirs": [ - "node_modules", - "dist", - "test", - "e2e", - "node", - "typings", - "coverage" - ] -} diff --git a/eperusteet/eperusteet-app/yo/app/.htaccess b/eperusteet/eperusteet-app/yo/app/.htaccess deleted file mode 100644 index cb84cb918f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/.htaccess +++ /dev/null @@ -1,543 +0,0 @@ -# Apache Configuration File - -# (!) Using `.htaccess` files slows down Apache, therefore, if you have access -# to the main server config file (usually called `httpd.conf`), you should add -# this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html. - -# ############################################################################## -# # CROSS-ORIGIN RESOURCE SHARING (CORS) # -# ############################################################################## - -# ------------------------------------------------------------------------------ -# | Cross-domain AJAX requests | -# ------------------------------------------------------------------------------ - -# Enable cross-origin AJAX requests. -# http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity -# http://enable-cors.org/ - -# -# Header set Access-Control-Allow-Origin "*" -# - -# ------------------------------------------------------------------------------ -# | CORS-enabled images | -# ------------------------------------------------------------------------------ - -# Send the CORS header for images when browsers request it. -# https://developer.mozilla.org/en/CORS_Enabled_Image -# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html -# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/ - - - - - SetEnvIf Origin ":" IS_CORS - Header set Access-Control-Allow-Origin "*" env=IS_CORS - - - - -# ------------------------------------------------------------------------------ -# | Web fonts access | -# ------------------------------------------------------------------------------ - -# Allow access from all domains for web fonts - - - - Header set Access-Control-Allow-Origin "*" - - - - -# ############################################################################## -# # ERRORS # -# ############################################################################## - -# ------------------------------------------------------------------------------ -# | 404 error prevention for non-existing redirected folders | -# ------------------------------------------------------------------------------ - -# Prevent Apache from returning a 404 error for a rewrite if a directory -# with the same name does not exist. -# http://httpd.apache.org/docs/current/content-negotiation.html#multiviews -# http://www.webmasterworld.com/apache/3808792.htm - -Options -MultiViews - -# ------------------------------------------------------------------------------ -# | Custom error messages / pages | -# ------------------------------------------------------------------------------ - -# You can customize what Apache returns to the client in case of an error (see -# http://httpd.apache.org/docs/current/mod/core.html#errordocument), e.g.: - -ErrorDocument 404 /404.html - - -# ############################################################################## -# # INTERNET EXPLORER # -# ############################################################################## - -# ------------------------------------------------------------------------------ -# | Better website experience | -# ------------------------------------------------------------------------------ - -# Force IE to render pages in the highest available mode in the various -# cases when it may not: http://hsivonen.iki.fi/doctype/ie-mode.pdf. - - - Header set X-UA-Compatible "IE=edge" - # `mod_headers` can't match based on the content-type, however, we only - # want to send this header for HTML pages and not for the other resources - - Header unset X-UA-Compatible - - - -# ------------------------------------------------------------------------------ -# | Cookie setting from iframes | -# ------------------------------------------------------------------------------ - -# Allow cookies to be set from iframes in IE. - -# -# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"" -# - -# ------------------------------------------------------------------------------ -# | Screen flicker | -# ------------------------------------------------------------------------------ - -# Stop screen flicker in IE on CSS rollovers (this only works in -# combination with the `ExpiresByType` directives for images from below). - -# BrowserMatch "MSIE" brokenvary=1 -# BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1 -# BrowserMatch "Opera" !brokenvary -# SetEnvIf brokenvary 1 force-no-vary - - -# ############################################################################## -# # MIME TYPES AND ENCODING # -# ############################################################################## - -# ------------------------------------------------------------------------------ -# | Proper MIME types for all files | -# ------------------------------------------------------------------------------ - - - - # Audio - AddType audio/mp4 m4a f4a f4b - AddType audio/ogg oga ogg - - # JavaScript - # Normalize to standard type (it's sniffed in IE anyways): - # http://tools.ietf.org/html/rfc4329#section-7.2 - AddType application/javascript js jsonp - AddType application/json json - - # Video - AddType video/mp4 mp4 m4v f4v f4p - AddType video/ogg ogv - AddType video/webm webm - AddType video/x-flv flv - - # Web fonts - AddType application/font-woff woff - AddType application/vnd.ms-fontobject eot - - # Browsers usually ignore the font MIME types and sniff the content, - # however, Chrome shows a warning if other MIME types are used for the - # following fonts. - AddType application/x-font-ttf ttc ttf - AddType font/opentype otf - - # Make SVGZ fonts work on iPad: - # https://twitter.com/FontSquirrel/status/14855840545 - AddType image/svg+xml svg svgz - AddEncoding gzip svgz - - # Other - AddType application/octet-stream safariextz - AddType application/x-chrome-extension crx - AddType application/x-opera-extension oex - AddType application/x-shockwave-flash swf - AddType application/x-web-app-manifest+json webapp - AddType application/x-xpinstall xpi - AddType application/xml atom rdf rss xml - AddType image/webp webp - AddType image/x-icon ico - AddType text/cache-manifest appcache manifest - AddType text/vtt vtt - AddType text/x-component htc - AddType text/x-vcard vcf - - - -# ------------------------------------------------------------------------------ -# | UTF-8 encoding | -# ------------------------------------------------------------------------------ - -# Use UTF-8 encoding for anything served as `text/html` or `text/plain`. -AddDefaultCharset utf-8 - -# Force UTF-8 for certain file formats. - - AddCharset utf-8 .atom .css .js .json .rss .vtt .webapp .xml - - - -# ############################################################################## -# # URL REWRITES # -# ############################################################################## - -# ------------------------------------------------------------------------------ -# | Rewrite engine | -# ------------------------------------------------------------------------------ - -# Turning on the rewrite engine and enabling the `FollowSymLinks` option is -# necessary for the following directives to work. - -# If your web host doesn't allow the `FollowSymlinks` option, you may need to -# comment it out and use `Options +SymLinksIfOwnerMatch` but, be aware of the -# performance impact: http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks - -# Also, some cloud hosting services require `RewriteBase` to be set: -# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-mod-rewrite-not-working-on-my-site - - - Options +FollowSymlinks - # Options +SymLinksIfOwnerMatch - RewriteEngine On - # RewriteBase / - - -# ------------------------------------------------------------------------------ -# | Suppressing / Forcing the "www." at the beginning of URLs | -# ------------------------------------------------------------------------------ - -# The same content should never be available under two different URLs especially -# not with and without "www." at the beginning. This can cause SEO problems -# (duplicate content), therefore, you should choose one of the alternatives and -# redirect the other one. - -# By default option 1 (no "www.") is activated: -# http://no-www.org/faq.php?q=class_b - -# If you'd prefer to use option 2, just comment out all the lines from option 1 -# and uncomment the ones from option 2. - -# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME! - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Option 1: rewrite www.example.com → example.com - - - RewriteCond %{HTTPS} !=on - RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] - RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Option 2: rewrite example.com → www.example.com - -# Be aware that the following might not be a good idea if you use "real" -# subdomains for certain parts of your website. - -# -# RewriteCond %{HTTPS} !=on -# RewriteCond %{HTTP_HOST} !^www\..+$ [NC] -# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] -# - - -# ############################################################################## -# # SECURITY # -# ############################################################################## - -# ------------------------------------------------------------------------------ -# | Content Security Policy (CSP) | -# ------------------------------------------------------------------------------ - -# You can mitigate the risk of cross-site scripting and other content-injection -# attacks by setting a Content Security Policy which whitelists trusted sources -# of content for your site. - -# The example header below allows ONLY scripts that are loaded from the current -# site's origin (no inline scripts, no CDN, etc). This almost certainly won't -# work as-is for your site! - -# To get all the details you'll need to craft a reasonable policy for your site, -# read: http://html5rocks.com/en/tutorials/security/content-security-policy (or -# see the specification: http://w3.org/TR/CSP). - -# -# Header set Content-Security-Policy "script-src 'self'; object-src 'self'" -# -# Header unset Content-Security-Policy -# -# - -# ------------------------------------------------------------------------------ -# | File access | -# ------------------------------------------------------------------------------ - -# Block access to directories without a default document. -# Usually you should leave this uncommented because you shouldn't allow anyone -# to surf through every directory on your server (which may includes rather -# private places like the CMS's directories). - - - Options -Indexes - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Block access to hidden files and directories. -# This includes directories used by version control systems such as Git and SVN. - - - RewriteCond %{SCRIPT_FILENAME} -d [OR] - RewriteCond %{SCRIPT_FILENAME} -f - RewriteRule "(^|/)\." - [F] - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Block access to backup and source files. -# These files may be left by some text editors and can pose a great security -# danger when anyone has access to them. - - - Order allow,deny - Deny from all - Satisfy All - - -# ------------------------------------------------------------------------------ -# | Secure Sockets Layer (SSL) | -# ------------------------------------------------------------------------------ - -# Rewrite secure requests properly to prevent SSL certificate warnings, e.g.: -# prevent `https://www.example.com` when your certificate only allows -# `https://secure.example.com`. - -# -# RewriteCond %{SERVER_PORT} !^443 -# RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L] -# - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Force client-side SSL redirection. - -# If a user types "example.com" in his browser, the above rule will redirect him -# to the secure version of the site. That still leaves a window of opportunity -# (the initial HTTP connection) for an attacker to downgrade or redirect the -# request. The following header ensures that browser will ONLY connect to your -# server via HTTPS, regardless of what the users type in the address bar. -# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/ - -# -# Header set Strict-Transport-Security max-age=16070400; -# - -# ------------------------------------------------------------------------------ -# | Server software information | -# ------------------------------------------------------------------------------ - -# Avoid displaying the exact Apache version number, the description of the -# generic OS-type and the information about Apache's compiled-in modules. - -# ADD THIS DIRECTIVE IN THE `httpd.conf` AS IT WILL NOT WORK IN THE `.htaccess`! - -# ServerTokens Prod - - -# ############################################################################## -# # WEB PERFORMANCE # -# ############################################################################## - -# ------------------------------------------------------------------------------ -# | Compression | -# ------------------------------------------------------------------------------ - - - - # Force compression for mangled headers. - # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping - - - SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding - RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding - - - - # Compress all output labeled with one of the following MIME-types - # (for Apache versions below 2.3.7, you don't need to enable `mod_filter` - # and can remove the `` and `` lines - # as `AddOutputFilterByType` is still in the core directives). - - AddOutputFilterByType DEFLATE application/atom+xml \ - application/javascript \ - application/json \ - application/rss+xml \ - application/vnd.ms-fontobject \ - application/x-font-ttf \ - application/x-web-app-manifest+json \ - application/xhtml+xml \ - application/xml \ - font/opentype \ - image/svg+xml \ - image/x-icon \ - text/css \ - text/html \ - text/plain \ - text/x-component \ - text/xml - - - - -# ------------------------------------------------------------------------------ -# | Content transformations | -# ------------------------------------------------------------------------------ - -# Prevent some of the mobile network providers from modifying the content of -# your site: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5. - -# -# Header set Cache-Control "no-transform" -# - -# ------------------------------------------------------------------------------ -# | ETag removal | -# ------------------------------------------------------------------------------ - -# Since we're sending far-future expires headers (see below), ETags can -# be removed: http://developer.yahoo.com/performance/rules.html#etags. - -# `FileETag None` is not enough for every server. - - Header unset ETag - - -FileETag None - -# ------------------------------------------------------------------------------ -# | Expires headers (for better cache control) | -# ------------------------------------------------------------------------------ - -# The following expires headers are set pretty far in the future. If you don't -# control versioning with filename-based cache busting, consider lowering the -# cache time for resources like CSS and JS to something like 1 week. - - - - ExpiresActive on - ExpiresDefault "access plus 1 month" - - # CSS - ExpiresByType text/css "access plus 1 year" - - # Data interchange - ExpiresByType application/json "access plus 0 seconds" - ExpiresByType application/xml "access plus 0 seconds" - ExpiresByType text/xml "access plus 0 seconds" - - # Favicon (cannot be renamed!) - ExpiresByType image/x-icon "access plus 1 week" - - # HTML components (HTCs) - ExpiresByType text/x-component "access plus 1 month" - - # HTML - ExpiresByType text/html "access plus 0 seconds" - - # JavaScript - ExpiresByType application/javascript "access plus 1 year" - - # Manifest files - ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" - ExpiresByType text/cache-manifest "access plus 0 seconds" - - # Media - ExpiresByType audio/ogg "access plus 1 month" - ExpiresByType image/gif "access plus 1 month" - ExpiresByType image/jpeg "access plus 1 month" - ExpiresByType image/png "access plus 1 month" - ExpiresByType video/mp4 "access plus 1 month" - ExpiresByType video/ogg "access plus 1 month" - ExpiresByType video/webm "access plus 1 month" - - # Web feeds - ExpiresByType application/atom+xml "access plus 1 hour" - ExpiresByType application/rss+xml "access plus 1 hour" - - # Web fonts - ExpiresByType application/font-woff "access plus 1 month" - ExpiresByType application/vnd.ms-fontobject "access plus 1 month" - ExpiresByType application/x-font-ttf "access plus 1 month" - ExpiresByType font/opentype "access plus 1 month" - ExpiresByType image/svg+xml "access plus 1 month" - - - -# ------------------------------------------------------------------------------ -# | Filename-based cache busting | -# ------------------------------------------------------------------------------ - -# If you're not using a build process to manage your filename version revving, -# you might want to consider enabling the following directives to route all -# requests such as `/css/style.12345.css` to `/css/style.css`. - -# To understand why this is important and a better idea than `*.css?v231`, read: -# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring - -# -# RewriteCond %{REQUEST_FILENAME} !-f -# RewriteCond %{REQUEST_FILENAME} !-d -# RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L] -# - -# ------------------------------------------------------------------------------ -# | File concatenation | -# ------------------------------------------------------------------------------ - -# Allow concatenation from within specific CSS and JS files, e.g.: -# Inside of `script.combined.js` you could have -# -# -# and they would be included into this single file. - -# -# -# Options +Includes -# AddOutputFilterByType INCLUDES application/javascript application/json -# SetOutputFilter INCLUDES -# -# -# Options +Includes -# AddOutputFilterByType INCLUDES text/css -# SetOutputFilter INCLUDES -# -# - -# ------------------------------------------------------------------------------ -# | Persistent connections | -# ------------------------------------------------------------------------------ - -# Allow multiple requests to be sent over the same TCP connection: -# http://httpd.apache.org/docs/current/en/mod/core.html#keepalive. - -# Enable if you serve a lot of static content but, be aware of the -# possible disadvantages! - -# -# Header set Connection Keep-Alive -# diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/dev/clipboard.html b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/dev/clipboard.html deleted file mode 100644 index 71611fae34..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/dev/clipboard.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - Clipboard playground – CKEditor Sample - - - - - -

- CKEditor Sample — clipboard plugin playground -

-
-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-
-

Editor 6

-

Content content content.

-

Styled by .someClass.

-
-
-
-
- - - diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/dialogs/paste.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/dialogs/paste.js deleted file mode 100644 index 29b9c47125..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/dialogs/paste.js +++ /dev/null @@ -1,224 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -CKEDITOR.dialog.add( 'paste', function( editor ) { - var lang = editor.lang.clipboard; - - function onPasteFrameLoad( win ) { - var doc = new CKEDITOR.dom.document( win.document ), - body = doc.getBody(), - script = doc.getById( 'cke_actscrpt' ); - - script && script.remove(); - - body.setAttribute( 'contenteditable', true ); - - // IE before version 8 will leave cursor blinking inside the document after - // editor blurred unless we clean up the selection. (#4716) - if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 ) { - doc.getWindow().on( 'blur', function() { - doc.$.selection.empty(); - } ); - } - - doc.on( 'keydown', function( e ) { - var domEvent = e.data, - key = domEvent.getKeystroke(), - processed; - - switch ( key ) { - case 27: - this.hide(); - processed = 1; - break; - - case 9: - case CKEDITOR.SHIFT + 9: - this.changeFocus( 1 ); - processed = 1; - } - - processed && domEvent.preventDefault(); - }, this ); - - editor.fire( 'ariaWidget', new CKEDITOR.dom.element( win.frameElement ) ); - - // Handle pending focus. - if ( doc.getWindow().getFrame().removeCustomData( 'pendingFocus' ) ) - body.focus(); - } - - // If pasteDialogCommit wasn't canceled by e.g. editor.getClipboardData - // then fire paste event. - // Do not use editor#paste, because it would start from beforePaste event. - editor.on( 'pasteDialogCommit', function( evt ) { - if ( evt.data ) - editor.fire( 'paste', { type: 'auto', dataValue: evt.data } ); - }, null, null, 1000 ); - - return { - title: lang.title, - - minWidth: CKEDITOR.env.ie && CKEDITOR.env.quirks ? 370 : 350, - minHeight: CKEDITOR.env.quirks ? 250 : 245, - onShow: function() { - // FIREFOX BUG: Force the browser to render the dialog to make the to-be- - // inserted iframe editable. (#3366) - this.parts.dialog.$.offsetHeight; - - this.setupContent(); - - // Set dialog title to the custom value (set e.g. in editor.openDialog callback) and reset this value. - // If custom title not set, use default one. - this.parts.title.setHtml( this.customTitle || lang.title ); - this.customTitle = null; - }, - - onLoad: function() { - if ( ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) && editor.lang.dir == 'rtl' ) - this.parts.contents.setStyle( 'overflow', 'hidden' ); - }, - - onOk: function() { - this.commitContent(); - }, - - contents: [ { - id: 'general', - label: editor.lang.common.generalTab, - elements: [ - { - type: 'html', - id: 'securityMsg', - html: '
' + lang.securityMsg + '
' - }, - { - type: 'html', - id: 'pasteMsg', - html: '
' + lang.pasteMsg + '
' - }, - { - type: 'html', - id: 'editing_area', - style: 'width:100%;height:100%', - html: '', - focus: function() { - var iframe = this.getInputElement(), - doc = iframe.getFrameDocument(), - body = doc.getBody(); - - // Frame content may not loaded at the moment. - if ( !body || body.isReadOnly() ) - iframe.setCustomData( 'pendingFocus', 1 ); - else - body.focus(); - }, - setup: function() { - var dialog = this.getDialog(); - var htmlToLoad = '' + - '' + - '' + - ''; - - var src = - CKEDITOR.env.air ? - 'javascript:void(0)' : // jshint ignore:line - CKEDITOR.env.ie ? - 'javascript:void((function(){' + encodeURIComponent( // jshint ignore:line - 'document.open();' + - '(' + CKEDITOR.tools.fixDomain + ')();' + - 'document.close();' - ) + '})())"' - : ''; - - var iframe = CKEDITOR.dom.element.createFromHtml( '' ); - - iframe.on( 'load', function( e ) { - e.removeListener(); - - var doc = iframe.getFrameDocument(); - doc.write( htmlToLoad ); - - editor.focusManager.add( doc.getBody() ); - - if ( CKEDITOR.env.air ) - onPasteFrameLoad.call( this, doc.getWindow().$ ); - }, dialog ); - - iframe.setCustomData( 'dialog', dialog ); - - var container = this.getElement(); - container.setHtml( '' ); - container.append( iframe ); - - // IE need a redirect on focus to make - // the cursor blinking inside iframe. (#5461) - if ( CKEDITOR.env.ie ) { - var focusGrabber = CKEDITOR.dom.element.createFromHtml( '' ); - focusGrabber.on( 'focus', function() { - // Since fixDomain is called in src attribute, - // IE needs some slight delay to correctly move focus. - setTimeout( function() { - iframe.$.contentWindow.focus(); - } ); - } ); - container.append( focusGrabber ); - - // Override focus handler on field. - this.focus = function() { - focusGrabber.focus(); - this.fire( 'focus' ); - }; - } - - this.getInputElement = function() { - return iframe; - }; - - // Force container to scale in IE. - if ( CKEDITOR.env.ie ) { - container.setStyle( 'display', 'block' ); - container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' ); - } - }, - commit: function() { - var editor = this.getDialog().getParentEditor(), - body = this.getInputElement().getFrameDocument().getBody(), - bogus = body.getBogus(), - html; - bogus && bogus.remove(); - - // Saving the contents so changes until paste is complete will not take place (#7500) - html = body.getHtml(); - - // Opera needs some time to think about what has happened and what it should do now. - setTimeout( function() { - editor.fire( 'pasteDialogCommit', html ); - }, 0 ); - } - } - ] - } ] - }; -} ); - -/** - * Internal event to pass paste dialog's data to the listeners. - * - * @private - * @event pasteDialogCommit - * @member CKEDITOR.editor - * @param {CKEDITOR.editor} editor This editor instance. - */ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/copy-rtl.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/copy-rtl.png deleted file mode 100644 index ef724460c1..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/copy-rtl.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/copy.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/copy.png deleted file mode 100644 index ef724460c1..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/copy.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/cut-rtl.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/cut-rtl.png deleted file mode 100644 index 0b71965366..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/cut-rtl.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/cut.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/cut.png deleted file mode 100644 index 0b71965366..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/cut.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/copy-rtl.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/copy-rtl.png deleted file mode 100644 index 29026cc0aa..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/copy-rtl.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/copy.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/copy.png deleted file mode 100644 index 29026cc0aa..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/copy.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/cut-rtl.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/cut-rtl.png deleted file mode 100644 index bfec0cfb9e..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/cut-rtl.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/cut.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/cut.png deleted file mode 100644 index bfec0cfb9e..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/cut.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/paste-rtl.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/paste-rtl.png deleted file mode 100644 index f18dac3749..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/paste-rtl.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/paste.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/paste.png deleted file mode 100644 index f18dac3749..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/hidpi/paste.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/paste-rtl.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/paste-rtl.png deleted file mode 100644 index b2bfef2037..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/paste-rtl.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/paste.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/paste.png deleted file mode 100644 index b2bfef2037..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/icons/paste.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/af.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/af.js deleted file mode 100644 index e52967cb01..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/af.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'af', { - copy: 'Kopiëer', - copyError: 'U blaaier se sekuriteitsinstelling belet die kopiëringsaksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+C).', - cut: 'Knip', - cutError: 'U blaaier se sekuriteitsinstelling belet die outomatiese knip-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).', - paste: 'Plak', - pasteArea: 'Plak-area', - pasteMsg: 'Plak die teks in die volgende teks-area met die sleutelbordkombinasie (Ctrl/Cmd+V) en druk OK.', - securityMsg: 'Weens u blaaier se sekuriteitsinstelling is data op die knipbord nie toeganklik nie. U kan dit eers weer in hierdie venster plak.', - title: 'Byvoeg' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ar.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ar.js deleted file mode 100644 index 0779e7aee6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ar.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ar', { - copy: 'نسخ', - copyError: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع عمليات النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+C).', - cut: 'قص', - cutError: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).', - paste: 'لصق', - pasteArea: 'منطقة اللصق', - pasteMsg: 'الصق داخل الصندوق بإستخدام زرائر (Ctrl/Cmd+V) في لوحة المفاتيح، ثم اضغط زر موافق.', - securityMsg: 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.', - title: 'لصق' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/bg.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/bg.js deleted file mode 100644 index af8c3fe58b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/bg.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'bg', { - copy: 'Копирай', - copyError: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl/Cmd+C).', - cut: 'Отрежи', - cutError: 'Настройките за сигурност на Вашия браузър не позволяват на редактора автоматично да изъплни действията за отрязване. Моля ползвайте клавиатурните команди за целта (ctrl+x).', - paste: 'Вмъкни', - pasteArea: 'Зона за вмъкване', - pasteMsg: 'Вмъкнете тук съдъжанието с клавиатуарата (Ctrl/Cmd+V) и натиснете OK.', - securityMsg: 'Заради настройките за сигурност на Вашия браузър, редакторът не може да прочете данните от клипборда коректно.', - title: 'Вмъкни' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/bn.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/bn.js deleted file mode 100644 index 3cf2afb24a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/bn.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'bn', { - copy: 'কপি', - copyError: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।', - cut: 'কাট', - cutError: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।', - paste: 'পেস্ট', - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (Ctrl/Cmd+V) পেস্ট করুন এবং OK চাপ দিন', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING - title: 'পেস্ট' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/bs.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/bs.js deleted file mode 100644 index 1a9c7eb3e6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/bs.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'bs', { - copy: 'Kopiraj', - copyError: 'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).', - cut: 'Izreži', - cutError: 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).', - paste: 'Zalijepi', - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING - title: 'Zalijepi' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ca.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ca.js deleted file mode 100644 index 9e4df37dd2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ca.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ca', { - copy: 'Copiar', - copyError: 'La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+C).', - cut: 'Retallar', - cutError: 'La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+X).', - paste: 'Enganxar', - pasteArea: 'Àrea d\'enganxat', - pasteMsg: 'Si us plau, enganxi dins del següent camp utilitzant el teclat (Ctrl/Cmd+V) i premi OK.', - securityMsg: 'A causa de la configuració de seguretat del vostre navegador, l\'editor no pot accedir a les dades del porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.', - title: 'Enganxar' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/cs.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/cs.js deleted file mode 100644 index 92b5e54962..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/cs.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'cs', { - copy: 'Kopírovat', - copyError: 'Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+C).', - cut: 'Vyjmout', - cutError: 'Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+X).', - paste: 'Vložit', - pasteArea: 'Oblast vkládání', - pasteMsg: 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (Ctrl/Cmd+V) a stiskněte OK.', - securityMsg: 'Z důvodů nastavení bezpečnosti vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.', - title: 'Vložit' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/cy.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/cy.js deleted file mode 100644 index e7f8137d3a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/cy.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'cy', { - copy: 'Copïo', - copyError: '\'Dyw gosodiadau diogelwch eich porwr ddim yn caniatàu\'r golygydd i gynnal \'gweithredoedd copïo\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).', - cut: 'Torri', - cutError: 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd torri\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).', - paste: 'Gludo', - pasteArea: 'Ardal Gludo', - pasteMsg: 'Gludwch i mewn i\'r blwch canlynol gan ddefnyddio\'r bysellfwrdd (Ctrl/Cmd+V) a phwyso Iawn.', - securityMsg: 'Oherwydd gosodiadau diogelwch eich porwr, \'dyw\'r porwr ddim yn gallu ennill mynediad i\'r data ar y clipfwrdd yn uniongyrchol. Mae angen i chi ei ludo eto i\'r ffenestr hon.', - title: 'Gludo' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/da.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/da.js deleted file mode 100644 index 684305c873..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/da.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'da', { - copy: 'Kopiér', - copyError: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).', - cut: 'Klip', - cutError: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).', - paste: 'Indsæt', - pasteArea: 'Indsæt område', - pasteMsg: 'Indsæt i feltet herunder (Ctrl/Cmd+V) og klik på OK.', - securityMsg: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

Du skal indsætte udklipsholderens indhold i dette vindue igen.', - title: 'Indsæt' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/de.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/de.js deleted file mode 100644 index f7624593b4..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/de.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'de', { - copy: 'Kopieren', - copyError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).', - cut: 'Ausschneiden', - cutError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).', - paste: 'Einfügen', - pasteArea: 'Einfügebereich', - pasteMsg: 'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit Strg+V) ein und bestätigen Sie mit OK.', - securityMsg: 'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.', - title: 'Einfügen' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/el.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/el.js deleted file mode 100644 index fcedde5e8b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/el.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'el', { - copy: 'Αντιγραφή', - copyError: 'Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).', - cut: 'Αποκοπή', - cutError: 'Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).', - paste: 'Επικόλληση', - pasteArea: 'Περιοχή Επικόλλησης', - pasteMsg: 'Παρακαλώ επικολλήστε στο ακόλουθο κουτί χρησιμοποιώντας το πληκτρολόγιο (Ctrl/Cmd+V) και πατήστε OK.', - securityMsg: 'Λόγων των ρυθμίσεων ασφάλειας του περιηγητή σας, ο επεξεργαστής δεν μπορεί να έχει πρόσβαση στην μνήμη επικόλλησης. Χρειάζεται να επικολλήσετε ξανά σε αυτό το παράθυρο.', - title: 'Επικόλληση' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en-au.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en-au.js deleted file mode 100644 index 1921e7d4b5..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en-au.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'en-au', { - copy: 'Copy', - copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', - cut: 'Cut', - cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', - paste: 'Paste', - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', - title: 'Paste' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en-ca.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en-ca.js deleted file mode 100644 index 8548ecf220..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en-ca.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'en-ca', { - copy: 'Copy', - copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', - cut: 'Cut', - cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', - paste: 'Paste', - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', - title: 'Paste' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en-gb.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en-gb.js deleted file mode 100644 index e081843032..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en-gb.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'en-gb', { - copy: 'Copy', - copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', - cut: 'Cut', - cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', - paste: 'Paste', - pasteArea: 'Paste Area', - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', - title: 'Paste' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en.js deleted file mode 100644 index 1666af2f16..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/en.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'en', { - copy: 'Copy', - copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', - cut: 'Cut', - cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', - paste: 'Paste', - pasteArea: 'Paste Area', - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', - title: 'Paste' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/eo.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/eo.js deleted file mode 100644 index c0ffcffba7..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/eo.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'eo', { - copy: 'Kopii', - copyError: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).', - cut: 'Eltondi', - cutError: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).', - paste: 'Interglui', - pasteArea: 'Intergluoareo', - pasteMsg: 'Bonvolu glui la tekston en la jenan areon per uzado de la klavaro (Ctrl/Cmd+V) kaj premu OK', - securityMsg: 'Pro la sekurecagordo de via TTT-legilo, la redaktilo ne povas rekte atingi viajn datenojn en la poŝo. Bonvolu denove interglui la datenojn en tiun fenestron.', - title: 'Interglui' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/es.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/es.js deleted file mode 100644 index 3894ebd544..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/es.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'es', { - copy: 'Copiar', - copyError: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).', - cut: 'Cortar', - cutError: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).', - paste: 'Pegar', - pasteArea: 'Zona de pegado', - pasteMsg: 'Por favor pegue dentro del cuadro utilizando el teclado (Ctrl/Cmd+V);\r\nluego presione Aceptar.', - securityMsg: 'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.', - title: 'Pegar' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/et.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/et.js deleted file mode 100644 index 91ee499f67..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/et.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'et', { - copy: 'Kopeeri', - copyError: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).', - cut: 'Lõika', - cutError: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).', - paste: 'Aseta', - pasteArea: 'Asetamise ala', - pasteMsg: 'Palun aseta tekst järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+V) ja vajuta seejärel OK.', - securityMsg: 'Sinu veebisirvija turvaseadete tõttu ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead asetama need uuesti siia aknasse.', - title: 'Asetamine' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/eu.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/eu.js deleted file mode 100644 index 07f0b2c258..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/eu.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'eu', { - copy: 'Kopiatu', - copyError: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+C).', - cut: 'Ebaki', - cutError: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+X).', - paste: 'Itsatsi', - pasteArea: 'Itsasteko Area', - pasteMsg: 'Mesedez teklatua erabilita (Ctrl/Cmd+V) ondorego eremuan testua itsatsi eta OK sakatu.', - securityMsg: 'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.', - title: 'Itsatsi' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fa.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fa.js deleted file mode 100644 index ab92155b8e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fa.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'fa', { - copy: 'رونوشت', - copyError: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپی کردن را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+C).', - cut: 'برش', - cutError: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+X).', - paste: 'چسباندن', - pasteArea: 'محل چسباندن', - pasteMsg: 'لطفا متن را با کلیدهای (Ctrl/Cmd+V) در این جعبهٴ متنی بچسبانید و پذیرش را بزنید.', - securityMsg: 'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.', - title: 'چسباندن' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fi.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fi.js deleted file mode 100644 index 079c7713fc..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fi.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'fi', { - copy: 'Kopioi', - copyError: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).', - cut: 'Leikkaa', - cutError: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).', - paste: 'Liitä', - pasteArea: 'Leikealue', - pasteMsg: 'Liitä painamalla (Ctrl+V) ja painamalla OK.', - securityMsg: 'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.', - title: 'Liitä' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fo.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fo.js deleted file mode 100644 index 87c98402d6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fo.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'fo', { - copy: 'Avrita', - copyError: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).', - cut: 'Kvett', - cutError: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).', - paste: 'Innrita', - pasteArea: 'Avritingarumráði', - pasteMsg: 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (Ctrl/Cmd+V) og klikk á Góðtak.', - securityMsg: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.', - title: 'Innrita' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fr-ca.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fr-ca.js deleted file mode 100644 index 910cad6f16..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fr-ca.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'fr-ca', { - copy: 'Copier', - copyError: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).', - cut: 'Couper', - cutError: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).', - paste: 'Coller', - pasteArea: 'Coller la zone', - pasteMsg: 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (Ctrl/Cmd+V) et appuyer sur OK.', - securityMsg: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.', - title: 'Coller' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fr.js deleted file mode 100644 index 0fb634ed44..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/fr.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'fr', { - copy: 'Copier', - copyError: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl/Cmd+C).', - cut: 'Couper', - cutError: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement l\'opération "couper". Veuillez utiliser le raccourci clavier (Ctrl/Cmd+X).', - paste: 'Coller', - pasteArea: 'Coller la zone', - pasteMsg: 'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (Ctrl/Cmd+V) et cliquez sur OK.', - securityMsg: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur n\'est pas en mesure d\'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.', - title: 'Coller' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/gl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/gl.js deleted file mode 100644 index 3cf9e34a22..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/gl.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'gl', { - copy: 'Copiar', - copyError: 'Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de copia. Use o teclado para iso (Ctrl/Cmd+C).', - cut: 'Cortar', - cutError: 'Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).', - paste: 'Pegar', - pasteArea: 'Zona de pegado', - pasteMsg: 'Pegue dentro do seguinte cadro usando o teclado (Ctrl/Cmd+V) e prema en Aceptar', - securityMsg: 'Por mor da configuración de seguranza do seu navegador, o editor non ten acceso ao portapapeis. É necesario pegalo novamente nesta xanela.', - title: 'Pegar' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/gu.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/gu.js deleted file mode 100644 index 2e2d6a90eb..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/gu.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'gu', { - copy: 'નકલ', - copyError: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का प्रयोग करें।', - cut: 'કાપવું', - cutError: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.', - paste: 'પેસ્ટ', - pasteArea: 'પેસ્ટ કરવાની જગ્યા', - pasteMsg: 'Ctrl/Cmd+V નો પ્રયોગ કરી પેસ્ટ કરો', - securityMsg: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.', - title: 'પેસ્ટ' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/he.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/he.js deleted file mode 100644 index 726da40c69..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/he.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'he', { - copy: 'העתקה', - copyError: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+C).', - cut: 'גזירה', - cutError: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).', - paste: 'הדבקה', - pasteArea: 'איזור הדבקה', - pasteMsg: 'נא להדביק בתוך הקופסה באמצעות (Ctrl/Cmd+V) וללחוץ על אישור.', - securityMsg: 'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (Clipboard) בצורה ישירה. נא להדביק שוב בחלון זה.', - title: 'הדבקה' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/hi.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/hi.js deleted file mode 100644 index f9876385ac..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/hi.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'hi', { - copy: 'कॉपी', - copyError: 'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+C) का प्रयोग करें।', - cut: 'कट', - cutError: 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।', - paste: 'पेस्ट', - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Ctrl/Cmd+V का प्रयोग करके पेस्ट करें और ठीक है करें.', - securityMsg: 'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.', - title: 'पेस्ट' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/hr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/hr.js deleted file mode 100644 index 21e6f34c85..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/hr.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'hr', { - copy: 'Kopiraj', - copyError: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).', - cut: 'Izreži', - cutError: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).', - paste: 'Zalijepi', - pasteArea: 'Prostor za ljepljenje', - pasteMsg: 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (Ctrl/Cmd+V) i kliknite OK.', - securityMsg: 'Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.', - title: 'Zalijepi' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/hu.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/hu.js deleted file mode 100644 index d71eb7ca87..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/hu.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'hu', { - copy: 'Másolás', - copyError: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).', - cut: 'Kivágás', - cutError: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).', - paste: 'Beillesztés', - pasteArea: 'Beszúrás mező', - pasteMsg: 'Másolja be az alábbi mezőbe a Ctrl/Cmd+V billentyűk lenyomásával, majd nyomjon Rendben-t.', - securityMsg: 'A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.', - title: 'Beillesztés' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/id.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/id.js deleted file mode 100644 index 8c6a4abd9b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/id.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'id', { - copy: 'Salin', - copyError: 'Pengaturan keamanan peramban anda tidak mengizinkan editor untuk mengeksekusi operasi menyalin secara otomatis. Mohon gunakan papan tuts (Ctrl/Cmd+C)', - cut: 'Potong', - cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING - paste: 'Tempel', - pasteArea: 'Area Tempel', - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING - title: 'Tempel' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/is.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/is.js deleted file mode 100644 index e534daaef8..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/is.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'is', { - copy: 'Afrita', - copyError: 'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).', - cut: 'Klippa', - cutError: 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).', - paste: 'Líma', - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Límdu í svæðið hér að neðan og (Ctrl/Cmd+V) og smelltu á OK.', - securityMsg: 'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.', - title: 'Líma' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/it.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/it.js deleted file mode 100644 index 56a9bf2b95..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/it.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'it', { - copy: 'Copia', - copyError: 'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).', - cut: 'Taglia', - cutError: 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).', - paste: 'Incolla', - pasteArea: 'Incolla', - pasteMsg: 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (Ctrl/Cmd+V) e premi OK.', - securityMsg: 'A causa delle impostazioni di sicurezza del browser,l\'editor non è in grado di accedere direttamente agli appunti. E\' pertanto necessario incollarli di nuovo in questa finestra.', - title: 'Incolla' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ja.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ja.js deleted file mode 100644 index 5050f9beb7..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ja.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ja', { - copy: 'コピー', - copyError: 'ブラウザーのセキュリティ設定によりエディタのコピー操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+C)を使用してください。', - cut: '切り取り', - cutError: 'ブラウザーのセキュリティ設定によりエディタの切り取り操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。', - paste: '貼り付け', - pasteArea: '貼り付け場所', - pasteMsg: 'キーボード(Ctrl/Cmd+V)を使用して、次の入力エリア内で貼り付けて、OKを押してください。', - securityMsg: 'ブラウザのセキュリティ設定により、エディタはクリップボードデータに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。', - title: '貼り付け' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ka.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ka.js deleted file mode 100644 index 62e9c4e3a0..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ka.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ka', { - copy: 'ასლი', - copyError: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ასლის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+C).', - cut: 'ამოჭრა', - cutError: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ამოჭრის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+X).', - paste: 'ჩასმა', - pasteArea: 'ჩასმის არე', - pasteMsg: 'ჩასვით ამ არის შიგნით კლავიატურის გამოყენებით (Ctrl/Cmd+V) და დააჭირეთ OK-ს', - securityMsg: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა clipboard-ის მონაცემების წვდომის უფლებას. კიდევ უნდა ჩასვათ ტექსტი ამ ფანჯარაში.', - title: 'ჩასმა' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/km.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/km.js deleted file mode 100644 index 9eaa1e1295..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/km.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'km', { - copy: 'ចម្លង', - copyError: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+C)។', - cut: 'កាត់យក', - cutError: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+X) ។', - paste: 'បិទ​ភ្ជាប់', - pasteArea: 'តំបន់​បិទ​ភ្ជាប់', - pasteMsg: 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី ​(Ctrl/Cmd+V) ហើយចុច OK ។', - securityMsg: 'ព្រោះតែ​ការកំណត់​សុវត្ថិភាព ប្រអប់សរសេរ​មិន​អាចចាប់​យកទិន្នន័យពីក្តារតម្បៀតខ្ទាស់​អ្នក​​ដោយផ្ទាល់​បានទេ។ អ្នក​ត្រូវចំលង​ដាក់វាម្តង​ទៀត ក្នុងផ្ទាំងនេះ។', - title: 'បិទ​ភ្ជាប់' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ko.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ko.js deleted file mode 100644 index f68c2482bf..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ko.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ko', { - copy: '복사하기', - copyError: '브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+C).', - cut: '잘라내기', - cutError: '브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+X).', - paste: '붙여넣기', - pasteArea: '범위 붙여넣기', - pasteMsg: '키보드의 (Ctrl/Cmd+V) 를 이용해서 상자안에 붙여넣고 OK 를 누르세요.', - securityMsg: '브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.', - title: '붙여넣기' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ku.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ku.js deleted file mode 100644 index 20c581cca7..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ku.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ku', { - copy: 'لەبەرگرتنەوە', - copyError: 'پارێزی وێبگەڕەکەت ڕێگەنادات بەسەرنووسەکە لە لکاندنی دەقی خۆکارارنە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+C).', - cut: 'بڕین', - cutError: 'پارێزی وێبگەڕەکەت ڕێگەنادات بە سەرنووسەکە لەبڕینی خۆکارانە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+X).', - paste: 'لکاندن', - pasteArea: 'ناوچەی لکاندن', - pasteMsg: 'تکایە بیلکێنە لەناوەوەی ئەم سنوقە لەڕێی تەختەکلیلەکەت بە بەکارهێنانی کلیلی (Ctrl/Cmd+V) دووای کلیکی باشە بکە.', - securityMsg: 'بەهۆی شێوەپێدانی پارێزی وێبگەڕەکەت، سەرنووسەکه ناتوانێت دەستبگەیەنێت بەهەڵگیراوەکە ڕاستەوخۆ. بۆیه پێویسته دووباره بیلکێنیت لەم پەنجەرەیه.', - title: 'لکاندن' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/lt.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/lt.js deleted file mode 100644 index 998f6cbb73..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/lt.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'lt', { - copy: 'Kopijuoti', - copyError: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+C).', - cut: 'Iškirpti', - cutError: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+X).', - paste: 'Įdėti', - pasteArea: 'Įkelti dalį', - pasteMsg: 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (Ctrl/Cmd+V) ir paspauskite mygtuką OK.', - securityMsg: 'Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.', - title: 'Įdėti' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/lv.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/lv.js deleted file mode 100644 index 0f114616bc..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/lv.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'lv', { - copy: 'Kopēt', - copyError: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt kopēšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+C), lai veiktu šo darbību.', - cut: 'Izgriezt', - cutError: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt izgriezšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+X), lai veiktu šo darbību.', - paste: 'Ielīmēt', - pasteArea: 'Ielīmēšanas zona', - pasteMsg: 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (Ctrl/Cmd+V) un apstipriniet ar Darīts!.', - securityMsg: 'Jūsu pārlūka drošības uzstādījumu dēļ, nav iespējams tieši piekļūt jūsu starpliktuvei. Jums jāielīmē atkārtoti šajā logā.', - title: 'Ievietot' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/mk.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/mk.js deleted file mode 100644 index 9f0f07e7ac..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/mk.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'mk', { - copy: 'Copy', // MISSING - copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', // MISSING - cut: 'Cut', // MISSING - cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING - paste: 'Paste', // MISSING - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING - title: 'Paste' // MISSING -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/mn.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/mn.js deleted file mode 100644 index c1309f7c89..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/mn.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'mn', { - copy: 'Хуулах', - copyError: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хослолыг ашиглана уу.', - cut: 'Хайчлах', - cutError: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.', - paste: 'Буулгах', - pasteArea: 'Paste Area', // MISSING - pasteMsg: '(Ctrl/Cmd+V) товчийг ашиглан paste хийнэ үү. Мөн OK дар.', - securityMsg: 'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.', - title: 'Буулгах' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ms.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ms.js deleted file mode 100644 index 8c465d3508..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ms.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ms', { - copy: 'Salin', - copyError: 'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).', - cut: 'Potong', - cutError: 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).', - paste: 'Tampal', - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING - title: 'Tampal' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/nb.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/nb.js deleted file mode 100644 index fbc67fe5b9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/nb.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'nb', { - copy: 'Kopier', - copyError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+C).', - cut: 'Klipp ut', - cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+X).', - paste: 'Lim inn', - pasteArea: 'Innlimingsområde', - pasteMsg: 'Vennligst lim inn i følgende boks med tastaturet (Ctrl/Cmd+V) og trykk OK.', - securityMsg: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.', - title: 'Lim inn' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/nl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/nl.js deleted file mode 100644 index d58eec3da1..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/nl.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'nl', { - copy: 'Kopiëren', - copyError: 'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.', - cut: 'Knippen', - cutError: 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.', - paste: 'Plakken', - pasteArea: 'Plakgebied', - pasteMsg: 'Plak de tekst in het volgende vak gebruikmakend van uw toetsenbord (Ctrl/Cmd+V) en klik op OK.', - securityMsg: 'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.', - title: 'Plakken' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/no.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/no.js deleted file mode 100644 index ea3ea16f0c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/no.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'no', { - copy: 'Kopier', - copyError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).', - cut: 'Klipp ut', - cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).', - paste: 'Lim inn', - pasteArea: 'Innlimingsområde', - pasteMsg: 'Vennligst lim inn i følgende boks med tastaturet (Ctrl/Cmd+V) og trykk OK.', - securityMsg: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.', - title: 'Lim inn' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/pl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/pl.js deleted file mode 100644 index 82f9a59cfc..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/pl.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'pl', { - copy: 'Kopiuj', - copyError: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.', - cut: 'Wytnij', - cutError: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.', - paste: 'Wklej', - pasteArea: 'Obszar wklejania', - pasteMsg: 'Wklej tekst w poniższym polu, używając skrótu klawiaturowego (Ctrl/Cmd+V), i kliknij OK.', - securityMsg: 'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę ponownie wkleić dane w tym oknie.', - title: 'Wklej' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/pt-br.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/pt-br.js deleted file mode 100644 index cc1d5c29d5..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/pt-br.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'pt-br', { - copy: 'Copiar', - copyError: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).', - cut: 'Recortar', - cutError: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).', - paste: 'Colar', - pasteArea: 'Área para Colar', - pasteMsg: 'Transfira o link usado na caixa usando o teclado com (Ctrl/Cmd+V) e OK.', - securityMsg: 'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo manualmente nesta janela.', - title: 'Colar' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/pt.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/pt.js deleted file mode 100644 index 65601160a1..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/pt.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'pt', { - copy: 'Copiar', - copyError: 'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).', - cut: 'Cortar', - cutError: 'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).', - paste: 'Colar', - pasteArea: 'Colar área', - pasteMsg: 'Por favor, cole dentro da seguinte caixa usando o teclado (Ctrl/Cmd+V) e prima OK.', - securityMsg: 'Devido ás definições de segurança do teu browser, o editor não pode aceder ao clipboard diretamente. É necessário que voltes a colar as informações nesta janela.', - title: 'Colar' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ro.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ro.js deleted file mode 100644 index 7db3d9830b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ro.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ro', { - copy: 'Copiază', - copyError: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+C).', - cut: 'Taie', - cutError: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+X).', - paste: 'Adaugă', - pasteArea: 'Suprafața de adăugare', - pasteMsg: 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (Ctrl/Cmd+V) şi apăsaţi OK', - securityMsg: 'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.', - title: 'Adaugă' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ru.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ru.js deleted file mode 100644 index 8f423b37d3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ru.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ru', { - copy: 'Копировать', - copyError: 'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по копированию текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+C).', - cut: 'Вырезать', - cutError: 'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по вырезке текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+X).', - paste: 'Вставить', - pasteArea: 'Зона для вставки', - pasteMsg: 'Пожалуйста, вставьте текст в зону ниже, используя клавиатуру (Ctrl/Cmd+V) и нажмите кнопку "OK".', - securityMsg: 'Настройки безопасности вашего браузера не разрешают редактору напрямую обращаться к буферу обмена. Вы должны вставить текст снова в это окно.', - title: 'Вставить' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/si.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/si.js deleted file mode 100644 index 17890124bd..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/si.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'si', { - copy: 'පිටපත් කරන්න', - copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', // MISSING - cut: 'කපාගන්න', - cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING - paste: 'අලවන්න', - pasteArea: 'අලවන ප්‍රදේශ', - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING - title: 'අලවන්න' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sk.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sk.js deleted file mode 100644 index edccb6ba21..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sk.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'sk', { - copy: 'Kopírovať', - copyError: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu kopírovania. Prosím, použite na to klávesnicu (Ctrl/Cmd+C).', - cut: 'Vystrihnúť', - cutError: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu vystrihnutia. Prosím, použite na to klávesnicu (Ctrl/Cmd+X).', - paste: 'Vložiť', - pasteArea: 'Miesto pre vloženie', - pasteMsg: 'Prosím, vložte nasledovný rámček použitím klávesnice (Ctrl/Cmd+V) a stlačte OK.', - securityMsg: 'Kvôli vašim bezpečnostným nastaveniam prehliadača editor nie je schopný pristupovať k vašej schránke na kopírovanie priamo. Vložte to preto do tohto okna.', - title: 'Vložiť' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sl.js deleted file mode 100644 index 3d3b77dfe8..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sl.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'sl', { - copy: 'Kopiraj', - copyError: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).', - cut: 'Izreži', - cutError: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).', - paste: 'Prilepi', - pasteArea: 'Prilepi Prostor', - pasteMsg: 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (Ctrl/Cmd+V) in pritisnite V redu.', - securityMsg: 'Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.', - title: 'Prilepi' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sq.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sq.js deleted file mode 100644 index 137148c4e9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sq.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'sq', { - copy: 'Kopjo', - copyError: 'Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e kopjimit. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+C).', - cut: 'Preje', - cutError: 'Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e prerjes. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+X).', - paste: 'Hidhe', - pasteArea: 'Hapësira Hedhëse', - pasteMsg: 'Ju lutemi hidhni brenda kutizës në vijim duke shfrytëzuar tastierën (Ctrl/Cmd+V) dhe shtypni Mirë.', - securityMsg: 'Për shkak të dhënave të sigurisë së shfletuesit tuaj, redaktuesi nuk është në gjendje të i qaset drejtpërdrejtë të dhanve të tabelës suaj të punës. Ju duhet të hidhni atë përsëri në këtë dritare.', - title: 'Hidhe' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sr-latn.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sr-latn.js deleted file mode 100644 index 57eb2a66ff..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sr-latn.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'sr-latn', { - copy: 'Kopiraj', - copyError: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+C).', - cut: 'Iseci', - cutError: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+X).', - paste: 'Zalepi', - pasteArea: 'Prostor za lepljenje', - pasteMsg: 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (Ctrl/Cmd+V) i da pritisnete OK.', - securityMsg: 'Zbog sigurnosnih postavki vašeg pregledača, editor nije u mogućnosti da direktno pristupi podacima u klipbordu. Potrebno je da zalepite još jednom u ovom prozoru.', - title: 'Zalepi' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sr.js deleted file mode 100644 index f3d7c6da8e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sr.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'sr', { - copy: 'Копирај', - copyError: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+C).', - cut: 'Исеци', - cutError: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).', - paste: 'Залепи', - pasteArea: 'Залепи зону', - pasteMsg: 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (Ctrl/Cmd+V) и да притиснете OK.', - securityMsg: 'Због сигурносних подешавања претраживача, едитор не може да приступи оставу. Требате да га поново залепите у овом прозору.', - title: 'Залепи' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sv.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sv.js deleted file mode 100644 index 5f0229d52c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/sv.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'sv', { - copy: 'Kopiera', - copyError: 'Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden kopiera. Använd (Ctrl/Cmd+C) istället.', - cut: 'Klipp ut', - cutError: 'Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden klipp ut. Använd (Ctrl/Cmd+X) istället.', - paste: 'Klistra in', - pasteArea: 'Paste Area', - pasteMsg: 'Var god och klistra in Er text i rutan nedan genom att använda (Ctrl/Cmd+V) klicka sen på OK.', - securityMsg: 'På grund av din webbläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.', - title: 'Klistra in' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/th.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/th.js deleted file mode 100644 index 3731c36705..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/th.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'th', { - copy: 'สำเนา', - copyError: 'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว C พร้อมกัน).', - cut: 'ตัด', - cutError: 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).', - paste: 'วาง', - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (Ctrl/Cmd และ V)พร้อมๆกัน และกด OK.', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING - title: 'วาง' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/tr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/tr.js deleted file mode 100644 index 889106d64a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/tr.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'tr', { - copy: 'Kopyala', - copyError: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl/Cmd+C) tuşlarını kullanın.', - cut: 'Kes', - cutError: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl/Cmd+X) tuşlarını kullanın.', - paste: 'Yapıştır', - pasteArea: 'Yapıştırma Alanı', - pasteMsg: 'Lütfen aşağıdaki kutunun içine yapıştırın. (Ctrl/Cmd+V) ve Tamam butonunu tıklayın.', - securityMsg: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..', - title: 'Yapıştır' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/tt.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/tt.js deleted file mode 100644 index fb9afa1702..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/tt.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'tt', { - copy: 'Күчермәләү', - copyError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.', - cut: 'Кисеп алу', - cutError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.', - paste: 'Өстәү', - pasteArea: 'Өстәү мәйданы', - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING - title: 'Өстәү' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ug.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ug.js deleted file mode 100644 index db51718bff..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/ug.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'ug', { - copy: 'نەشر ھوقۇقىغا ئىگە بەلگىسى', - copyError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كۆچۈر مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاڭ', - cut: 'كەس', - cutError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كەس مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاڭ', - paste: 'چاپلا', - pasteArea: 'چاپلاش دائىرىسى', - pasteMsg: 'ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+V) نى ئىشلىتىپ مەزمۇننى تۆۋەندىكى رامكىغا كۆچۈرۈڭ، ئاندىن جەزملەنى بېسىڭ', - securityMsg: 'توركۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى سەۋەبىدىن بۇ تەھرىرلىگۈچ چاپلاش تاختىسىدىكى مەزمۇننى بىۋاستە زىيارەت قىلالمايدۇ، بۇ كۆزنەكتە قايتا بىر قېتىم چاپلىشىڭىز كېرەك.', - title: 'چاپلا' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/uk.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/uk.js deleted file mode 100644 index 65ee571499..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/uk.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'uk', { - copy: 'Копіювати', - copyError: 'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+C).', - cut: 'Вирізати', - cutError: 'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X)', - paste: 'Вставити', - pasteArea: 'Область вставки', - pasteMsg: 'Будь ласка, вставте інформацію з буфера обміну в цю область, користуючись комбінацією клавіш (Ctrl/Cmd+V), та натисніть OK.', - securityMsg: 'Редактор не може отримати прямий доступ до буферу обміну у зв\'язку з налаштуваннями Вашого браузера. Вам потрібно вставити інформацію в це вікно.', - title: 'Вставити' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/vi.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/vi.js deleted file mode 100644 index f8083d8a04..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/vi.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'vi', { - copy: 'Sao chép', - copyError: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+C).', - cut: 'Cắt', - cutError: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+X).', - paste: 'Dán', - pasteArea: 'Khu vực dán', - pasteMsg: 'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (Ctrl/Cmd+V) và nhấn vào nút Đồng ý.', - securityMsg: 'Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.', - title: 'Dán' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/zh-cn.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/zh-cn.js deleted file mode 100644 index 44cd18606e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/zh-cn.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'zh-cn', { - copy: '复制', - copyError: '您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl/Cmd+C)来完成。', - cut: '剪切', - cutError: '您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成。', - paste: '粘贴', - pasteArea: '粘贴区域', - pasteMsg: '请使用键盘快捷键(Ctrl/Cmd+V)把内容粘贴到下面的方框里,再按 确定', - securityMsg: '因为您的浏览器的安全设置原因,本编辑器不能直接访问您的剪贴板内容,你需要在本窗口重新粘贴一次。', - title: '粘贴' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/zh.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/zh.js deleted file mode 100644 index c7476332c2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/lang/zh.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'clipboard', 'zh', { - copy: '複製', - copyError: '瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用鍵盤快捷鍵 (Ctrl/Cmd+C) 複製。', - cut: '剪下', - cutError: '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用鏐盤快捷鍵 (Ctrl/Cmd+X) 剪下。', - paste: '貼上', - pasteArea: '貼上區', - pasteMsg: '請使用鍵盤快捷鍵 (Ctrl/Cmd+V) 貼到下方區域中並按下「確定」。', - securityMsg: '因為瀏覽器的安全性設定,本編輯器無法直接存取您的剪貼簿資料,請您自行在本視窗進行貼上動作。', - title: '貼上' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/plugin.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/plugin.js deleted file mode 100644 index 5644db3336..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/clipboard/plugin.js +++ /dev/null @@ -1,1250 +0,0 @@ -/* global alert */ - -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -/** - * @ignore - * File overview: Clipboard support. - */ - -// -// EXECUTION FLOWS: -// -- CTRL+C -// * browser's default behaviour -// -- CTRL+V -// * listen onKey (onkeydown) -// * simulate 'beforepaste' for non-IEs on editable -// * simulate 'paste' for Fx2/Opera on editable -// * listen 'onpaste' on editable ('onbeforepaste' for IE) -// * fire 'beforePaste' on editor -// * !canceled && getClipboardDataByPastebin -// * fire 'paste' on editor -// * !canceled && fire 'afterPaste' on editor -// -- CTRL+X -// * listen onKey (onkeydown) -// * fire 'saveSnapshot' on editor -// * browser's default behaviour -// * deferred second 'saveSnapshot' event -// -- Copy command -// * tryToCutCopy -// * execCommand -// * !success && alert -// -- Cut command -// * fixCut -// * tryToCutCopy -// * execCommand -// * !success && alert -// -- Paste command -// * fire 'paste' on editable ('beforepaste' for IE) -// * !canceled && execCommand 'paste' -// * !success && fire 'pasteDialog' on editor -// -- Paste from native context menu & menubar -// (Fx & Webkits are handled in 'paste' default listner. -// Opera cannot be handled at all because it doesn't fire any events -// Special treatment is needed for IE, for which is this part of doc) -// * listen 'onpaste' -// * cancel native event -// * fire 'beforePaste' on editor -// * !canceled && getClipboardDataByPastebin -// * execIECommand( 'paste' ) -> this fires another 'paste' event, so cancel it -// * fire 'paste' on editor -// * !canceled && fire 'afterPaste' on editor -// -// -// PASTE EVENT - PREPROCESSING: -// -- Possible dataValue types: auto, text, html. -// -- Possible dataValue contents: -// * text (possible \n\r) -// * htmlified text (text + br,div,p - no presentional markup & attrs - depends on browser) -// * html -// -- Possible flags: -// * htmlified - if true then content is a HTML even if no markup inside. This flag is set -// for content from editable pastebins, because they 'htmlify' pasted content. -// -// -- Type: auto: -// * content: htmlified text -> filter, unify text markup (brs, ps, divs), set type: text -// * content: html -> filter, set type: html -// -- Type: text: -// * content: htmlified text -> filter, unify text markup -// * content: html -> filter, strip presentional markup, unify text markup -// -- Type: html: -// * content: htmlified text -> filter, unify text markup -// * content: html -> filter -// -// -- Phases: -// * filtering (priorities 3-5) - e.g. pastefromword filters -// * content type sniffing (priority 6) -// * markup transformations for text (priority 6) -// - -'use strict'; - -( function() { - // Register the plugin. - CKEDITOR.plugins.add( 'clipboard', { - requires: 'dialog', - // jscs:disable maximumLineLength - lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% - // jscs:enable maximumLineLength - icons: 'copy,copy-rtl,cut,cut-rtl,paste,paste-rtl', // %REMOVE_LINE_CORE% - hidpi: true, // %REMOVE_LINE_CORE% - init: function( editor ) { - var textificationFilter; - - initClipboard( editor ); - - CKEDITOR.dialog.add( 'paste', CKEDITOR.getUrl( this.path + 'dialogs/paste.js' ) ); - - editor.on( 'paste', function( evt ) { - var data = evt.data.dataValue, - blockElements = CKEDITOR.dtd.$block; - - // Filter webkit garbage. - if ( data.indexOf( 'Apple-' ) > -1 ) { - // Replace special webkit's   with simple space, because webkit - // produces them even for normal spaces. - data = data.replace( / <\/span>/gi, ' ' ); - - // Strip around white-spaces when not in forced 'html' content type. - // This spans are created only when pasting plain text into Webkit, - // but for safety reasons remove them always. - if ( evt.data.type != 'html' ) { - data = data.replace( /]*>([^<]*)<\/span>/gi, function( all, spaces ) { - // Replace tabs with 4 spaces like Fx does. - return spaces.replace( /\t/g, '    ' ); - } ); - } - - // This br is produced only when copying & pasting HTML content. - if ( data.indexOf( '
' ) > -1 ) { - evt.data.startsWithEOL = 1; - evt.data.preSniffing = 'html'; // Mark as not text. - data = data.replace( /
/, '' ); - } - - // Remove all other classes. - data = data.replace( /(<[^>]+) class="Apple-[^"]*"/gi, '$1' ); - } - - // Strip editable that was copied from inside. (#9534) - if ( data.match( /^<[^<]+cke_(editable|contents)/i ) ) { - var tmp, - editable_wrapper, - wrapper = new CKEDITOR.dom.element( 'div' ); - - wrapper.setHtml( data ); - // Verify for sure and check for nested editor UI parts. (#9675) - while ( wrapper.getChildCount() == 1 && - ( tmp = wrapper.getFirst() ) && - tmp.type == CKEDITOR.NODE_ELEMENT && // Make sure first-child is element. - ( tmp.hasClass( 'cke_editable' ) || tmp.hasClass( 'cke_contents' ) ) ) { - wrapper = editable_wrapper = tmp; - } - - // If editable wrapper was found strip it and bogus
(added on FF). - if ( editable_wrapper ) - data = editable_wrapper.getHtml().replace( /
$/i, '' ); - } - - if ( CKEDITOR.env.ie ) { - //  

->

(br.cke-pasted-remove will be removed later) - data = data.replace( /^ (?: |\r\n)?<(\w+)/g, function( match, elementName ) { - if ( elementName.toLowerCase() in blockElements ) { - evt.data.preSniffing = 'html'; // Mark as not a text. - return '<' + elementName; - } - return match; - } ); - } else if ( CKEDITOR.env.webkit ) { - //


->


- // We don't mark br, because this situation can happen for htmlified text too. - data = data.replace( /<\/(\w+)>

<\/div>$/, function( match, elementName ) { - if ( elementName in blockElements ) { - evt.data.endsWithEOL = 1; - return ''; - } - return match; - } ); - } else if ( CKEDITOR.env.gecko ) { - // Firefox adds bogus
when user pasted text followed by space(s). - data = data.replace( /(\s)
$/, '$1' ); - } - - evt.data.dataValue = data; - }, null, null, 3 ); - - editor.on( 'paste', function( evt ) { - var dataObj = evt.data, - type = dataObj.type, - data = dataObj.dataValue, - trueType, - // Default is 'html'. - defaultType = editor.config.clipboard_defaultContentType || 'html'; - - // If forced type is 'html' we don't need to know true data type. - if ( type == 'html' || dataObj.preSniffing == 'html' ) - trueType = 'html'; - else - trueType = recogniseContentType( data ); - - // Unify text markup. - if ( trueType == 'htmlifiedtext' ) - data = htmlifiedTextHtmlification( editor.config, data ); - // Strip presentional markup & unify text markup. - else if ( type == 'text' && trueType == 'html' ) { - // Init filter only if needed and cache it. - data = htmlTextification( editor.config, data, textificationFilter || ( textificationFilter = getTextificationFilter( editor ) ) ); - } - - if ( dataObj.startsWithEOL ) - data = '
' + data; - if ( dataObj.endsWithEOL ) - data += '
'; - - if ( type == 'auto' ) - type = ( trueType == 'html' || defaultType == 'html' ) ? 'html' : 'text'; - - dataObj.type = type; - dataObj.dataValue = data; - delete dataObj.preSniffing; - delete dataObj.startsWithEOL; - delete dataObj.endsWithEOL; - }, null, null, 6 ); - - // Inserts processed data into the editor at the end of the - // events chain. - editor.on( 'paste', function( evt ) { - var data = evt.data; - - editor.insertHtml( data.dataValue, data.type ); - - // Deferr 'afterPaste' so all other listeners for 'paste' will be fired first. - setTimeout( function() { - editor.fire( 'afterPaste' ); - }, 0 ); - }, null, null, 1000 ); - - editor.on( 'pasteDialog', function( evt ) { - // TODO it's possible that this setTimeout is not needed any more, - // because of changes introduced in the same commit as this comment. - // Editor.getClipboardData adds listner to the dialog's events which are - // fired after a while (not like 'showDialog'). - setTimeout( function() { - // Open default paste dialog. - editor.openDialog( 'paste', evt.data ); - }, 0 ); - } ); - } - } ); - - function initClipboard( editor ) { - var preventBeforePasteEvent = 0, - preventPasteEvent = 0, - inReadOnly = 0, - // Safari doesn't like 'beforepaste' event - it sometimes doesn't - // properly handles ctrl+c. Probably some race-condition between events. - // Chrome and Firefox works well with both events, so better to use 'paste' - // which will handle pasting from e.g. browsers' menu bars. - // IE7/8 doesn't like 'paste' event for which it's throwing random errors. - mainPasteEvent = CKEDITOR.env.ie ? 'beforepaste' : 'paste'; - - addListeners(); - addButtonsCommands(); - - /** - * Gets clipboard data by directly accessing the clipboard (IE only) or opening paste dialog. - * - * editor.getClipboardData( { title: 'Get my data' }, function( data ) { - * if ( data ) - * alert( data.type + ' ' + data.dataValue ); - * } ); - * - * @member CKEDITOR.editor - * @param {Object} options - * @param {String} [options.title] Title of paste dialog. - * @param {Function} callback Function that will be executed with `data.type` and `data.dataValue` - * or `null` if none of the capturing method succeeded. - */ - editor.getClipboardData = function( options, callback ) { - var beforePasteNotCanceled = false, - dataType = 'auto', - dialogCommited = false; - - // Options are optional - args shift. - if ( !callback ) { - callback = options; - options = null; - } - - // Listen with maximum priority to handle content before everyone else. - // This callback will handle paste event that will be fired if direct - // access to the clipboard succeed in IE. - editor.on( 'paste', onPaste, null, null, 0 ); - - // Listen at the end of listeners chain to see if event wasn't canceled - // and to retrieve modified data.type. - editor.on( 'beforePaste', onBeforePaste, null, null, 1000 ); - - // getClipboardDataDirectly() will fire 'beforePaste' synchronously, so we can - // check if it was canceled and if any listener modified data.type. - - // If command didn't succeed (only IE allows to access clipboard and only if - // user agrees) open and handle paste dialog. - if ( getClipboardDataDirectly() === false ) { - // Direct access to the clipboard wasn't successful so remove listener. - editor.removeListener( 'paste', onPaste ); - - // If beforePaste was canceled do not open dialog. - // Add listeners only if dialog really opened. 'pasteDialog' can be canceled. - if ( beforePasteNotCanceled && editor.fire( 'pasteDialog', onDialogOpen ) ) { - editor.on( 'pasteDialogCommit', onDialogCommit ); - - // 'dialogHide' will be fired after 'pasteDialogCommit'. - editor.on( 'dialogHide', function( evt ) { - evt.removeListener(); - evt.data.removeListener( 'pasteDialogCommit', onDialogCommit ); - - // Because Opera has to wait a while in pasteDialog we have to wait here. - setTimeout( function() { - // Notify even if user canceled dialog (clicked 'cancel', ESC, etc). - if ( !dialogCommited ) - callback( null ); - }, 10 ); - } ); - } else { - callback( null ); - } - } - - function onPaste( evt ) { - evt.removeListener(); - evt.cancel(); - callback( evt.data ); - } - - function onBeforePaste( evt ) { - evt.removeListener(); - beforePasteNotCanceled = true; - dataType = evt.data.type; - } - - function onDialogCommit( evt ) { - evt.removeListener(); - // Cancel pasteDialogCommit so paste dialog won't automatically fire - // 'paste' evt by itself. - evt.cancel(); - dialogCommited = true; - callback( { type: dataType, dataValue: evt.data } ); - } - - function onDialogOpen() { - this.customTitle = ( options && options.title ); - } - }; - - function addButtonsCommands() { - addButtonCommand( 'Cut', 'cut', createCutCopyCmd( 'cut' ), 10, 1 ); - addButtonCommand( 'Copy', 'copy', createCutCopyCmd( 'copy' ), 20, 4 ); - addButtonCommand( 'Paste', 'paste', createPasteCmd(), 30, 8 ); - - function addButtonCommand( buttonName, commandName, command, toolbarOrder, ctxMenuOrder ) { - var lang = editor.lang.clipboard[ commandName ]; - - editor.addCommand( commandName, command ); - editor.ui.addButton && editor.ui.addButton( buttonName, { - label: lang, - command: commandName, - toolbar: 'clipboard,' + toolbarOrder - } ); - - // If the "menu" plugin is loaded, register the menu item. - if ( editor.addMenuItems ) { - editor.addMenuItem( commandName, { - label: lang, - command: commandName, - group: 'clipboard', - order: ctxMenuOrder - } ); - } - } - } - - function addListeners() { - editor.on( 'key', onKey ); - editor.on( 'contentDom', addListenersToEditable ); - - // For improved performance, we're checking the readOnly state on selectionChange instead of hooking a key event for that. - editor.on( 'selectionChange', function( evt ) { - inReadOnly = evt.data.selection.getRanges()[ 0 ].checkReadOnly(); - setToolbarStates(); - } ); - - // If the "contextmenu" plugin is loaded, register the listeners. - if ( editor.contextMenu ) { - editor.contextMenu.addListener( function( element, selection ) { - inReadOnly = selection.getRanges()[ 0 ].checkReadOnly(); - return { - cut: stateFromNamedCommand( 'cut' ), - copy: stateFromNamedCommand( 'copy' ), - paste: stateFromNamedCommand( 'paste' ) - }; - } ); - } - } - - // Add events listeners to editable. - function addListenersToEditable() { - var editable = editor.editable(); - - // We'll be catching all pasted content in one line, regardless of whether - // it's introduced by a document command execution (e.g. toolbar buttons) or - // user paste behaviors (e.g. CTRL+V). - editable.on( mainPasteEvent, function( evt ) { - if ( CKEDITOR.env.ie && preventBeforePasteEvent ) - return; - - // If you've just asked yourself why preventPasteEventNow() is not here, but - // in listener for CTRL+V and exec method of 'paste' command - // you've asked the same question we did. - // - // THE ANSWER: - // - // First thing to notice - this answer makes sense only for IE, - // because other browsers don't listen for 'paste' event. - // - // What would happen if we move preventPasteEventNow() here? - // For: - // * CTRL+V - IE fires 'beforepaste', so we prevent 'paste' and pasteDataFromClipboard(). OK. - // * editor.execCommand( 'paste' ) - we fire 'beforepaste', so we prevent - // 'paste' and pasteDataFromClipboard() and doc.execCommand( 'Paste' ). OK. - // * native context menu - IE fires 'beforepaste', so we prevent 'paste', but unfortunately - // on IE we fail with pasteDataFromClipboard() here, because of... we don't know why, but - // we just fail, so... we paste nothing. FAIL. - // * native menu bar - the same as for native context menu. - // - // But don't you know any way to distinguish first two cases from last two? - // Only one - special flag set in CTRL+V handler and exec method of 'paste' - // command. And that's what we did using preventPasteEventNow(). - - pasteDataFromClipboard( evt ); - } ); - - // It's not possible to clearly handle all four paste methods (ctrl+v, native menu bar - // native context menu, editor's command) in one 'paste/beforepaste' event in IE. - // - // For ctrl+v & editor's command it's easy to handle pasting in 'beforepaste' listener, - // so we do this. For another two methods it's better to use 'paste' event. - // - // 'paste' is always being fired after 'beforepaste' (except of weird one on opening native - // context menu), so for two methods handled in 'beforepaste' we're canceling 'paste' - // using preventPasteEvent state. - // - // 'paste' event in IE is being fired before getClipboardDataByPastebin executes its callback. - // - // QUESTION: Why didn't you handle all 4 paste methods in handler for 'paste'? - // Wouldn't this just be simpler? - // ANSWER: Then we would have to evt.data.preventDefault() only for native - // context menu and menu bar pastes. The same with execIECommand(). - // That would force us to mark CTRL+V and editor's paste command with - // special flag, other than preventPasteEvent. But we still would have to - // have preventPasteEvent for the second event fired by execIECommand. - // Code would be longer and not cleaner. - CKEDITOR.env.ie && editable.on( 'paste', function( evt ) { - if ( preventPasteEvent ) - return; - // Cancel next 'paste' event fired by execIECommand( 'paste' ) - // at the end of this callback. - preventPasteEventNow(); - - // Prevent native paste. - evt.data.preventDefault(); - - pasteDataFromClipboard( evt ); - - // Force IE to paste content into pastebin so pasteDataFromClipboard will work. - if ( !execIECommand( 'paste' ) ) - editor.openDialog( 'paste' ); - } ); - - // [IE] Dismiss the (wrong) 'beforepaste' event fired on context/toolbar menu open. (#7953) - if ( CKEDITOR.env.ie ) { - editable.on( 'contextmenu', preventBeforePasteEventNow, null, null, 0 ); - - editable.on( 'beforepaste', function( evt ) { - // Do not prevent event on CTRL+V and SHIFT+INS because it blocks paste (#11970). - if ( evt.data && !evt.data.$.ctrlKey && !evt.data.$.shiftKey ) - preventBeforePasteEventNow(); - }, null, null, 0 ); - - } - - editable.on( 'beforecut', function() { - !preventBeforePasteEvent && fixCut( editor ); - } ); - - var mouseupTimeout; - - // Use editor.document instead of editable in non-IEs for observing mouseup - // since editable won't fire the event if selection process started within - // iframe and ended out of the editor (#9851). - editable.attachListener( CKEDITOR.env.ie ? editable : editor.document.getDocumentElement(), 'mouseup', function() { - mouseupTimeout = setTimeout( function() { - setToolbarStates(); - }, 0 ); - } ); - - // Make sure that deferred mouseup callback isn't executed after editor instance - // had been destroyed. This may happen when editor.destroy() is called in parallel - // with mouseup event (i.e. a button with onclick callback) (#10219). - editor.on( 'destroy', function() { - clearTimeout( mouseupTimeout ); - } ); - - editable.on( 'keyup', setToolbarStates ); - } - - // Create object representing Cut or Copy commands. - function createCutCopyCmd( type ) { - return { - type: type, - canUndo: type == 'cut', // We can't undo copy to clipboard. - startDisabled: true, - exec: function() { - // Attempts to execute the Cut and Copy operations. - function tryToCutCopy( type ) { - if ( CKEDITOR.env.ie ) - return execIECommand( type ); - - // non-IEs part - try { - // Other browsers throw an error if the command is disabled. - return editor.document.$.execCommand( type, false, null ); - } catch ( e ) { - return false; - } - } - - this.type == 'cut' && fixCut(); - - var success = tryToCutCopy( this.type ); - - if ( !success ) { - alert( editor.lang.clipboard[ this.type + 'Error' ] ); // Show cutError or copyError. - } - - return success; - } - }; - } - - function createPasteCmd() { - return { - // Snapshots are done manually by editable.insertXXX methods. - canUndo: false, - async: true, - - exec: function( editor, data ) { - var fire = function( data, withBeforePaste ) { - data && firePasteEvents( data.type, data.dataValue, !!withBeforePaste ); - - editor.fire( 'afterCommandExec', { - name: 'paste', - command: cmd, - returnValue: !!data - } ); - }, - cmd = this; - - // Check data precisely - don't open dialog on empty string. - if ( typeof data == 'string' ) - fire( { type: 'auto', dataValue: data }, 1 ); - else - editor.getClipboardData( fire ); - } - }; - } - - function preventPasteEventNow() { - preventPasteEvent = 1; - // For safety reason we should wait longer than 0/1ms. - // We don't know how long execution of quite complex getClipboardData will take - // and in for example 'paste' listner execCommand() (which fires 'paste') is called - // after getClipboardData finishes. - // Luckily, it's impossible to immediately fire another 'paste' event we want to handle, - // because we only handle there native context menu and menu bar. - setTimeout( function() { - preventPasteEvent = 0; - }, 100 ); - } - - function preventBeforePasteEventNow() { - preventBeforePasteEvent = 1; - setTimeout( function() { - preventBeforePasteEvent = 0; - }, 10 ); - } - - // Tries to execute any of the paste, cut or copy commands in IE. Returns a - // boolean indicating that the operation succeeded. - // @param {String} command *LOWER CASED* name of command ('paste', 'cut', 'copy'). - function execIECommand( command ) { - var doc = editor.document, - body = doc.getBody(), - enabled = false, - onExec = function() { - enabled = true; - }; - - // The following seems to be the only reliable way to detect that - // clipboard commands are enabled in IE. It will fire the - // onpaste/oncut/oncopy events only if the security settings allowed - // the command to execute. - body.on( command, onExec ); - - // IE7: document.execCommand has problem to paste into positioned element. - ( CKEDITOR.env.version > 7 ? doc.$ : doc.$.selection.createRange() ).execCommand( command ); - - body.removeListener( command, onExec ); - - return enabled; - } - - function firePasteEvents( type, data, withBeforePaste ) { - var eventData = { type: type }; - - if ( withBeforePaste ) { - // Fire 'beforePaste' event so clipboard flavor get customized - // by other plugins. - if ( editor.fire( 'beforePaste', eventData ) === false ) - return false; // Event canceled - } - - // The very last guard to make sure the paste has successfully happened. - // This check should be done after firing 'beforePaste' because for native paste - // 'beforePaste' is by default fired even for empty clipboard. - if ( !data ) - return false; - - // Reuse eventData.type because the default one could be changed by beforePaste listeners. - eventData.dataValue = data; - - return editor.fire( 'paste', eventData ); - } - - // Cutting off control type element in IE standards breaks the selection entirely. (#4881) - function fixCut() { - if ( !CKEDITOR.env.ie || CKEDITOR.env.quirks ) - return; - - var sel = editor.getSelection(), - control, range, dummy; - - if ( ( sel.getType() == CKEDITOR.SELECTION_ELEMENT ) && ( control = sel.getSelectedElement() ) ) { - range = sel.getRanges()[ 0 ]; - dummy = editor.document.createText( '' ); - dummy.insertBefore( control ); - range.setStartBefore( dummy ); - range.setEndAfter( control ); - sel.selectRanges( [ range ] ); - - // Clear up the fix if the paste wasn't succeeded. - setTimeout( function() { - // Element still online? - if ( control.getParent() ) { - dummy.remove(); - sel.selectElement( control ); - } - }, 0 ); - } - } - - // Allow to peek clipboard content by redirecting the - // pasting content into a temporary bin and grab the content of it. - function getClipboardDataByPastebin( evt, callback ) { - var doc = editor.document, - editable = editor.editable(), - cancel = function( evt ) { - evt.cancel(); - }, - blurListener; - - // Avoid recursions on 'paste' event or consequent paste too fast. (#5730) - if ( doc.getById( 'cke_pastebin' ) ) - return; - - var sel = editor.getSelection(); - var bms = sel.createBookmarks(); - - // #11384. On IE9+ we use native selectionchange (i.e. editor#selectionCheck) to cache the most - // recent selection which we then lock on editable blur. See selection.js for more info. - // selectionchange fired before getClipboardDataByPastebin() cached selection - // before creating bookmark (cached selection will be invalid, because bookmarks modified the DOM), - // so we need to fire selectionchange one more time, to store current seleciton. - // Selection will be locked when we focus pastebin. - if ( CKEDITOR.env.ie ) - sel.root.fire( 'selectionchange' ); - - // Create container to paste into. - // For rich content we prefer to use "body" since it holds - // the least possibility to be splitted by pasted content, while this may - // breaks the text selection on a frame-less editable, "div" would be - // the best one in that case. - // In another case on old IEs moving the selection into a "body" paste bin causes error panic. - // Body can't be also used for Opera which fills it with
- // what is indistinguishable from pasted
(copying
in Opera isn't possible, - // but it can be copied from other browser). - var pastebin = new CKEDITOR.dom.element( - ( CKEDITOR.env.webkit || editable.is( 'body' ) ) && !CKEDITOR.env.ie ? 'body' : 'div', doc ); - - pastebin.setAttributes( { - id: 'cke_pastebin', - 'data-cke-temp': '1' - } ); - - var containerOffset = 0, - offsetParent, - win = doc.getWindow(); - - if ( CKEDITOR.env.webkit ) { - // It's better to paste close to the real paste destination, so inherited styles - // (which Webkits will try to compensate by styling span) differs less from the destination's one. - editable.append( pastebin ); - // Style pastebin like .cke_editable, to minimize differences between origin and destination. (#9754) - pastebin.addClass( 'cke_editable' ); - - // Compensate position of offsetParent. - if ( !editable.is( 'body' ) ) { - // We're not able to get offsetParent from pastebin (body element), so check whether - // its parent (editable) is positioned. - if ( editable.getComputedStyle( 'position' ) != 'static' ) - offsetParent = editable; - // And if not - safely get offsetParent from editable. - else - offsetParent = CKEDITOR.dom.element.get( editable.$.offsetParent ); - - containerOffset = offsetParent.getDocumentPosition().y; - } - } else { - // Opera and IE doesn't allow to append to html element. - editable.getAscendant( CKEDITOR.env.ie ? 'body' : 'html', 1 ).append( pastebin ); - } - - pastebin.setStyles( { - position: 'absolute', - // Position the bin at the top (+10 for safety) of viewport to avoid any subsequent document scroll. - top: ( win.getScrollPosition().y - containerOffset + 10 ) + 'px', - width: '1px', - // Caret has to fit in that height, otherwise browsers like Chrome & Opera will scroll window to show it. - // Set height equal to viewport's height - 20px (safety gaps), minimum 1px. - height: Math.max( 1, win.getViewPaneSize().height - 20 ) + 'px', - overflow: 'hidden', - // Reset styles that can mess up pastebin position. - margin: 0, - padding: 0 - } ); - - // Paste fails in Safari when the body tag has 'user-select: none'. (#12506) - if ( CKEDITOR.env.safari ) - pastebin.setStyles( CKEDITOR.tools.cssVendorPrefix( 'user-select', 'text' ) ); - - // Check if the paste bin now establishes new editing host. - var isEditingHost = pastebin.getParent().isReadOnly(); - - if ( isEditingHost ) { - // Hide the paste bin. - pastebin.setOpacity( 0 ); - // And make it editable. - pastebin.setAttribute( 'contenteditable', true ); - } - // Transparency is not enough since positioned non-editing host always shows - // resize handler, pull it off the screen instead. - else { - pastebin.setStyle( editor.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-1000px' ); - } - - editor.on( 'selectionChange', cancel, null, null, 0 ); - - // Webkit fill fire blur on editable when moving selection to - // pastebin (if body is used). Cancel it because it causes incorrect - // selection lock in case of inline editor (#10644). - // The same seems to apply to Firefox (#10787). - if ( CKEDITOR.env.webkit || CKEDITOR.env.gecko ) - blurListener = editable.once( 'blur', cancel, null, null, -100 ); - - // Temporarily move selection to the pastebin. - isEditingHost && pastebin.focus(); - var range = new CKEDITOR.dom.range( pastebin ); - range.selectNodeContents( pastebin ); - var selPastebin = range.select(); - - // If non-native paste is executed, IE will open security alert and blur editable. - // Editable will then lock selection inside itself and after accepting security alert - // this selection will be restored. We overwrite stored selection, so it's restored - // in pastebin. (#9552) - if ( CKEDITOR.env.ie ) { - blurListener = editable.once( 'blur', function() { - editor.lockSelection( selPastebin ); - } ); - } - - var scrollTop = CKEDITOR.document.getWindow().getScrollPosition().y; - - // Wait a while and grab the pasted contents. - setTimeout( function() { - // Restore main window's scroll position which could have been changed - // by browser in cases described in #9771. - if ( CKEDITOR.env.webkit ) - CKEDITOR.document.getBody().$.scrollTop = scrollTop; - - // Blur will be fired only on non-native paste. In other case manually remove listener. - blurListener && blurListener.removeListener(); - - // Restore properly the document focus. (#8849) - if ( CKEDITOR.env.ie ) - editable.focus(); - - // IE7: selection must go before removing pastebin. (#8691) - sel.selectBookmarks( bms ); - pastebin.remove(); - - // Grab the HTML contents. - // We need to look for a apple style wrapper on webkit it also adds - // a div wrapper if you copy/paste the body of the editor. - // Remove hidden div and restore selection. - var bogusSpan; - if ( CKEDITOR.env.webkit && ( bogusSpan = pastebin.getFirst() ) && ( bogusSpan.is && bogusSpan.hasClass( 'Apple-style-span' ) ) ) - pastebin = bogusSpan; - - editor.removeListener( 'selectionChange', cancel ); - callback( pastebin.getHtml() ); - }, 0 ); - } - - // Try to get content directly from clipboard, without native event - // being fired before. In other words - synthetically get clipboard data - // if it's possible. - // mainPasteEvent will be fired, so if forced native paste: - // * worked, getClipboardDataByPastebin will grab it, - // * didn't work, pastebin will be empty and editor#paste won't be fired. - function getClipboardDataDirectly() { - if ( CKEDITOR.env.ie ) { - // Prevent IE from pasting at the begining of the document. - editor.focus(); - - // Command will be handled by 'beforepaste', but as - // execIECommand( 'paste' ) will fire also 'paste' event - // we're canceling it. - preventPasteEventNow(); - - // #9247: Lock focus to prevent IE from hiding toolbar for inline editor. - var focusManager = editor.focusManager; - focusManager.lock(); - - if ( editor.editable().fire( mainPasteEvent ) && !execIECommand( 'paste' ) ) { - focusManager.unlock(); - return false; - } - focusManager.unlock(); - } else { - try { - if ( editor.editable().fire( mainPasteEvent ) && !editor.document.$.execCommand( 'Paste', false, null ) ) - throw 0; - - } catch ( e ) { - return false; - } - } - - return true; - } - - // Listens for some clipboard related keystrokes, so they get customized. - // Needs to be bind to keydown event. - function onKey( event ) { - if ( editor.mode != 'wysiwyg' ) - return; - - switch ( event.data.keyCode ) { - // Paste - case CKEDITOR.CTRL + 86: // CTRL+V - case CKEDITOR.SHIFT + 45: // SHIFT+INS - var editable = editor.editable(); - - // Cancel 'paste' event because ctrl+v is for IE handled - // by 'beforepaste'. - preventPasteEventNow(); - - // Simulate 'beforepaste' event for all none-IEs. - !CKEDITOR.env.ie && editable.fire( 'beforepaste' ); - - return; - - // Cut - case CKEDITOR.CTRL + 88: // CTRL+X - case CKEDITOR.SHIFT + 46: // SHIFT+DEL - // Save Undo snapshot. - editor.fire( 'saveSnapshot' ); // Save before cut - setTimeout( function() { - editor.fire( 'saveSnapshot' ); // Save after cut - }, 50 ); // OSX is slow (#11416). - } - } - - function pasteDataFromClipboard( evt ) { - // Default type is 'auto', but can be changed by beforePaste listeners. - var eventData = { type: 'auto' }; - // Fire 'beforePaste' event so clipboard flavor get customized by other plugins. - // If 'beforePaste' is canceled continue executing getClipboardDataByPastebin and then do nothing - // (do not fire 'paste', 'afterPaste' events). This way we can grab all - synthetically - // and natively pasted content and prevent its insertion into editor - // after canceling 'beforePaste' event. - var beforePasteNotCanceled = editor.fire( 'beforePaste', eventData ); - - getClipboardDataByPastebin( evt, function( data ) { - // Clean up. - data = data.replace( /]+data-cke-bookmark[^<]*?<\/span>/ig, '' ); - - // Fire remaining events (without beforePaste) - beforePasteNotCanceled && firePasteEvents( eventData.type, data, 0, 1 ); - } ); - } - - function setToolbarStates() { - if ( editor.mode != 'wysiwyg' ) - return; - - var pasteState = stateFromNamedCommand( 'paste' ); - - editor.getCommand( 'cut' ).setState( stateFromNamedCommand( 'cut' ) ); - editor.getCommand( 'copy' ).setState( stateFromNamedCommand( 'copy' ) ); - editor.getCommand( 'paste' ).setState( pasteState ); - editor.fire( 'pasteState', pasteState ); - } - - function stateFromNamedCommand( command ) { - if ( inReadOnly && command in { paste: 1, cut: 1 } ) - return CKEDITOR.TRISTATE_DISABLED; - - if ( command == 'paste' ) - return CKEDITOR.TRISTATE_OFF; - - // Cut, copy - check if the selection is not empty. - var sel = editor.getSelection(), - ranges = sel.getRanges(), - selectionIsEmpty = sel.getType() == CKEDITOR.SELECTION_NONE || ( ranges.length == 1 && ranges[ 0 ].collapsed ); - - return selectionIsEmpty ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF; - } - } - - // Returns: - // * 'htmlifiedtext' if content looks like transformed by browser from plain text. - // See clipboard/paste.html TCs for more info. - // * 'html' if it is not 'htmlifiedtext'. - function recogniseContentType( data ) { - if ( CKEDITOR.env.webkit ) { - // Plain text or (

and text inside
). - if ( !data.match( /^[^<]*$/g ) && !data.match( /^(
<\/div>|
[^<]*<\/div>)*$/gi ) ) - return 'html'; - } else if ( CKEDITOR.env.ie ) { - // Text and
or ( text and
in

- paragraphs can be separated by new \r\n ). - if ( !data.match( /^([^<]|)*$/gi ) && !data.match( /^(

([^<]|)*<\/p>|(\r\n))*$/gi ) ) - return 'html'; - } else if ( CKEDITOR.env.gecko ) { - // Text or
. - if ( !data.match( /^([^<]|)*$/gi ) ) - return 'html'; - } else { - return 'html'; - } - - return 'htmlifiedtext'; - } - - // This function transforms what browsers produce when - // pasting plain text into editable element (see clipboard/paste.html TCs - // for more info) into correct HTML (similar to that produced by text2Html). - function htmlifiedTextHtmlification( config, data ) { - function repeatParagraphs( repeats ) { - // Repeat blocks floor((n+1)/2) times. - // Even number of repeats - add
at the beginning of last

. - return CKEDITOR.tools.repeat( '

', ~~( repeats / 2 ) ) + ( repeats % 2 == 1 ? '
' : '' ); - } - - // Replace adjacent white-spaces (EOLs too - Fx sometimes keeps them) with one space. - data = data.replace( /\s+/g, ' ' ) - // Remove spaces from between tags. - .replace( /> +<' ) - // Normalize XHTML syntax and upper cased
tags. - .replace( /
/gi, '
' ); - - // IE - lower cased tags. - data = data.replace( /<\/?[A-Z]+>/g, function( match ) { - return match.toLowerCase(); - } ); - - // Don't touch single lines (no ) - nothing to do here. - if ( data.match( /^[^<]$/ ) ) - return data; - - // Webkit. - if ( CKEDITOR.env.webkit && data.indexOf( '

' ) > -1 ) { - // One line break at the beginning - insert
- data = data.replace( /^(
(
|)<\/div>)(?!$|(
(
|)<\/div>))/g, '
' ) - // Two or more - reduce number of new lines by one. - .replace( /^(
(
|)<\/div>){2}(?!$)/g, '
' ); - - // Two line breaks create one paragraph in Webkit. - if ( data.match( /
(
|)<\/div>/ ) ) { - data = '

' + data.replace( /(

(
|)<\/div>)+/g, function( match ) { - return repeatParagraphs( match.split( '
' ).length + 1 ); - } ) + '

'; - } - - // One line break create br. - data = data.replace( /<\/div>
/g, '
' ); - - // Remove remaining divs. - data = data.replace( /<\/?div>/g, '' ); - } - - // Opera and Firefox and enterMode != BR. - if ( CKEDITOR.env.gecko && config.enterMode != CKEDITOR.ENTER_BR ) { - // Remove bogus
- Fx generates two for one line break. - // For two line breaks it still produces two , but it's better to ignore this case than the first one. - if ( CKEDITOR.env.gecko ) - data = data.replace( /^

$/, '
' ); - - // This line satisfy edge case when for Opera we have two line breaks - //data = data.replace( /) - - if ( data.indexOf( '

' ) > -1 ) { - // Two line breaks create one paragraph, three - 2, four - 3, etc. - data = '

' + data.replace( /(
){2,}/g, function( match ) { - return repeatParagraphs( match.length / 4 ); - } ) + '

'; - } - } - - return switchEnterMode( config, data ); - } - - // Filter can be editor dependent. - function getTextificationFilter() { - var filter = new CKEDITOR.htmlParser.filter(); - - // Elements which creates vertical breaks (have vert margins) - took from HTML5 spec. - // http://dev.w3.org/html5/markup/Overview.html#toc - var replaceWithParaIf = { blockquote: 1, dl: 1, fieldset: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, ol: 1, p: 1, table: 1, ul: 1 }, - - // All names except of
. - stripInlineIf = CKEDITOR.tools.extend( { br: 0 }, CKEDITOR.dtd.$inline ), - - // What's finally allowed (cke:br will be removed later). - allowedIf = { p: 1, br: 1, 'cke:br': 1 }, - - knownIf = CKEDITOR.dtd, - - // All names that will be removed (with content). - removeIf = CKEDITOR.tools.extend( { area: 1, basefont: 1, embed: 1, iframe: 1, map: 1, object: 1, param: 1 }, CKEDITOR.dtd.$nonBodyContent, CKEDITOR.dtd.$cdata ); - - var flattenTableCell = function( element ) { - delete element.name; - element.add( new CKEDITOR.htmlParser.text( ' ' ) ); - }, - // Squash adjacent headers into one.

A

B

->

A
B

- // Empty ones will be removed later. - squashHeader = function( element ) { - var next = element, - br, el; - - while ( ( next = next.next ) && next.name && next.name.match( /^h\d$/ ) ) { - // TODO shitty code - waitin' for htmlParse.element fix. - br = new CKEDITOR.htmlParser.element( 'cke:br' ); - br.isEmpty = true; - element.add( br ); - while ( ( el = next.children.shift() ) ) - element.add( el ); - } - }; - - filter.addRules( { - elements: { - h1: squashHeader, - h2: squashHeader, - h3: squashHeader, - h4: squashHeader, - h5: squashHeader, - h6: squashHeader, - - img: function( element ) { - var alt = CKEDITOR.tools.trim( element.attributes.alt || '' ), - txt = ' '; - - // Replace image with its alt if it doesn't look like an url or is empty. - if ( alt && !alt.match( /(^http|\.(jpe?g|gif|png))/i ) ) - txt = ' [' + alt + '] '; - - return new CKEDITOR.htmlParser.text( txt ); - }, - - td: flattenTableCell, - th: flattenTableCell, - - $: function( element ) { - var initialName = element.name, - br; - - // Remove entirely. - if ( removeIf[ initialName ] ) - return false; - - // Remove all attributes. - element.attributes = {}; - - // Pass brs. - if ( initialName == 'br' ) - return element; - - // Elements that we want to replace with paragraphs. - if ( replaceWithParaIf[ initialName ] ) - element.name = 'p'; - - // Elements that we want to strip (tags only, without the content). - else if ( stripInlineIf[ initialName ] ) - delete element.name; - - // Surround other known element with and strip tags. - else if ( knownIf[ initialName ] ) { - // TODO shitty code - waitin' for htmlParse.element fix. - br = new CKEDITOR.htmlParser.element( 'cke:br' ); - br.isEmpty = true; - - // Replace hrs (maybe sth else too?) with only one br. - if ( CKEDITOR.dtd.$empty[ initialName ] ) - return br; - - element.add( br, 0 ); - br = br.clone(); - br.isEmpty = true; - element.add( br ); - delete element.name; - } - - // Final cleanup - if we can still find some not allowed elements then strip their names. - if ( !allowedIf[ element.name ] ) - delete element.name; - - return element; - } - } - }, { - // Apply this filter to every element. - applyToAll: true - } ); - - return filter; - } - - function htmlTextification( config, data, filter ) { - var fragment = new CKEDITOR.htmlParser.fragment.fromHtml( data ), - writer = new CKEDITOR.htmlParser.basicWriter(); - - fragment.writeHtml( writer, filter ); - data = writer.getHtml(); - - // Cleanup cke:brs. - data = data.replace( /\s*(<\/?[a-z:]+ ?\/?>)\s*/g, '$1' ) // Remove spaces around tags. - .replace( /(){2,}/g, '' ) // Join multiple adjacent cke:brs - .replace( /()(<\/?p>|
)/g, '$2' ) // Strip cke:brs adjacent to original brs or ps. - .replace( /(<\/?p>|
)()/g, '$1' ) - .replace( /<(cke:)?br( \/)?>/g, '
' ) // Finally - rename cke:brs to brs and fix
to
. - .replace( /

<\/p>/g, '' ); // Remove empty paragraphs. - - // Fix nested ps. E.g.: - //

A

B

C

D

E

F

G - //

A

B

C

D

E

F

G - var nested = 0; - data = data.replace( /<\/?p>/g, function( match ) { - if ( match == '

' ) { - if ( ++nested > 1 ) - return '

'; - } else { - if ( --nested > 0 ) - return '

'; - } - - return match; - } ).replace( /

<\/p>/g, '' ); // Step before:

->

. Fix this here. - - return switchEnterMode( config, data ); - } - - function switchEnterMode( config, data ) { - if ( config.enterMode == CKEDITOR.ENTER_BR ) { - data = data.replace( /(<\/p>

)+/g, function( match ) { - return CKEDITOR.tools.repeat( '
', match.length / 7 * 2 ); - } ).replace( /<\/?p>/g, '' ); - } else if ( config.enterMode == CKEDITOR.ENTER_DIV ) { - data = data.replace( /<(\/)?p>/g, '<$1div>' ); - } - - return data; - } -} )(); - -/** - * The default content type is used when pasted data cannot be clearly recognized as HTML or text. - * - * For example: `'foo'` may come from a plain text editor or a website. It isn't possible to recognize content - * type in this case, so default will be used. However, it's clear that `'example text'` is an HTML - * and its origin is webpage, email or other rich text editor. - * - * **Note:** If content type is text, then styles of context of paste are preserved. - * - * CKEDITOR.config.clipboard_defaultContentType = 'text'; - * - * @since 4.0 - * @cfg {'html'/'text'} [clipboard_defaultContentType='html'] - * @member CKEDITOR.config - */ - -/** - * Fired when a clipboard operation is about to be taken into the editor. - * Listeners can manipulate the data to be pasted before having it effectively - * inserted into the document. - * - * @since 3.1 - * @event paste - * @member CKEDITOR.editor - * @param {CKEDITOR.editor} editor This editor instance. - * @param data - * @param {String} data.type Type of data in `data.dataValue`. Usually `html` or `text`, but for listeners - * with priority less than 6 it may be also `auto`, what means that content type hasn't been recognised yet - * (this will be done by content type sniffer that listens with priority 6). - * @param {String} data.dataValue HTML to be pasted. - */ - -/** - * Fired before the {@link #paste} event. Allows to preset data type. - * - * **Note:** This event is deprecated. Add a `0` priority listener for the - * {@link #paste} event instead. - * - * @deprecated - * @event beforePaste - * @member CKEDITOR.editor - */ - -/** - * Internal event to open the Paste dialog. - * - * @private - * @event pasteDialog - * @member CKEDITOR.editor - * @param {CKEDITOR.editor} editor This editor instance. - * @param {Function} [data] Callback that will be passed to {@link CKEDITOR.editor#openDialog}. - */ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/dialogDefinition.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/dialogDefinition.js deleted file mode 100644 index ba6ed739e5..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/dialogDefinition.js +++ /dev/null @@ -1,1007 +0,0 @@ -// jscs:disable disallowMixedSpacesAndTabs -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -/** - * @fileOverview Defines the "virtual" dialog, dialog content and dialog button - * definition classes. - */ - -/** - * The definition of a dialog window. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create dialogs. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * CKEDITOR.dialog.add( 'testOnly', function( editor ) { - * return { - * title: 'Test Dialog', - * resizable: CKEDITOR.DIALOG_RESIZE_BOTH, - * minWidth: 500, - * minHeight: 400, - * contents: [ - * { - * id: 'tab1', - * label: 'First Tab', - * title: 'First Tab Title', - * accessKey: 'Q', - * elements: [ - * { - * type: 'text', - * label: 'Test Text 1', - * id: 'testText1', - * 'default': 'hello world!' - * } - * ] - * } - * ] - * }; - * } ); - * - * @class CKEDITOR.dialog.definition - */ - -/** - * The dialog title, displayed in the dialog's header. Required. - * - * @property {String} title - */ - -/** - * How the dialog can be resized, must be one of the four contents defined below. - * - * * {@link CKEDITOR#DIALOG_RESIZE_NONE} - * * {@link CKEDITOR#DIALOG_RESIZE_WIDTH} - * * {@link CKEDITOR#DIALOG_RESIZE_HEIGHT} - * * {@link CKEDITOR#DIALOG_RESIZE_BOTH} - * - * @property {Number} [resizable=CKEDITOR.DIALOG_RESIZE_NONE] - */ - -/** - * The minimum width of the dialog, in pixels. - * - * @property {Number} [minWidth=600] - */ - -/** - * The minimum height of the dialog, in pixels. - * - * @property {Number} [minHeight=400] - */ - - -/** - * The initial width of the dialog, in pixels. - * - * @since 3.5.3 - * @property {Number} [width=CKEDITOR.dialog.definition#minWidth] - */ - -/** - * The initial height of the dialog, in pixels. - * - * @since 3.5.3 - * @property {Number} [height=CKEDITOR.dialog.definition.minHeight] - */ - -/** - * The buttons in the dialog, defined as an array of - * {@link CKEDITOR.dialog.definition.button} objects. - * - * @property {Array} [buttons=[ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ]] - */ - -/** - * The contents in the dialog, defined as an array of - * {@link CKEDITOR.dialog.definition.content} objects. Required. - * - * @property {Array} contents - */ - -/** - * The function to execute when OK is pressed. - * - * @property {Function} onOk - */ - -/** - * The function to execute when Cancel is pressed. - * - * @property {Function} onCancel - */ - -/** - * The function to execute when the dialog is displayed for the first time. - * - * @property {Function} onLoad - */ - -/** - * The function to execute when the dialog is loaded (executed every time the dialog is opened). - * - * @property {Function} onShow - */ - -/** - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create dialog content pages. - * - * @class CKEDITOR.dialog.definition.content. - */ - -/** - * The id of the content page. - * - * @property {String} id - */ - -/** - * The tab label of the content page. - * - * @property {String} label - */ - -/** - * The popup message of the tab label. - * - * @property {String} title - */ - -/** - * The CTRL hotkey for switching to the tab. - * - * contentDefinition.accessKey = 'Q'; // Switch to this page when CTRL-Q is pressed. - * - * @property {String} accessKey - */ - -/** - * The UI elements contained in this content page, defined as an array of - * {@link CKEDITOR.dialog.definition.uiElement} objects. - * - * @property {Array} elements - */ - -/** - * The definition of user interface element (textarea, radio etc). - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create dialog UI elements. - * - * @class CKEDITOR.dialog.definition.uiElement - * @see CKEDITOR.ui.dialog.uiElement - */ - -/** - * The id of the UI element. - * - * @property {String} id - */ - -/** - * The type of the UI element. Required. - * - * @property {String} type - */ - -/** - * The popup label of the UI element. - * - * @property {String} title - */ - -/** - * The content that needs to be allowed to enable this UI element. - * All formats accepted by {@link CKEDITOR.filter#check} may be used. - * - * When all UI elements in a tab are disabled, this tab will be disabled automatically. - * - * @property {String/Object/CKEDITOR.style} requiredContent - */ - -/** - * CSS class names to append to the UI element. - * - * @property {String} className - */ - -/** - * Inline CSS classes to append to the UI element. - * - * @property {String} style - */ - -/** - * Horizontal alignment (in container) of the UI element. - * - * @property {String} align - */ - -/** - * Function to execute the first time the UI element is displayed. - * - * @property {Function} onLoad - */ - -/** - * Function to execute whenever the UI element's parent dialog is displayed. - * - * @property {Function} onShow - */ - -/** - * Function to execute whenever the UI element's parent dialog is closed. - * - * @property {Function} onHide - */ - -/** - * Function to execute whenever the UI element's parent - * dialog's {@link CKEDITOR.dialog#setupContent} method is executed. - * It usually takes care of the respective UI element as a standalone element. - * - * @property {Function} setup - */ - -/** - * Function to execute whenever the UI element's parent - * dialog's {@link CKEDITOR.dialog#commitContent} method is executed. - * It usually takes care of the respective UI element as a standalone element. - * - * @property {Function} commit - */ - -// ----- hbox ----------------------------------------------------------------- - -/** - * Horizontal layout box for dialog UI elements, auto-expends to available width of container. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create horizontal layouts. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.hbox} object and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * // Example: - * { - * type: 'hbox', - * widths: [ '25%', '25%', '50%' ], - * children: [ - * { - * type: 'text', - * id: 'id1', - * width: '40px', - * }, - * { - * type: 'text', - * id: 'id2', - * width: '40px', - * }, - * { - * type: 'text', - * id: 'id3' - * } - * ] - * } - * - * @class CKEDITOR.dialog.definition.hbox - * @extends CKEDITOR.dialog.definition.uiElement - */ - -/** - * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. - * - * @property {Array} children - */ - -/** - * (Optional) The widths of child cells. - * - * @property {Array} widths - */ - -/** - * (Optional) The height of the layout. - * - * @property {Number} height - */ - -/** - * The CSS styles to apply to this element. - * - * @property {String} styles - */ - -/** - * (Optional) The padding width inside child cells. Example: 0, 1. - * - * @property {Number} padding - */ - -/** - * (Optional) The alignment of the whole layout. Example: center, top. - * - * @property {String} align - */ - -// ----- vbox ----------------------------------------------------------------- - -/** - * Vertical layout box for dialog UI elements. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create vertical layouts. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.vbox} object and can - * be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * // Example: - * { - * type: 'vbox', - * align: 'right', - * width: '200px', - * children: [ - * { - * type: 'text', - * id: 'age', - * label: 'Age' - * }, - * { - * type: 'text', - * id: 'sex', - * label: 'Sex' - * }, - * { - * type: 'text', - * id: 'nationality', - * label: 'Nationality' - * } - * ] - * } - * - * @class CKEDITOR.dialog.definition.vbox - * @extends CKEDITOR.dialog.definition.uiElement - */ - -/** - * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. - * - * @property {Array} children - */ - -/** - * (Optional) The width of the layout. - * - * @property {Array} width - */ - -/** - * (Optional) The heights of individual cells. - * - * @property {Number} heights - */ - -/** - * The CSS styles to apply to this element. - * - * @property {String} styles - */ - -/** - * (Optional) The padding width inside child cells. Example: 0, 1. - * - * @property {Number} padding - */ - -/** - * (Optional) The alignment of the whole layout. Example: center, top. - * - * @property {String} align - */ - -/** - * (Optional) Whether the layout should expand vertically to fill its container. - * - * @property {Boolean} expand - */ - -// ----- labeled element ------------------------------------------------------ - -/** - * The definition of labeled user interface element (textarea, textInput etc). - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create dialog UI elements. - * - * @class CKEDITOR.dialog.definition.labeledElement - * @extends CKEDITOR.dialog.definition.uiElement - * @see CKEDITOR.ui.dialog.labeledElement - */ - -/** - * The label of the UI element. - * - * { - * type: 'text', - * label: 'My Label' - * } - * - * @property {String} label - */ - -/** - * (Optional) Specify the layout of the label. Set to `'horizontal'` for horizontal layout. - * The default layout is vertical. - * - * { - * type: 'text', - * label: 'My Label', - * labelLayout: 'horizontal' - * } - * - * @property {String} labelLayout - */ - -/** - * (Optional) Applies only to horizontal layouts: a two elements array of lengths to specify the widths of the - * label and the content element. See also {@link CKEDITOR.dialog.definition.labeledElement#labelLayout}. - * - * { - * type: 'text', - * label: 'My Label', - * labelLayout: 'horizontal', - * widths: [100, 200] - * } - * - * @property {Array} widths - */ - -/** - * Specify the inline style of the uiElement label. - * - * { - * type: 'text', - * label: 'My Label', - * labelStyle: 'color: red' - * } - * - * @property {String} labelStyle - */ - - -/** - * Specify the inline style of the input element. - * - * { - * type: 'text', - * label: 'My Label', - * inputStyle: 'text-align: center' - * } - * - * @since 3.6.1 - * @property {String} inputStyle - */ - -/** - * Specify the inline style of the input element container. - * - * { - * type: 'text', - * label: 'My Label', - * controlStyle: 'width: 3em' - * } - * - * @since 3.6.1 - * @property {String} controlStyle - */ - -// ----- button --------------------------------------------------------------- - -/** - * The definition of a button. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create buttons. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.button} object - * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * // Example: - * { - * type: 'button', - * id: 'buttonId', - * label: 'Click me', - * title: 'My title', - * onClick: function() { - * // this = CKEDITOR.ui.dialog.button - * alert( 'Clicked: ' + this.id ); - * } - * } - * - * @class CKEDITOR.dialog.definition.button - * @extends CKEDITOR.dialog.definition.uiElement - */ - -/** - * Whether the button is disabled. - * - * @property {Boolean} disabled - */ - -/** - * The label of the UI element. - * - * @property {String} label - */ - -// ----- checkbox ------ -/** - * The definition of a checkbox element. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create groups of checkbox buttons. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.checkbox} object - * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * // Example: - * { - * type: 'checkbox', - * id: 'agree', - * label: 'I agree', - * 'default': 'checked', - * onClick: function() { - * // this = CKEDITOR.ui.dialog.checkbox - * alert( 'Checked: ' + this.getValue() ); - * } - * } - * - * @class CKEDITOR.dialog.definition.checkbox - * @extends CKEDITOR.dialog.definition.uiElement - */ - -/** - * (Optional) The validation function. - * - * @property {Function} validate - */ - -/** - * The label of the UI element. - * - * @property {String} label - */ - -/** - * The default state. - * - * @property {String} [default='' (unchecked)] - */ - -// ----- file ----------------------------------------------------------------- - -/** - * The definition of a file upload input. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create file upload elements. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.file} object - * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * // Example: - * { - * type: 'file', - * id: 'upload', - * label: 'Select file from your computer', - * size: 38 - * }, - * { - * type: 'fileButton', - * id: 'fileId', - * label: 'Upload file', - * 'for': [ 'tab1', 'upload' ], - * filebrowser: { - * onSelect: function( fileUrl, data ) { - * alert( 'Successfully uploaded: ' + fileUrl ); - * } - * } - * } - * - * @class CKEDITOR.dialog.definition.file - * @extends CKEDITOR.dialog.definition.labeledElement - */ - -/** - * (Optional) The validation function. - * - * @property {Function} validate - */ - -/** - * (Optional) The action attribute of the form element associated with this file upload input. - * If empty, CKEditor will use path to server connector for currently opened folder. - * - * @property {String} action - */ - -/** - * The size of the UI element. - * - * @property {Number} size - */ - -// ----- fileButton ----------------------------------------------------------- - -/** - * The definition of a button for submitting the file in a file upload input. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create a button for submitting the file in a file upload input. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.fileButton} object - * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. - * - * @class CKEDITOR.dialog.definition.fileButton - * @extends CKEDITOR.dialog.definition.uiElement - */ - -/** - * (Optional) The validation function. - * - * @property {Function} validate - */ - -/** - * The label of the UI element. - * - * @property {String} label - */ - -/** - * The instruction for CKEditor how to deal with file upload. - * By default, the file and fileButton elements will not work "as expected" if this attribute is not set. - * - * // Update field with id 'txtUrl' in the 'tab1' tab when file is uploaded. - * filebrowser: 'tab1:txtUrl' - * - * // Call custom onSelect function when file is successfully uploaded. - * filebrowser: { - * onSelect: function( fileUrl, data ) { - * alert( 'Successfully uploaded: ' + fileUrl ); - * } - * } - * - * @property {String} filebrowser/Object - */ - -/** - * An array that contains pageId and elementId of the file upload input element for which this button is created. - * - * [ pageId, elementId ] - * - * @property {String} for - */ - -// ----- html ----------------------------------------------------------------- - -/** - * The definition of a raw HTML element. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create elements made from raw HTML code. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.html} object - * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. - * To access HTML elements use {@link CKEDITOR.dom.document#getById}. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * // Example 1: - * { - * type: 'html', - * html: '

This is some sample HTML content.

' - * } - * - * // Example 2: - * // Complete sample with document.getById() call when the "Ok" button is clicked. - * var dialogDefinition = { - * title: 'Sample dialog', - * minWidth: 300, - * minHeight: 200, - * onOk: function() { - * // "this" is now a CKEDITOR.dialog object. - * var document = this.getElement().getDocument(); - * // document = CKEDITOR.dom.document - * var element = document.getById( 'myDiv' ); - * if ( element ) - * alert( element.getHtml() ); - * }, - * contents: [ - * { - * id: 'tab1', - * label: '', - * title: '', - * elements: [ - * { - * type: 'html', - * html: '
Sample text.
Another div.
' - * } - * ] - * } - * ], - * buttons: [ CKEDITOR.dialog.cancelButton, CKEDITOR.dialog.okButton ] - * }; - * - * @class CKEDITOR.dialog.definition.html - * @extends CKEDITOR.dialog.definition.uiElement - */ - -/** - * (Required) HTML code of this element. - * - * @property {String} html - */ - -// ----- radio ---------------------------------------------------------------- - -/** - * The definition of a radio group. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create groups of radio buttons. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.radio} object - * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * // Example: - * { - * type: 'radio', - * id: 'country', - * label: 'Which country is bigger', - * items: [ [ 'France', 'FR' ], [ 'Germany', 'DE' ] ], - * style: 'color: green', - * 'default': 'DE', - * onClick: function() { - * // this = CKEDITOR.ui.dialog.radio - * alert( 'Current value: ' + this.getValue() ); - * } - * } - * - * @class CKEDITOR.dialog.definition.radio - * @extends CKEDITOR.dialog.definition.labeledElement - */ - -/** - * The default value. - * - * @property {String} default - */ - -/** - * (Optional) The validation function. - * - * @property {Function} validate - */ - -/** - * An array of options. Each option is a 1- or 2-item array of format `[ 'Description', 'Value' ]`. - * If `'Value'` is missing, then the value would be assumed to be the same as the description. - * - * @property {Array} items - */ - -// ----- selectElement -------------------------------------------------------- - -/** - * The definition of a select element. - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create select elements. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.select} object - * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * // Example: - * { - * type: 'select', - * id: 'sport', - * label: 'Select your favourite sport', - * items: [ [ 'Basketball' ], [ 'Baseball' ], [ 'Hockey' ], [ 'Football' ] ], - * 'default': 'Football', - * onChange: function( api ) { - * // this = CKEDITOR.ui.dialog.select - * alert( 'Current value: ' + this.getValue() ); - * } - * } - * - * @class CKEDITOR.dialog.definition.select - * @extends CKEDITOR.dialog.definition.labeledElement - */ - -/** - * The default value. - * - * @property {String} default - */ - -/** - * (Optional) The validation function. - * - * @property {Function} validate - */ - -/** - * An array of options. Each option is a 1- or 2-item array of format `[ 'Description', 'Value' ]`. - * If `'Value'` is missing, then the value would be assumed to be the same as the description. - * - * @property {Array} items - */ - -/** - * (Optional) Set this to true if you'd like to have a multiple-choice select box. - * - * @property {Boolean} [multiple=false] - */ - -/** - * (Optional) The number of items to display in the select box. - * - * @property {Number} size - */ - -// ----- textInput ------------------------------------------------------------ - -/** - * The definition of a text field (single line). - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create text fields. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.textInput} object - * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. - * - * // There is no constructor for this class, the user just has to define an - * // object with the appropriate properties. - * - * { - * type: 'text', - * id: 'name', - * label: 'Your name', - * 'default': '', - * validate: function() { - * if ( !this.getValue() ) { - * api.openMsgDialog( '', 'Name cannot be empty.' ); - * return false; - * } - * } - * } - * - * @class CKEDITOR.dialog.definition.textInput - * @extends CKEDITOR.dialog.definition.labeledElement - */ - -/** - * The default value. - * - * @property {String} default - */ - -/** - * (Optional) The maximum length. - * - * @property {Number} maxLength - */ - -/** - * (Optional) The size of the input field. - * - * @property {Number} size - */ - -/** - * (Optional) The validation function. - * - * @property {Function} validate - */ - -// ----- textarea ------------------------------------------------------------- - -/** - * The definition of a text field (multiple lines). - * - * This class is not really part of the API. It just illustrates the properties - * that developers can use to define and create textarea. - * - * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.textarea} object - * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. - * - * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. - * -* // There is no constructor for this class, the user just has to define an -* // object with the appropriate properties. -* -* // Example: -* { -* type: 'textarea', -* id: 'message', -* label: 'Your comment', -* 'default': '', -* validate: function() { -* if ( this.getValue().length < 5 ) { -* api.openMsgDialog( 'The comment is too short.' ); -* return false; -* } -* } -* } - * - * @class CKEDITOR.dialog.definition.textarea - * @extends CKEDITOR.dialog.definition.labeledElement - */ - -/** - * The number of rows. - * - * @property {Number} rows - */ - -/** - * The number of columns. - * - * @property {Number} cols - */ - -/** - * (Optional) The validation function. - * - * @property {Function} validate - */ - -/** - * The default value. - * - * @property {String} default - */ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/plugin.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/plugin.js deleted file mode 100644 index 98b10593ff..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/plugin.js +++ /dev/null @@ -1,3303 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -/** - * @fileOverview The floating dialog plugin. - */ - -/** - * No resize for this dialog. - * - * @readonly - * @property {Number} [=0] - * @member CKEDITOR - */ -CKEDITOR.DIALOG_RESIZE_NONE = 0; - -/** - * Only allow horizontal resizing for this dialog, disable vertical resizing. - * - * @readonly - * @property {Number} [=1] - * @member CKEDITOR - */ -CKEDITOR.DIALOG_RESIZE_WIDTH = 1; - -/** - * Only allow vertical resizing for this dialog, disable horizontal resizing. - * - * @readonly - * @property {Number} [=2] - * @member CKEDITOR - */ -CKEDITOR.DIALOG_RESIZE_HEIGHT = 2; - -/** - * Allow the dialog to be resized in both directions. - * - * @readonly - * @property {Number} [=3] - * @member CKEDITOR - */ -CKEDITOR.DIALOG_RESIZE_BOTH = 3; - -( function() { - var cssLength = CKEDITOR.tools.cssLength; - - function isTabVisible( tabId ) { - return !!this._.tabs[ tabId ][ 0 ].$.offsetHeight; - } - - function getPreviousVisibleTab() { - var tabId = this._.currentTabId, - length = this._.tabIdList.length, - tabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, tabId ) + length; - - for ( var i = tabIndex - 1; i > tabIndex - length; i-- ) { - if ( isTabVisible.call( this, this._.tabIdList[ i % length ] ) ) - return this._.tabIdList[ i % length ]; - } - - return null; - } - - function getNextVisibleTab() { - var tabId = this._.currentTabId, - length = this._.tabIdList.length, - tabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, tabId ); - - for ( var i = tabIndex + 1; i < tabIndex + length; i++ ) { - if ( isTabVisible.call( this, this._.tabIdList[ i % length ] ) ) - return this._.tabIdList[ i % length ]; - } - - return null; - } - - - function clearOrRecoverTextInputValue( container, isRecover ) { - var inputs = container.$.getElementsByTagName( 'input' ); - for ( var i = 0, length = inputs.length; i < length; i++ ) { - var item = new CKEDITOR.dom.element( inputs[ i ] ); - - if ( item.getAttribute( 'type' ).toLowerCase() == 'text' ) { - if ( isRecover ) { - item.setAttribute( 'value', item.getCustomData( 'fake_value' ) || '' ); - item.removeCustomData( 'fake_value' ); - } else { - item.setCustomData( 'fake_value', item.getAttribute( 'value' ) ); - item.setAttribute( 'value', '' ); - } - } - } - } - - // Handle dialog element validation state UI changes. - function handleFieldValidated( isValid, msg ) { - var input = this.getInputElement(); - if ( input ) - isValid ? input.removeAttribute( 'aria-invalid' ) : input.setAttribute( 'aria-invalid', true ); - - if ( !isValid ) { - if ( this.select ) - this.select(); - else - this.focus(); - } - - msg && alert( msg ); // jshint ignore:line - - this.fire( 'validated', { valid: isValid, msg: msg } ); - } - - function resetField() { - var input = this.getInputElement(); - input && input.removeAttribute( 'aria-invalid' ); - } - - var templateSource = ''; - - function buildDialog( editor ) { - var element = CKEDITOR.dom.element.createFromHtml( CKEDITOR.addTemplate( 'dialog', templateSource ).output( { - id: CKEDITOR.tools.getNextNumber(), - editorId: editor.id, - langDir: editor.lang.dir, - langCode: editor.langCode, - editorDialogClass: 'cke_editor_' + editor.name.replace( /\./g, '\\.' ) + '_dialog', - closeTitle: editor.lang.common.close, - hidpi: CKEDITOR.env.hidpi ? 'cke_hidpi' : '' - } ) ); - - // TODO: Change this to getById(), so it'll support custom templates. - var body = element.getChild( [ 0, 0, 0, 0, 0 ] ), - title = body.getChild( 0 ), - close = body.getChild( 1 ); - - // IFrame shim for dialog that masks activeX in IE. (#7619) - if ( CKEDITOR.env.ie && !CKEDITOR.env.quirks ) { - var src = 'javascript:void(function(){' + encodeURIComponent( 'document.open();(' + CKEDITOR.tools.fixDomain + ')();document.close();' ) + '}())', // jshint ignore:line - iframe = CKEDITOR.dom.element.createFromHtml( '' ); - iframe.appendTo( body.getParent() ); - } - - // Make the Title and Close Button unselectable. - title.unselectable(); - close.unselectable(); - - return { - element: element, - parts: { - dialog: element.getChild( 0 ), - title: title, - close: close, - tabs: body.getChild( 2 ), - contents: body.getChild( [ 3, 0, 0, 0 ] ), - footer: body.getChild( [ 3, 0, 1, 0 ] ) - } - }; - } - - /** - * This is the base class for runtime dialog objects. An instance of this - * class represents a single named dialog for a single editor instance. - * - * var dialogObj = new CKEDITOR.dialog( editor, 'smiley' ); - * - * @class - * @constructor Creates a dialog class instance. - * @param {Object} editor The editor which created the dialog. - * @param {String} dialogName The dialog's registered name. - */ - CKEDITOR.dialog = function( editor, dialogName ) { - // Load the dialog definition. - var definition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ], - defaultDefinition = CKEDITOR.tools.clone( defaultDialogDefinition ), - buttonsOrder = editor.config.dialog_buttonsOrder || 'OS', - dir = editor.lang.dir, - tabsToRemove = {}, - i, processed, stopPropagation; - - if ( ( buttonsOrder == 'OS' && CKEDITOR.env.mac ) || // The buttons in MacOS Apps are in reverse order (#4750) - ( buttonsOrder == 'rtl' && dir == 'ltr' ) || ( buttonsOrder == 'ltr' && dir == 'rtl' ) ) - defaultDefinition.buttons.reverse(); - - - // Completes the definition with the default values. - definition = CKEDITOR.tools.extend( definition( editor ), defaultDefinition ); - - // Clone a functionally independent copy for this dialog. - definition = CKEDITOR.tools.clone( definition ); - - // Create a complex definition object, extending it with the API - // functions. - definition = new definitionObject( this, definition ); - - var themeBuilt = buildDialog( editor ); - - // Initialize some basic parameters. - this._ = { - editor: editor, - element: themeBuilt.element, - name: dialogName, - contentSize: { width: 0, height: 0 }, - size: { width: 0, height: 0 }, - contents: {}, - buttons: {}, - accessKeyMap: {}, - - // Initialize the tab and page map. - tabs: {}, - tabIdList: [], - currentTabId: null, - currentTabIndex: null, - pageCount: 0, - lastTab: null, - tabBarMode: false, - - // Initialize the tab order array for input widgets. - focusList: [], - currentFocusIndex: 0, - hasFocus: false - }; - - this.parts = themeBuilt.parts; - - CKEDITOR.tools.setTimeout( function() { - editor.fire( 'ariaWidget', this.parts.contents ); - }, 0, this ); - - // Set the startup styles for the dialog, avoiding it enlarging the - // page size on the dialog creation. - var startStyles = { - position: CKEDITOR.env.ie6Compat ? 'absolute' : 'fixed', - top: 0, - visibility: 'hidden' - }; - - startStyles[ dir == 'rtl' ? 'right' : 'left' ] = 0; - this.parts.dialog.setStyles( startStyles ); - - - // Call the CKEDITOR.event constructor to initialize this instance. - CKEDITOR.event.call( this ); - - // Fire the "dialogDefinition" event, making it possible to customize - // the dialog definition. - this.definition = definition = CKEDITOR.fire( 'dialogDefinition', { - name: dialogName, - definition: definition - }, editor ).definition; - - // Cache tabs that should be removed. - if ( !( 'removeDialogTabs' in editor._ ) && editor.config.removeDialogTabs ) { - var removeContents = editor.config.removeDialogTabs.split( ';' ); - - for ( i = 0; i < removeContents.length; i++ ) { - var parts = removeContents[ i ].split( ':' ); - if ( parts.length == 2 ) { - var removeDialogName = parts[ 0 ]; - if ( !tabsToRemove[ removeDialogName ] ) - tabsToRemove[ removeDialogName ] = []; - tabsToRemove[ removeDialogName ].push( parts[ 1 ] ); - } - } - editor._.removeDialogTabs = tabsToRemove; - } - - // Remove tabs of this dialog. - if ( editor._.removeDialogTabs && ( tabsToRemove = editor._.removeDialogTabs[ dialogName ] ) ) { - for ( i = 0; i < tabsToRemove.length; i++ ) - definition.removeContents( tabsToRemove[ i ] ); - } - - // Initialize load, show, hide, ok and cancel events. - if ( definition.onLoad ) - this.on( 'load', definition.onLoad ); - - if ( definition.onShow ) - this.on( 'show', definition.onShow ); - - if ( definition.onHide ) - this.on( 'hide', definition.onHide ); - - if ( definition.onOk ) { - this.on( 'ok', function( evt ) { - // Dialog confirm might probably introduce content changes (#5415). - editor.fire( 'saveSnapshot' ); - setTimeout( function() { - editor.fire( 'saveSnapshot' ); - }, 0 ); - if ( definition.onOk.call( this, evt ) === false ) - evt.data.hide = false; - } ); - } - - if ( definition.onCancel ) { - this.on( 'cancel', function( evt ) { - if ( definition.onCancel.call( this, evt ) === false ) - evt.data.hide = false; - } ); - } - - var me = this; - - // Iterates over all items inside all content in the dialog, calling a - // function for each of them. - var iterContents = function( func ) { - var contents = me._.contents, - stop = false; - - for ( var i in contents ) { - for ( var j in contents[ i ] ) { - stop = func.call( this, contents[ i ][ j ] ); - if ( stop ) - return; - } - } - }; - - this.on( 'ok', function( evt ) { - iterContents( function( item ) { - if ( item.validate ) { - var retval = item.validate( this ), - invalid = ( typeof retval == 'string' ) || retval === false; - - if ( invalid ) { - evt.data.hide = false; - evt.stop(); - } - - handleFieldValidated.call( item, !invalid, typeof retval == 'string' ? retval : undefined ); - return invalid; - } - } ); - }, this, null, 0 ); - - this.on( 'cancel', function( evt ) { - iterContents( function( item ) { - if ( item.isChanged() ) { - if ( !editor.config.dialog_noConfirmCancel && !confirm( editor.lang.common.confirmCancel ) ) // jshint ignore:line - evt.data.hide = false; - return true; - } - } ); - }, this, null, 0 ); - - this.parts.close.on( 'click', function( evt ) { - if ( this.fire( 'cancel', { hide: true } ).hide !== false ) - this.hide(); - evt.data.preventDefault(); - }, this ); - - // Sort focus list according to tab order definitions. - function setupFocus() { - var focusList = me._.focusList; - focusList.sort( function( a, b ) { - // Mimics browser tab order logics; - if ( a.tabIndex != b.tabIndex ) - return b.tabIndex - a.tabIndex; - // Sort is not stable in some browsers, - // fall-back the comparator to 'focusIndex'; - else - return a.focusIndex - b.focusIndex; - } ); - - var size = focusList.length; - for ( var i = 0; i < size; i++ ) - focusList[ i ].focusIndex = i; - } - - // Expects 1 or -1 as an offset, meaning direction of the offset change. - function changeFocus( offset ) { - var focusList = me._.focusList; - offset = offset || 0; - - if ( focusList.length < 1 ) - return; - - var startIndex = me._.currentFocusIndex; - - if ( me._.tabBarMode && offset < 0 ) { - // If we are in tab mode, we need to mimic that we started tabbing back from the first - // focusList (so it will go to the last one). - startIndex = 0; - } - - // Trigger the 'blur' event of any input element before anything, - // since certain UI updates may depend on it. - try { - focusList[ startIndex ].getInputElement().$.blur(); - } catch ( e ) {} - - var currentIndex = startIndex, - hasTabs = me._.pageCount > 1; - - do { - currentIndex = currentIndex + offset; - - if ( hasTabs && !me._.tabBarMode && ( currentIndex == focusList.length || currentIndex == -1 ) ) { - // If the dialog was not in tab mode, then focus the first tab (#13027). - me._.tabBarMode = true; - me._.tabs[ me._.currentTabId ][ 0 ].focus(); - me._.currentFocusIndex = -1; - - // Early return, in order to avoid accessing focusList[ -1 ]. - return; - } - - currentIndex = ( currentIndex + focusList.length ) % focusList.length; - - if ( currentIndex == startIndex ) { - break; - } - } while ( offset && !focusList[ currentIndex ].isFocusable() ); - - focusList[ currentIndex ].focus(); - - // Select whole field content. - if ( focusList[ currentIndex ].type == 'text' ) - focusList[ currentIndex ].select(); - } - - this.changeFocus = changeFocus; - - - function keydownHandler( evt ) { - // If I'm not the top dialog, ignore. - if ( me != CKEDITOR.dialog._.currentTop ) - return; - - var keystroke = evt.data.getKeystroke(), - rtl = editor.lang.dir == 'rtl', - arrowKeys = [ 37, 38, 39, 40 ], - button; - - processed = stopPropagation = 0; - - if ( keystroke == 9 || keystroke == CKEDITOR.SHIFT + 9 ) { - var shiftPressed = ( keystroke == CKEDITOR.SHIFT + 9 ); - changeFocus( shiftPressed ? -1 : 1 ); - processed = 1; - } else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode && me.getPageCount() > 1 ) { - // Alt-F10 puts focus into the current tab item in the tab bar. - me._.tabBarMode = true; - me._.tabs[ me._.currentTabId ][ 0 ].focus(); - me._.currentFocusIndex = -1; - processed = 1; - } else if ( CKEDITOR.tools.indexOf( arrowKeys, keystroke ) != -1 && me._.tabBarMode ) { - // Array with key codes that activate previous tab. - var prevKeyCodes = [ - // Depending on the lang dir: right or left key - rtl ? 39 : 37, - // Top/bot arrow: actually for both cases it's the same. - 38 - ], - nextId = CKEDITOR.tools.indexOf( prevKeyCodes, keystroke ) != -1 ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ); - - me.selectPage( nextId ); - me._.tabs[ nextId ][ 0 ].focus(); - processed = 1; - } else if ( ( keystroke == 13 || keystroke == 32 ) && me._.tabBarMode ) { - this.selectPage( this._.currentTabId ); - this._.tabBarMode = false; - this._.currentFocusIndex = -1; - changeFocus( 1 ); - processed = 1; - } - // If user presses enter key in a text box, it implies clicking OK for the dialog. - else if ( keystroke == 13 /*ENTER*/ ) { - // Don't do that for a target that handles ENTER. - var target = evt.data.getTarget(); - if ( !target.is( 'a', 'button', 'select', 'textarea' ) && ( !target.is( 'input' ) || target.$.type != 'button' ) ) { - button = this.getButton( 'ok' ); - button && CKEDITOR.tools.setTimeout( button.click, 0, button ); - processed = 1; - } - stopPropagation = 1; // Always block the propagation (#4269) - } else if ( keystroke == 27 /*ESC*/ ) { - button = this.getButton( 'cancel' ); - - // If there's a Cancel button, click it, else just fire the cancel event and hide the dialog. - if ( button ) - CKEDITOR.tools.setTimeout( button.click, 0, button ); - else { - if ( this.fire( 'cancel', { hide: true } ).hide !== false ) - this.hide(); - } - stopPropagation = 1; // Always block the propagation (#4269) - } else { - return; - } - - keypressHandler( evt ); - } - - function keypressHandler( evt ) { - if ( processed ) - evt.data.preventDefault( 1 ); - else if ( stopPropagation ) - evt.data.stopPropagation(); - } - - var dialogElement = this._.element; - - editor.focusManager.add( dialogElement, 1 ); - - // Add the dialog keyboard handlers. - this.on( 'show', function() { - dialogElement.on( 'keydown', keydownHandler, this ); - - // Some browsers instead, don't cancel key events in the keydown, but in the - // keypress. So we must do a longer trip in those cases. (#4531,#8985) - if ( CKEDITOR.env.gecko ) - dialogElement.on( 'keypress', keypressHandler, this ); - - } ); - this.on( 'hide', function() { - dialogElement.removeListener( 'keydown', keydownHandler ); - if ( CKEDITOR.env.gecko ) - dialogElement.removeListener( 'keypress', keypressHandler ); - - // Reset fields state when closing dialog. - iterContents( function( item ) { - resetField.apply( item ); - } ); - } ); - this.on( 'iframeAdded', function( evt ) { - var doc = new CKEDITOR.dom.document( evt.data.iframe.$.contentWindow.document ); - doc.on( 'keydown', keydownHandler, this, null, 0 ); - } ); - - // Auto-focus logic in dialog. - this.on( 'show', function() { - // Setup tabIndex on showing the dialog instead of on loading - // to allow dynamic tab order happen in dialog definition. - setupFocus(); - - var hasTabs = me._.pageCount > 1; - - if ( editor.config.dialog_startupFocusTab && hasTabs ) { - me._.tabBarMode = true; - me._.tabs[ me._.currentTabId ][ 0 ].focus(); - me._.currentFocusIndex = -1; - } else if ( !this._.hasFocus ) { - // http://dev.ckeditor.com/ticket/13114#comment:4. - this._.currentFocusIndex = hasTabs ? -1 : this._.focusList.length - 1; - - // Decide where to put the initial focus. - if ( definition.onFocus ) { - var initialFocus = definition.onFocus.call( this ); - // Focus the field that the user specified. - initialFocus && initialFocus.focus(); - } - // Focus the first field in layout order. - else { - changeFocus( 1 ); - } - } - }, this, null, 0xffffffff ); - - // IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (#2661). - // This is still needed after [2708] and [2709] because text fields in hidden TR tags are still broken. - if ( CKEDITOR.env.ie6Compat ) { - this.on( 'load', function() { - var outer = this.getElement(), - inner = outer.getFirst(); - inner.remove(); - inner.appendTo( outer ); - }, this ); - } - - initDragAndDrop( this ); - initResizeHandles( this ); - - // Insert the title. - ( new CKEDITOR.dom.text( definition.title, CKEDITOR.document ) ).appendTo( this.parts.title ); - - // Insert the tabs and contents. - for ( i = 0; i < definition.contents.length; i++ ) { - var page = definition.contents[ i ]; - page && this.addPage( page ); - } - - this.parts.tabs.on( 'click', function( evt ) { - var target = evt.data.getTarget(); - // If we aren't inside a tab, bail out. - if ( target.hasClass( 'cke_dialog_tab' ) ) { - // Get the ID of the tab, without the 'cke_' prefix and the unique number suffix. - var id = target.$.id; - this.selectPage( id.substring( 4, id.lastIndexOf( '_' ) ) ); - - if ( this._.tabBarMode ) { - this._.tabBarMode = false; - this._.currentFocusIndex = -1; - changeFocus( 1 ); - } - evt.data.preventDefault(); - } - }, this ); - - // Insert buttons. - var buttonsHtml = [], - buttons = CKEDITOR.dialog._.uiElementBuilders.hbox.build( this, { - type: 'hbox', - className: 'cke_dialog_footer_buttons', - widths: [], - children: definition.buttons - }, buttonsHtml ).getChild(); - this.parts.footer.setHtml( buttonsHtml.join( '' ) ); - - for ( i = 0; i < buttons.length; i++ ) - this._.buttons[ buttons[ i ].id ] = buttons[ i ]; - }; - - // Focusable interface. Use it via dialog.addFocusable. - function Focusable( dialog, element, index ) { - this.element = element; - this.focusIndex = index; - // TODO: support tabIndex for focusables. - this.tabIndex = 0; - this.isFocusable = function() { - return !element.getAttribute( 'disabled' ) && element.isVisible(); - }; - this.focus = function() { - dialog._.currentFocusIndex = this.focusIndex; - this.element.focus(); - }; - // Bind events - element.on( 'keydown', function( e ) { - if ( e.data.getKeystroke() in { 32: 1, 13: 1 } ) - this.fire( 'click' ); - } ); - element.on( 'focus', function() { - this.fire( 'mouseover' ); - } ); - element.on( 'blur', function() { - this.fire( 'mouseout' ); - } ); - } - - // Re-layout the dialog on window resize. - function resizeWithWindow( dialog ) { - var win = CKEDITOR.document.getWindow(); - function resizeHandler() { - dialog.layout(); - } - win.on( 'resize', resizeHandler ); - dialog.on( 'hide', function() { - win.removeListener( 'resize', resizeHandler ); - } ); - } - - CKEDITOR.dialog.prototype = { - destroy: function() { - this.hide(); - this._.element.remove(); - }, - - /** - * Resizes the dialog. - * - * dialogObj.resize( 800, 640 ); - * - * @method - * @param {Number} width The width of the dialog in pixels. - * @param {Number} height The height of the dialog in pixels. - */ - resize: ( function() { - return function( width, height ) { - if ( this._.contentSize && this._.contentSize.width == width && this._.contentSize.height == height ) - return; - - CKEDITOR.dialog.fire( 'resize', { - dialog: this, - width: width, - height: height - }, this._.editor ); - - this.fire( 'resize', { - width: width, - height: height - }, this._.editor ); - - var contents = this.parts.contents; - contents.setStyles( { - width: width + 'px', - height: height + 'px' - } ); - - // Update dialog position when dimension get changed in RTL. - if ( this._.editor.lang.dir == 'rtl' && this._.position ) - this._.position.x = CKEDITOR.document.getWindow().getViewPaneSize().width - this._.contentSize.width - parseInt( this._.element.getFirst().getStyle( 'right' ), 10 ); - - this._.contentSize = { width: width, height: height }; - }; - } )(), - - /** - * Gets the current size of the dialog in pixels. - * - * var width = dialogObj.getSize().width; - * - * @returns {Object} - * @returns {Number} return.width - * @returns {Number} return.height - */ - getSize: function() { - var element = this._.element.getFirst(); - return { width: element.$.offsetWidth || 0, height: element.$.offsetHeight || 0 }; - }, - - /** - * Moves the dialog to an `(x, y)` coordinate relative to the window. - * - * dialogObj.move( 10, 40 ); - * - * @method - * @param {Number} x The target x-coordinate. - * @param {Number} y The target y-coordinate. - * @param {Boolean} save Flag indicate whether the dialog position should be remembered on next open up. - */ - move: function( x, y, save ) { - - // The dialog may be fixed positioned or absolute positioned. Ask the - // browser what is the current situation first. - var element = this._.element.getFirst(), rtl = this._.editor.lang.dir == 'rtl'; - var isFixed = element.getComputedStyle( 'position' ) == 'fixed'; - - // (#8888) In some cases of a very small viewport, dialog is incorrectly - // positioned in IE7. It also happens that it remains sticky and user cannot - // scroll down/up to reveal dialog's content below/above the viewport; this is - // cumbersome. - // The only way to fix this is to move mouse out of the browser and - // go back to see that dialog position is automagically fixed. No events, - // no style change - pure magic. This is a IE7 rendering issue, which can be - // fixed with dummy style redraw on each move. - if ( CKEDITOR.env.ie ) - element.setStyle( 'zoom', '100%' ); - - if ( isFixed && this._.position && this._.position.x == x && this._.position.y == y ) - return; - - // Save the current position. - this._.position = { x: x, y: y }; - - // If not fixed positioned, add scroll position to the coordinates. - if ( !isFixed ) { - var scrollPosition = CKEDITOR.document.getWindow().getScrollPosition(); - x += scrollPosition.x; - y += scrollPosition.y; - } - - // Translate coordinate for RTL. - if ( rtl ) { - var dialogSize = this.getSize(), viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(); - x = viewPaneSize.width - dialogSize.width - x; - } - - var styles = { 'top': ( y > 0 ? y : 0 ) + 'px' }; - styles[ rtl ? 'right' : 'left' ] = ( x > 0 ? x : 0 ) + 'px'; - - element.setStyles( styles ); - - save && ( this._.moved = 1 ); - }, - - /** - * Gets the dialog's position in the window. - * - * var dialogX = dialogObj.getPosition().x; - * - * @returns {Object} - * @returns {Number} return.x - * @returns {Number} return.y - */ - getPosition: function() { - return CKEDITOR.tools.extend( {}, this._.position ); - }, - - /** - * Shows the dialog box. - * - * dialogObj.show(); - */ - show: function() { - // Insert the dialog's element to the root document. - var element = this._.element; - var definition = this.definition; - if ( !( element.getParent() && element.getParent().equals( CKEDITOR.document.getBody() ) ) ) - element.appendTo( CKEDITOR.document.getBody() ); - else - element.setStyle( 'display', 'block' ); - - // First, set the dialog to an appropriate size. - this.resize( - this._.contentSize && this._.contentSize.width || definition.width || definition.minWidth, - this._.contentSize && this._.contentSize.height || definition.height || definition.minHeight - ); - - // Reset all inputs back to their default value. - this.reset(); - - // Select the first tab by default. - this.selectPage( this.definition.contents[ 0 ].id ); - - // Set z-index. - if ( CKEDITOR.dialog._.currentZIndex === null ) - CKEDITOR.dialog._.currentZIndex = this._.editor.config.baseFloatZIndex; - this._.element.getFirst().setStyle( 'z-index', CKEDITOR.dialog._.currentZIndex += 10 ); - - // Maintain the dialog ordering and dialog cover. - if ( CKEDITOR.dialog._.currentTop === null ) { - CKEDITOR.dialog._.currentTop = this; - this._.parentDialog = null; - showCover( this._.editor ); - - } else { - this._.parentDialog = CKEDITOR.dialog._.currentTop; - var parentElement = this._.parentDialog.getElement().getFirst(); - parentElement.$.style.zIndex -= Math.floor( this._.editor.config.baseFloatZIndex / 2 ); - CKEDITOR.dialog._.currentTop = this; - } - - element.on( 'keydown', accessKeyDownHandler ); - element.on( 'keyup', accessKeyUpHandler ); - - // Reset the hasFocus state. - this._.hasFocus = false; - - for ( var i in definition.contents ) { - if ( !definition.contents[ i ] ) - continue; - - var content = definition.contents[ i ], - tab = this._.tabs[ content.id ], - requiredContent = content.requiredContent, - enableElements = 0; - - if ( !tab ) - continue; - - for ( var j in this._.contents[ content.id ] ) { - var elem = this._.contents[ content.id ][ j ]; - - if ( elem.type == 'hbox' || elem.type == 'vbox' || !elem.getInputElement() ) - continue; - - if ( elem.requiredContent && !this._.editor.activeFilter.check( elem.requiredContent ) ) - elem.disable(); - else { - elem.enable(); - enableElements++; - } - } - - if ( !enableElements || ( requiredContent && !this._.editor.activeFilter.check( requiredContent ) ) ) - tab[ 0 ].addClass( 'cke_dialog_tab_disabled' ); - else - tab[ 0 ].removeClass( 'cke_dialog_tab_disabled' ); - } - - CKEDITOR.tools.setTimeout( function() { - this.layout(); - resizeWithWindow( this ); - - this.parts.dialog.setStyle( 'visibility', '' ); - - // Execute onLoad for the first show. - this.fireOnce( 'load', {} ); - CKEDITOR.ui.fire( 'ready', this ); - - this.fire( 'show', {} ); - this._.editor.fire( 'dialogShow', this ); - - if ( !this._.parentDialog ) - this._.editor.focusManager.lock(); - - // Save the initial values of the dialog. - this.foreach( function( contentObj ) { - contentObj.setInitValue && contentObj.setInitValue(); - } ); - - }, 100, this ); - }, - - /** - * Rearrange the dialog to its previous position or the middle of the window. - * - * @since 3.5 - */ - layout: function() { - var el = this.parts.dialog; - var dialogSize = this.getSize(); - var win = CKEDITOR.document.getWindow(), - viewSize = win.getViewPaneSize(); - - var posX = ( viewSize.width - dialogSize.width ) / 2, - posY = ( viewSize.height - dialogSize.height ) / 2; - - // Switch to absolute position when viewport is smaller than dialog size. - if ( !CKEDITOR.env.ie6Compat ) { - if ( dialogSize.height + ( posY > 0 ? posY : 0 ) > viewSize.height || dialogSize.width + ( posX > 0 ? posX : 0 ) > viewSize.width ) { - el.setStyle( 'position', 'absolute' ); - } else { - el.setStyle( 'position', 'fixed' ); - } - } - - this.move( this._.moved ? this._.position.x : posX, this._.moved ? this._.position.y : posY ); - }, - - /** - * Executes a function for each UI element. - * - * @param {Function} fn Function to execute for each UI element. - * @returns {CKEDITOR.dialog} The current dialog object. - */ - foreach: function( fn ) { - for ( var i in this._.contents ) { - for ( var j in this._.contents[ i ] ) { - fn.call( this, this._.contents[i][j] ); - } - } - - return this; - }, - - /** - * Resets all input values in the dialog. - * - * dialogObj.reset(); - * - * @method - * @chainable - */ - reset: ( function() { - var fn = function( widget ) { - if ( widget.reset ) - widget.reset( 1 ); - }; - return function() { - this.foreach( fn ); - return this; - }; - } )(), - - - /** - * Calls the {@link CKEDITOR.dialog.definition.uiElement#setup} method of each - * of the UI elements, with the arguments passed through it. - * It is usually being called when the dialog is opened, to put the initial value inside the field. - * - * dialogObj.setupContent(); - * - * var timestamp = ( new Date() ).valueOf(); - * dialogObj.setupContent( timestamp ); - */ - setupContent: function() { - var args = arguments; - this.foreach( function( widget ) { - if ( widget.setup ) - widget.setup.apply( widget, args ); - } ); - }, - - /** - * Calls the {@link CKEDITOR.dialog.definition.uiElement#commit} method of each - * of the UI elements, with the arguments passed through it. - * It is usually being called when the user confirms the dialog, to process the values. - * - * dialogObj.commitContent(); - * - * var timestamp = ( new Date() ).valueOf(); - * dialogObj.commitContent( timestamp ); - */ - commitContent: function() { - var args = arguments; - this.foreach( function( widget ) { - // Make sure IE triggers "change" event on last focused input before closing the dialog. (#7915) - if ( CKEDITOR.env.ie && this._.currentFocusIndex == widget.focusIndex ) - widget.getInputElement().$.blur(); - - if ( widget.commit ) - widget.commit.apply( widget, args ); - } ); - }, - - /** - * Hides the dialog box. - * - * dialogObj.hide(); - */ - hide: function() { - if ( !this.parts.dialog.isVisible() ) - return; - - this.fire( 'hide', {} ); - this._.editor.fire( 'dialogHide', this ); - // Reset the tab page. - this.selectPage( this._.tabIdList[ 0 ] ); - var element = this._.element; - element.setStyle( 'display', 'none' ); - this.parts.dialog.setStyle( 'visibility', 'hidden' ); - // Unregister all access keys associated with this dialog. - unregisterAccessKey( this ); - - // Close any child(top) dialogs first. - while ( CKEDITOR.dialog._.currentTop != this ) - CKEDITOR.dialog._.currentTop.hide(); - - // Maintain dialog ordering and remove cover if needed. - if ( !this._.parentDialog ) - hideCover( this._.editor ); - else { - var parentElement = this._.parentDialog.getElement().getFirst(); - parentElement.setStyle( 'z-index', parseInt( parentElement.$.style.zIndex, 10 ) + Math.floor( this._.editor.config.baseFloatZIndex / 2 ) ); - } - CKEDITOR.dialog._.currentTop = this._.parentDialog; - - // Deduct or clear the z-index. - if ( !this._.parentDialog ) { - CKEDITOR.dialog._.currentZIndex = null; - - // Remove access key handlers. - element.removeListener( 'keydown', accessKeyDownHandler ); - element.removeListener( 'keyup', accessKeyUpHandler ); - - var editor = this._.editor; - editor.focus(); - - // Give a while before unlock, waiting for focus to return to the editable. (#172) - setTimeout( function() { - editor.focusManager.unlock(); - - // Fixed iOS focus issue (#12381). - // Keep in mind that editor.focus() does not work in this case. - if ( CKEDITOR.env.iOS ) { - editor.window.focus(); - } - }, 0 ); - - } else { - CKEDITOR.dialog._.currentZIndex -= 10; - } - - delete this._.parentDialog; - // Reset the initial values of the dialog. - this.foreach( function( contentObj ) { - contentObj.resetInitValue && contentObj.resetInitValue(); - } ); - }, - - /** - * Adds a tabbed page into the dialog. - * - * @param {Object} contents Content definition. - */ - addPage: function( contents ) { - if ( contents.requiredContent && !this._.editor.filter.check( contents.requiredContent ) ) - return; - - var pageHtml = [], - titleHtml = contents.label ? ' title="' + CKEDITOR.tools.htmlEncode( contents.label ) + '"' : '', - vbox = CKEDITOR.dialog._.uiElementBuilders.vbox.build( this, { - type: 'vbox', - className: 'cke_dialog_page_contents', - children: contents.elements, - expand: !!contents.expand, - padding: contents.padding, - style: contents.style || 'width: 100%;' - }, pageHtml ); - - var contentMap = this._.contents[ contents.id ] = {}, - cursor, - children = vbox.getChild(), - enabledFields = 0; - - while ( ( cursor = children.shift() ) ) { - // Count all allowed fields. - if ( !cursor.notAllowed && cursor.type != 'hbox' && cursor.type != 'vbox' ) - enabledFields++; - - contentMap[ cursor.id ] = cursor; - if ( typeof cursor.getChild == 'function' ) - children.push.apply( children, cursor.getChild() ); - } - - // If all fields are disabled (because they are not allowed) hide this tab. - if ( !enabledFields ) - contents.hidden = true; - - // Create the HTML for the tab and the content block. - var page = CKEDITOR.dom.element.createFromHtml( pageHtml.join( '' ) ); - page.setAttribute( 'role', 'tabpanel' ); - - var env = CKEDITOR.env; - var tabId = 'cke_' + contents.id + '_' + CKEDITOR.tools.getNextNumber(), - tab = CKEDITOR.dom.element.createFromHtml( [ - ' 0 ? ' cke_last' : 'cke_first' ), - titleHtml, - ( !!contents.hidden ? ' style="display:none"' : '' ), - ' id="', tabId, '"', - env.gecko && !env.hc ? '' : ' href="javascript:void(0)"', - ' tabIndex="-1"', - ' hidefocus="true"', - ' role="tab">', - contents.label, - '' - ].join( '' ) ); - - page.setAttribute( 'aria-labelledby', tabId ); - - // Take records for the tabs and elements created. - this._.tabs[ contents.id ] = [ tab, page ]; - this._.tabIdList.push( contents.id ); - !contents.hidden && this._.pageCount++; - this._.lastTab = tab; - this.updateStyle(); - - // Attach the DOM nodes. - - page.setAttribute( 'name', contents.id ); - page.appendTo( this.parts.contents ); - - tab.unselectable(); - this.parts.tabs.append( tab ); - - // Add access key handlers if access key is defined. - if ( contents.accessKey ) { - registerAccessKey( this, this, 'CTRL+' + contents.accessKey, tabAccessKeyDown, tabAccessKeyUp ); - this._.accessKeyMap[ 'CTRL+' + contents.accessKey ] = contents.id; - } - }, - - /** - * Activates a tab page in the dialog by its id. - * - * dialogObj.selectPage( 'tab_1' ); - * - * @param {String} id The id of the dialog tab to be activated. - */ - selectPage: function( id ) { - if ( this._.currentTabId == id ) - return; - - if ( this._.tabs[ id ][ 0 ].hasClass( 'cke_dialog_tab_disabled' ) ) - return; - - // If event was canceled - do nothing. - if ( this.fire( 'selectPage', { page: id, currentPage: this._.currentTabId } ) === false ) - return; - - // Hide the non-selected tabs and pages. - for ( var i in this._.tabs ) { - var tab = this._.tabs[ i ][ 0 ], - page = this._.tabs[ i ][ 1 ]; - if ( i != id ) { - tab.removeClass( 'cke_dialog_tab_selected' ); - page.hide(); - } - page.setAttribute( 'aria-hidden', i != id ); - } - - var selected = this._.tabs[ id ]; - selected[ 0 ].addClass( 'cke_dialog_tab_selected' ); - - // [IE] an invisible input[type='text'] will enlarge it's width - // if it's value is long when it shows, so we clear it's value - // before it shows and then recover it (#5649) - if ( CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ) { - clearOrRecoverTextInputValue( selected[ 1 ] ); - selected[ 1 ].show(); - setTimeout( function() { - clearOrRecoverTextInputValue( selected[ 1 ], 1 ); - }, 0 ); - } else { - selected[ 1 ].show(); - } - - this._.currentTabId = id; - this._.currentTabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, id ); - }, - - /** - * Dialog state-specific style updates. - */ - updateStyle: function() { - // If only a single page shown, a different style is used in the central pane. - this.parts.dialog[ ( this._.pageCount === 1 ? 'add' : 'remove' ) + 'Class' ]( 'cke_single_page' ); - }, - - /** - * Hides a page's tab away from the dialog. - * - * dialog.hidePage( 'tab_3' ); - * - * @param {String} id The page's Id. - */ - hidePage: function( id ) { - var tab = this._.tabs[ id ] && this._.tabs[ id ][ 0 ]; - if ( !tab || this._.pageCount == 1 || !tab.isVisible() ) - return; - // Switch to other tab first when we're hiding the active tab. - else if ( id == this._.currentTabId ) - this.selectPage( getPreviousVisibleTab.call( this ) ); - - tab.hide(); - this._.pageCount--; - this.updateStyle(); - }, - - /** - * Unhides a page's tab. - * - * dialog.showPage( 'tab_2' ); - * - * @param {String} id The page's Id. - */ - showPage: function( id ) { - var tab = this._.tabs[ id ] && this._.tabs[ id ][ 0 ]; - if ( !tab ) - return; - tab.show(); - this._.pageCount++; - this.updateStyle(); - }, - - /** - * Gets the root DOM element of the dialog. - * - * var dialogElement = dialogObj.getElement().getFirst(); - * dialogElement.setStyle( 'padding', '5px' ); - * - * @returns {CKEDITOR.dom.element} The `` element containing this dialog. - */ - getElement: function() { - return this._.element; - }, - - /** - * Gets the name of the dialog. - * - * var dialogName = dialogObj.getName(); - * - * @returns {String} The name of this dialog. - */ - getName: function() { - return this._.name; - }, - - /** - * Gets a dialog UI element object from a dialog page. - * - * dialogObj.getContentElement( 'tabId', 'elementId' ).setValue( 'Example' ); - * - * @param {String} pageId id of dialog page. - * @param {String} elementId id of UI element. - * @returns {CKEDITOR.ui.dialog.uiElement} The dialog UI element. - */ - getContentElement: function( pageId, elementId ) { - var page = this._.contents[ pageId ]; - return page && page[ elementId ]; - }, - - /** - * Gets the value of a dialog UI element. - * - * alert( dialogObj.getValueOf( 'tabId', 'elementId' ) ); - * - * @param {String} pageId id of dialog page. - * @param {String} elementId id of UI element. - * @returns {Object} The value of the UI element. - */ - getValueOf: function( pageId, elementId ) { - return this.getContentElement( pageId, elementId ).getValue(); - }, - - /** - * Sets the value of a dialog UI element. - * - * dialogObj.setValueOf( 'tabId', 'elementId', 'Example' ); - * - * @param {String} pageId id of the dialog page. - * @param {String} elementId id of the UI element. - * @param {Object} value The new value of the UI element. - */ - setValueOf: function( pageId, elementId, value ) { - return this.getContentElement( pageId, elementId ).setValue( value ); - }, - - /** - * Gets the UI element of a button in the dialog's button row. - * - * @returns {CKEDITOR.ui.dialog.button} The button object. - * - * @param {String} id The id of the button. - */ - getButton: function( id ) { - return this._.buttons[ id ]; - }, - - /** - * Simulates a click to a dialog button in the dialog's button row. - * - * @returns The return value of the dialog's `click` event. - * - * @param {String} id The id of the button. - */ - click: function( id ) { - return this._.buttons[ id ].click(); - }, - - /** - * Disables a dialog button. - * - * @param {String} id The id of the button. - */ - disableButton: function( id ) { - return this._.buttons[ id ].disable(); - }, - - /** - * Enables a dialog button. - * - * @param {String} id The id of the button. - */ - enableButton: function( id ) { - return this._.buttons[ id ].enable(); - }, - - /** - * Gets the number of pages in the dialog. - * - * @returns {Number} Page count. - */ - getPageCount: function() { - return this._.pageCount; - }, - - /** - * Gets the editor instance which opened this dialog. - * - * @returns {CKEDITOR.editor} Parent editor instances. - */ - getParentEditor: function() { - return this._.editor; - }, - - /** - * Gets the element that was selected when opening the dialog, if any. - * - * @returns {CKEDITOR.dom.element} The element that was selected, or `null`. - */ - getSelectedElement: function() { - return this.getParentEditor().getSelection().getSelectedElement(); - }, - - /** - * Adds element to dialog's focusable list. - * - * @param {CKEDITOR.dom.element} element - * @param {Number} [index] - */ - addFocusable: function( element, index ) { - if ( typeof index == 'undefined' ) { - index = this._.focusList.length; - this._.focusList.push( new Focusable( this, element, index ) ); - } else { - this._.focusList.splice( index, 0, new Focusable( this, element, index ) ); - for ( var i = index + 1; i < this._.focusList.length; i++ ) - this._.focusList[ i ].focusIndex++; - } - } - }; - - CKEDITOR.tools.extend( CKEDITOR.dialog, { - /** - * Registers a dialog. - * - * // Full sample plugin, which does not only register a dialog window but also adds an item to the context menu. - * // To open the dialog window, choose "Open dialog" in the context menu. - * CKEDITOR.plugins.add( 'myplugin', { - * init: function( editor ) { - * editor.addCommand( 'mydialog',new CKEDITOR.dialogCommand( 'mydialog' ) ); - * - * if ( editor.contextMenu ) { - * editor.addMenuGroup( 'mygroup', 10 ); - * editor.addMenuItem( 'My Dialog', { - * label: 'Open dialog', - * command: 'mydialog', - * group: 'mygroup' - * } ); - * editor.contextMenu.addListener( function( element ) { - * return { 'My Dialog': CKEDITOR.TRISTATE_OFF }; - * } ); - * } - * - * CKEDITOR.dialog.add( 'mydialog', function( api ) { - * // CKEDITOR.dialog.definition - * var dialogDefinition = { - * title: 'Sample dialog', - * minWidth: 390, - * minHeight: 130, - * contents: [ - * { - * id: 'tab1', - * label: 'Label', - * title: 'Title', - * expand: true, - * padding: 0, - * elements: [ - * { - * type: 'html', - * html: '

This is some sample HTML content.

' - * }, - * { - * type: 'textarea', - * id: 'textareaId', - * rows: 4, - * cols: 40 - * } - * ] - * } - * ], - * buttons: [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ], - * onOk: function() { - * // "this" is now a CKEDITOR.dialog object. - * // Accessing dialog elements: - * var textareaObj = this.getContentElement( 'tab1', 'textareaId' ); - * alert( "You have entered: " + textareaObj.getValue() ); - * } - * }; - * - * return dialogDefinition; - * } ); - * } - * } ); - * - * CKEDITOR.replace( 'editor1', { extraPlugins: 'myplugin' } ); - * - * @static - * @param {String} name The dialog's name. - * @param {Function/String} dialogDefinition - * A function returning the dialog's definition, or the URL to the `.js` file holding the function. - * The function should accept an argument `editor` which is the current editor instance, and - * return an object conforming to {@link CKEDITOR.dialog.definition}. - * @see CKEDITOR.dialog.definition - */ - add: function( name, dialogDefinition ) { - // Avoid path registration from multiple instances override definition. - if ( !this._.dialogDefinitions[ name ] || typeof dialogDefinition == 'function' ) - this._.dialogDefinitions[ name ] = dialogDefinition; - }, - - /** - * @static - * @todo - */ - exists: function( name ) { - return !!this._.dialogDefinitions[ name ]; - }, - - /** - * @static - * @todo - */ - getCurrent: function() { - return CKEDITOR.dialog._.currentTop; - }, - - /** - * Check whether tab wasn't removed by {@link CKEDITOR.config#removeDialogTabs}. - * - * @since 4.1 - * @static - * @param {CKEDITOR.editor} editor - * @param {String} dialogName - * @param {String} tabName - * @returns {Boolean} - */ - isTabEnabled: function( editor, dialogName, tabName ) { - var cfg = editor.config.removeDialogTabs; - - return !( cfg && cfg.match( new RegExp( '(?:^|;)' + dialogName + ':' + tabName + '(?:$|;)', 'i' ) ) ); - }, - - /** - * The default OK button for dialogs. Fires the `ok` event and closes the dialog if the event succeeds. - * - * @static - * @method - */ - okButton: ( function() { - var retval = function( editor, override ) { - override = override || {}; - return CKEDITOR.tools.extend( { - id: 'ok', - type: 'button', - label: editor.lang.common.ok, - 'class': 'cke_dialog_ui_button_ok', - onClick: function( evt ) { - var dialog = evt.data.dialog; - if ( dialog.fire( 'ok', { hide: true } ).hide !== false ) - dialog.hide(); - } - }, override, true ); - }; - retval.type = 'button'; - retval.override = function( override ) { - return CKEDITOR.tools.extend( function( editor ) { - return retval( editor, override ); - }, { type: 'button' }, true ); - }; - return retval; - } )(), - - /** - * The default cancel button for dialogs. Fires the `cancel` event and - * closes the dialog if no UI element value changed. - * - * @static - * @method - */ - cancelButton: ( function() { - var retval = function( editor, override ) { - override = override || {}; - return CKEDITOR.tools.extend( { - id: 'cancel', - type: 'button', - label: editor.lang.common.cancel, - 'class': 'cke_dialog_ui_button_cancel', - onClick: function( evt ) { - var dialog = evt.data.dialog; - if ( dialog.fire( 'cancel', { hide: true } ).hide !== false ) - dialog.hide(); - } - }, override, true ); - }; - retval.type = 'button'; - retval.override = function( override ) { - return CKEDITOR.tools.extend( function( editor ) { - return retval( editor, override ); - }, { type: 'button' }, true ); - }; - return retval; - } )(), - - /** - * Registers a dialog UI element. - * - * @static - * @param {String} typeName The name of the UI element. - * @param {Function} builder The function to build the UI element. - */ - addUIElement: function( typeName, builder ) { - this._.uiElementBuilders[ typeName ] = builder; - } - } ); - - CKEDITOR.dialog._ = { - uiElementBuilders: {}, - - dialogDefinitions: {}, - - currentTop: null, - - currentZIndex: null - }; - - // "Inherit" (copy actually) from CKEDITOR.event. - CKEDITOR.event.implementOn( CKEDITOR.dialog ); - CKEDITOR.event.implementOn( CKEDITOR.dialog.prototype ); - - var defaultDialogDefinition = { - resizable: CKEDITOR.DIALOG_RESIZE_BOTH, - minWidth: 600, - minHeight: 400, - buttons: [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ] - }; - - // Tool function used to return an item from an array based on its id - // property. - var getById = function( array, id, recurse ) { - for ( var i = 0, item; - ( item = array[ i ] ); i++ ) { - if ( item.id == id ) - return item; - if ( recurse && item[ recurse ] ) { - var retval = getById( item[ recurse ], id, recurse ); - if ( retval ) - return retval; - } - } - return null; - }; - - // Tool function used to add an item into an array. - var addById = function( array, newItem, nextSiblingId, recurse, nullIfNotFound ) { - if ( nextSiblingId ) { - for ( var i = 0, item; - ( item = array[ i ] ); i++ ) { - if ( item.id == nextSiblingId ) { - array.splice( i, 0, newItem ); - return newItem; - } - - if ( recurse && item[ recurse ] ) { - var retval = addById( item[ recurse ], newItem, nextSiblingId, recurse, true ); - if ( retval ) - return retval; - } - } - - if ( nullIfNotFound ) - return null; - } - - array.push( newItem ); - return newItem; - }; - - // Tool function used to remove an item from an array based on its id. - var removeById = function( array, id, recurse ) { - for ( var i = 0, item; - ( item = array[ i ] ); i++ ) { - if ( item.id == id ) - return array.splice( i, 1 ); - if ( recurse && item[ recurse ] ) { - var retval = removeById( item[ recurse ], id, recurse ); - if ( retval ) - return retval; - } - } - return null; - }; - - /** - * This class is not really part of the API. It is the `definition` property value - * passed to `dialogDefinition` event handlers. - * - * CKEDITOR.on( 'dialogDefinition', function( evt ) { - * var definition = evt.data.definition; - * var content = definition.getContents( 'page1' ); - * // ... - * } ); - * - * @private - * @class CKEDITOR.dialog.definitionObject - * @extends CKEDITOR.dialog.definition - * @constructor Creates a definitionObject class instance. - */ - var definitionObject = function( dialog, dialogDefinition ) { - // TODO : Check if needed. - this.dialog = dialog; - - // Transform the contents entries in contentObjects. - var contents = dialogDefinition.contents; - for ( var i = 0, content; - ( content = contents[ i ] ); i++ ) - contents[ i ] = content && new contentObject( dialog, content ); - - CKEDITOR.tools.extend( this, dialogDefinition ); - }; - - definitionObject.prototype = { - /** - * Gets a content definition. - * - * @param {String} id The id of the content definition. - * @returns {CKEDITOR.dialog.definition.content} The content definition matching id. - */ - getContents: function( id ) { - return getById( this.contents, id ); - }, - - /** - * Gets a button definition. - * - * @param {String} id The id of the button definition. - * @returns {CKEDITOR.dialog.definition.button} The button definition matching id. - */ - getButton: function( id ) { - return getById( this.buttons, id ); - }, - - /** - * Adds a content definition object under this dialog definition. - * - * @param {CKEDITOR.dialog.definition.content} contentDefinition The - * content definition. - * @param {String} [nextSiblingId] The id of an existing content - * definition which the new content definition will be inserted - * before. Omit if the new content definition is to be inserted as - * the last item. - * @returns {CKEDITOR.dialog.definition.content} The inserted content definition. - */ - addContents: function( contentDefinition, nextSiblingId ) { - return addById( this.contents, contentDefinition, nextSiblingId ); - }, - - /** - * Adds a button definition object under this dialog definition. - * - * @param {CKEDITOR.dialog.definition.button} buttonDefinition The - * button definition. - * @param {String} [nextSiblingId] The id of an existing button - * definition which the new button definition will be inserted - * before. Omit if the new button definition is to be inserted as - * the last item. - * @returns {CKEDITOR.dialog.definition.button} The inserted button definition. - */ - addButton: function( buttonDefinition, nextSiblingId ) { - return addById( this.buttons, buttonDefinition, nextSiblingId ); - }, - - /** - * Removes a content definition from this dialog definition. - * - * @param {String} id The id of the content definition to be removed. - * @returns {CKEDITOR.dialog.definition.content} The removed content definition. - */ - removeContents: function( id ) { - removeById( this.contents, id ); - }, - - /** - * Removes a button definition from the dialog definition. - * - * @param {String} id The id of the button definition to be removed. - * @returns {CKEDITOR.dialog.definition.button} The removed button definition. - */ - removeButton: function( id ) { - removeById( this.buttons, id ); - } - }; - - /** - * This class is not really part of the API. It is the template of the - * objects representing content pages inside the - * CKEDITOR.dialog.definitionObject. - * - * CKEDITOR.on( 'dialogDefinition', function( evt ) { - * var definition = evt.data.definition; - * var content = definition.getContents( 'page1' ); - * content.remove( 'textInput1' ); - * // ... - * } ); - * - * @private - * @class CKEDITOR.dialog.definition.contentObject - * @constructor Creates a contentObject class instance. - */ - function contentObject( dialog, contentDefinition ) { - this._ = { - dialog: dialog - }; - - CKEDITOR.tools.extend( this, contentDefinition ); - } - - contentObject.prototype = { - /** - * Gets a UI element definition under the content definition. - * - * @param {String} id The id of the UI element definition. - * @returns {CKEDITOR.dialog.definition.uiElement} - */ - get: function( id ) { - return getById( this.elements, id, 'children' ); - }, - - /** - * Adds a UI element definition to the content definition. - * - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition The - * UI elemnet definition to be added. - * @param {String} nextSiblingId The id of an existing UI element - * definition which the new UI element definition will be inserted - * before. Omit if the new button definition is to be inserted as - * the last item. - * @returns {CKEDITOR.dialog.definition.uiElement} The element definition inserted. - */ - add: function( elementDefinition, nextSiblingId ) { - return addById( this.elements, elementDefinition, nextSiblingId, 'children' ); - }, - - /** - * Removes a UI element definition from the content definition. - * - * @param {String} id The id of the UI element definition to be removed. - * @returns {CKEDITOR.dialog.definition.uiElement} The element definition removed. - */ - remove: function( id ) { - removeById( this.elements, id, 'children' ); - } - }; - - function initDragAndDrop( dialog ) { - var lastCoords = null, - abstractDialogCoords = null, - editor = dialog.getParentEditor(), - magnetDistance = editor.config.dialog_magnetDistance, - margins = CKEDITOR.skin.margins || [ 0, 0, 0, 0 ]; - - if ( typeof magnetDistance == 'undefined' ) - magnetDistance = 20; - - function mouseMoveHandler( evt ) { - var dialogSize = dialog.getSize(), - viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(), - x = evt.data.$.screenX, - y = evt.data.$.screenY, - dx = x - lastCoords.x, - dy = y - lastCoords.y, - realX, realY; - - lastCoords = { x: x, y: y }; - abstractDialogCoords.x += dx; - abstractDialogCoords.y += dy; - - if ( abstractDialogCoords.x + margins[ 3 ] < magnetDistance ) - realX = -margins[ 3 ]; - else if ( abstractDialogCoords.x - margins[ 1 ] > viewPaneSize.width - dialogSize.width - magnetDistance ) - realX = viewPaneSize.width - dialogSize.width + ( editor.lang.dir == 'rtl' ? 0 : margins[ 1 ] ); - else - realX = abstractDialogCoords.x; - - if ( abstractDialogCoords.y + margins[ 0 ] < magnetDistance ) - realY = -margins[ 0 ]; - else if ( abstractDialogCoords.y - margins[ 2 ] > viewPaneSize.height - dialogSize.height - magnetDistance ) - realY = viewPaneSize.height - dialogSize.height + margins[ 2 ]; - else - realY = abstractDialogCoords.y; - - dialog.move( realX, realY, 1 ); - - evt.data.preventDefault(); - } - - function mouseUpHandler() { - CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler ); - CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler ); - - if ( CKEDITOR.env.ie6Compat ) { - var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); - coverDoc.removeListener( 'mousemove', mouseMoveHandler ); - coverDoc.removeListener( 'mouseup', mouseUpHandler ); - } - } - - dialog.parts.title.on( 'mousedown', function( evt ) { - lastCoords = { x: evt.data.$.screenX, y: evt.data.$.screenY }; - - CKEDITOR.document.on( 'mousemove', mouseMoveHandler ); - CKEDITOR.document.on( 'mouseup', mouseUpHandler ); - abstractDialogCoords = dialog.getPosition(); - - if ( CKEDITOR.env.ie6Compat ) { - var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); - coverDoc.on( 'mousemove', mouseMoveHandler ); - coverDoc.on( 'mouseup', mouseUpHandler ); - } - - evt.data.preventDefault(); - }, dialog ); - } - - function initResizeHandles( dialog ) { - var def = dialog.definition, - resizable = def.resizable; - - if ( resizable == CKEDITOR.DIALOG_RESIZE_NONE ) - return; - - var editor = dialog.getParentEditor(); - var wrapperWidth, wrapperHeight, viewSize, origin, startSize, dialogCover; - - var mouseDownFn = CKEDITOR.tools.addFunction( function( $event ) { - startSize = dialog.getSize(); - - var content = dialog.parts.contents, - iframeDialog = content.$.getElementsByTagName( 'iframe' ).length; - - // Shim to help capturing "mousemove" over iframe. - if ( iframeDialog ) { - dialogCover = CKEDITOR.dom.element.createFromHtml( '
' ); - content.append( dialogCover ); - } - - // Calculate the offset between content and chrome size. - wrapperHeight = startSize.height - dialog.parts.contents.getSize( 'height', !( CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.quirks ) ); - wrapperWidth = startSize.width - dialog.parts.contents.getSize( 'width', 1 ); - - origin = { x: $event.screenX, y: $event.screenY }; - - viewSize = CKEDITOR.document.getWindow().getViewPaneSize(); - - CKEDITOR.document.on( 'mousemove', mouseMoveHandler ); - CKEDITOR.document.on( 'mouseup', mouseUpHandler ); - - if ( CKEDITOR.env.ie6Compat ) { - var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); - coverDoc.on( 'mousemove', mouseMoveHandler ); - coverDoc.on( 'mouseup', mouseUpHandler ); - } - - $event.preventDefault && $event.preventDefault(); - } ); - - // Prepend the grip to the dialog. - dialog.on( 'load', function() { - var direction = ''; - if ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH ) - direction = ' cke_resizer_horizontal'; - else if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT ) - direction = ' cke_resizer_vertical'; - var resizer = CKEDITOR.dom.element.createFromHtml( - '' + - // BLACK LOWER RIGHT TRIANGLE (ltr) - // BLACK LOWER LEFT TRIANGLE (rtl) - ( editor.lang.dir == 'ltr' ? '\u25E2' : '\u25E3' ) + - '
' ); - dialog.parts.footer.append( resizer, 1 ); - } ); - editor.on( 'destroy', function() { - CKEDITOR.tools.removeFunction( mouseDownFn ); - } ); - - function mouseMoveHandler( evt ) { - var rtl = editor.lang.dir == 'rtl', - dx = ( evt.data.$.screenX - origin.x ) * ( rtl ? -1 : 1 ), - dy = evt.data.$.screenY - origin.y, - width = startSize.width, - height = startSize.height, - internalWidth = width + dx * ( dialog._.moved ? 1 : 2 ), - internalHeight = height + dy * ( dialog._.moved ? 1 : 2 ), - element = dialog._.element.getFirst(), - right = rtl && element.getComputedStyle( 'right' ), - position = dialog.getPosition(); - - if ( position.y + internalHeight > viewSize.height ) - internalHeight = viewSize.height - position.y; - - if ( ( rtl ? right : position.x ) + internalWidth > viewSize.width ) - internalWidth = viewSize.width - ( rtl ? right : position.x ); - - // Make sure the dialog will not be resized to the wrong side when it's in the leftmost position for RTL. - if ( ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) ) - width = Math.max( def.minWidth || 0, internalWidth - wrapperWidth ); - - if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) - height = Math.max( def.minHeight || 0, internalHeight - wrapperHeight ); - - dialog.resize( width, height ); - - if ( !dialog._.moved ) - dialog.layout(); - - evt.data.preventDefault(); - } - - function mouseUpHandler() { - CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler ); - CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler ); - - if ( dialogCover ) { - dialogCover.remove(); - dialogCover = null; - } - - if ( CKEDITOR.env.ie6Compat ) { - var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); - coverDoc.removeListener( 'mouseup', mouseUpHandler ); - coverDoc.removeListener( 'mousemove', mouseMoveHandler ); - } - } - } - - var resizeCover; - // Caching resuable covers and allowing only one cover - // on screen. - var covers = {}, - currentCover; - - function cancelEvent( ev ) { - ev.data.preventDefault( 1 ); - } - - function showCover( editor ) { - var win = CKEDITOR.document.getWindow(); - var config = editor.config, - backgroundColorStyle = config.dialog_backgroundCoverColor || 'white', - backgroundCoverOpacity = config.dialog_backgroundCoverOpacity, - baseFloatZIndex = config.baseFloatZIndex, - coverKey = CKEDITOR.tools.genKey( backgroundColorStyle, backgroundCoverOpacity, baseFloatZIndex ), - coverElement = covers[ coverKey ]; - - if ( !coverElement ) { - var html = [ - '
' - ]; - - if ( CKEDITOR.env.ie6Compat ) { - // Support for custom document.domain in IE. - var iframeHtml = ''; - - html.push( '' + - '' ); - } - - html.push( '
' ); - - coverElement = CKEDITOR.dom.element.createFromHtml( html.join( '' ) ); - coverElement.setOpacity( backgroundCoverOpacity !== undefined ? backgroundCoverOpacity : 0.5 ); - - coverElement.on( 'keydown', cancelEvent ); - coverElement.on( 'keypress', cancelEvent ); - coverElement.on( 'keyup', cancelEvent ); - - coverElement.appendTo( CKEDITOR.document.getBody() ); - covers[ coverKey ] = coverElement; - } else { - coverElement.show(); - } - - // Makes the dialog cover a focus holder as well. - editor.focusManager.add( coverElement ); - - currentCover = coverElement; - var resizeFunc = function() { - var size = win.getViewPaneSize(); - coverElement.setStyles( { - width: size.width + 'px', - height: size.height + 'px' - } ); - }; - - var scrollFunc = function() { - var pos = win.getScrollPosition(), - cursor = CKEDITOR.dialog._.currentTop; - coverElement.setStyles( { - left: pos.x + 'px', - top: pos.y + 'px' - } ); - - if ( cursor ) { - do { - var dialogPos = cursor.getPosition(); - cursor.move( dialogPos.x, dialogPos.y ); - } while ( ( cursor = cursor._.parentDialog ) ); - } - }; - - resizeCover = resizeFunc; - win.on( 'resize', resizeFunc ); - resizeFunc(); - // Using Safari/Mac, focus must be kept where it is (#7027) - if ( !( CKEDITOR.env.mac && CKEDITOR.env.webkit ) ) - coverElement.focus(); - - if ( CKEDITOR.env.ie6Compat ) { - // IE BUG: win.$.onscroll assignment doesn't work.. it must be window.onscroll. - // So we need to invent a really funny way to make it work. - var myScrollHandler = function() { - scrollFunc(); - arguments.callee.prevScrollHandler.apply( this, arguments ); - }; - win.$.setTimeout( function() { - myScrollHandler.prevScrollHandler = window.onscroll || - function() {}; - window.onscroll = myScrollHandler; - }, 0 ); - scrollFunc(); - } - } - - function hideCover( editor ) { - if ( !currentCover ) - return; - - editor.focusManager.remove( currentCover ); - var win = CKEDITOR.document.getWindow(); - currentCover.hide(); - win.removeListener( 'resize', resizeCover ); - - if ( CKEDITOR.env.ie6Compat ) { - win.$.setTimeout( function() { - var prevScrollHandler = window.onscroll && window.onscroll.prevScrollHandler; - window.onscroll = prevScrollHandler || null; - }, 0 ); - } - resizeCover = null; - } - - function removeCovers() { - for ( var coverId in covers ) - covers[ coverId ].remove(); - covers = {}; - } - - var accessKeyProcessors = {}; - - var accessKeyDownHandler = function( evt ) { - var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, - alt = evt.data.$.altKey, - shift = evt.data.$.shiftKey, - key = String.fromCharCode( evt.data.$.keyCode ), - keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; - - if ( !keyProcessor || !keyProcessor.length ) - return; - - keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; - keyProcessor.keydown && keyProcessor.keydown.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); - evt.data.preventDefault(); - }; - - var accessKeyUpHandler = function( evt ) { - var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, - alt = evt.data.$.altKey, - shift = evt.data.$.shiftKey, - key = String.fromCharCode( evt.data.$.keyCode ), - keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; - - if ( !keyProcessor || !keyProcessor.length ) - return; - - keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; - if ( keyProcessor.keyup ) { - keyProcessor.keyup.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); - evt.data.preventDefault(); - } - }; - - var registerAccessKey = function( uiElement, dialog, key, downFunc, upFunc ) { - var procList = accessKeyProcessors[ key ] || ( accessKeyProcessors[ key ] = [] ); - procList.push( { - uiElement: uiElement, - dialog: dialog, - key: key, - keyup: upFunc || uiElement.accessKeyUp, - keydown: downFunc || uiElement.accessKeyDown - } ); - }; - - var unregisterAccessKey = function( obj ) { - for ( var i in accessKeyProcessors ) { - var list = accessKeyProcessors[ i ]; - for ( var j = list.length - 1; j >= 0; j-- ) { - if ( list[ j ].dialog == obj || list[ j ].uiElement == obj ) - list.splice( j, 1 ); - } - if ( list.length === 0 ) - delete accessKeyProcessors[ i ]; - } - }; - - var tabAccessKeyUp = function( dialog, key ) { - if ( dialog._.accessKeyMap[ key ] ) - dialog.selectPage( dialog._.accessKeyMap[ key ] ); - }; - - var tabAccessKeyDown = function() {}; - - ( function() { - CKEDITOR.ui.dialog = { - /** - * The base class of all dialog UI elements. - * - * @class CKEDITOR.ui.dialog.uiElement - * @constructor Creates a uiElement class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition Element - * definition. - * - * Accepted fields: - * - * * `id` (Required) The id of the UI element. See {@link CKEDITOR.dialog#getContentElement}. - * * `type` (Required) The type of the UI element. The - * value to this field specifies which UI element class will be used to - * generate the final widget. - * * `title` (Optional) The popup tooltip for the UI - * element. - * * `hidden` (Optional) A flag that tells if the element - * should be initially visible. - * * `className` (Optional) Additional CSS class names - * to add to the UI element. Separated by space. - * * `style` (Optional) Additional CSS inline styles - * to add to the UI element. A semicolon (;) is required after the last - * style declaration. - * * `accessKey` (Optional) The alphanumeric access key - * for this element. Access keys are automatically prefixed by CTRL. - * * `on*` (Optional) Any UI element definition field that - * starts with `on` followed immediately by a capital letter and - * probably more letters is an event handler. Event handlers may be further - * divided into registered event handlers and DOM event handlers. Please - * refer to {@link CKEDITOR.ui.dialog.uiElement#registerEvents} and - * {@link CKEDITOR.ui.dialog.uiElement#eventProcessors} for more information. - * - * @param {Array} htmlList - * List of HTML code to be added to the dialog's content area. - * @param {Function/String} [nodeNameArg='div'] - * A function returning a string, or a simple string for the node name for - * the root DOM node. - * @param {Function/Object} [stylesArg={}] - * A function returning an object, or a simple object for CSS styles applied - * to the DOM node. - * @param {Function/Object} [attributesArg={}] - * A fucntion returning an object, or a simple object for attributes applied - * to the DOM node. - * @param {Function/String} [contentsArg=''] - * A function returning a string, or a simple string for the HTML code inside - * the root DOM node. Default is empty string. - */ - uiElement: function( dialog, elementDefinition, htmlList, nodeNameArg, stylesArg, attributesArg, contentsArg ) { - if ( arguments.length < 4 ) - return; - - var nodeName = ( nodeNameArg.call ? nodeNameArg( elementDefinition ) : nodeNameArg ) || 'div', - html = [ '<', nodeName, ' ' ], - styles = ( stylesArg && stylesArg.call ? stylesArg( elementDefinition ) : stylesArg ) || {}, - attributes = ( attributesArg && attributesArg.call ? attributesArg( elementDefinition ) : attributesArg ) || {}, - innerHTML = ( contentsArg && contentsArg.call ? contentsArg.call( this, dialog, elementDefinition ) : contentsArg ) || '', - domId = this.domId = attributes.id || CKEDITOR.tools.getNextId() + '_uiElement', - i; - - if ( elementDefinition.requiredContent && !dialog.getParentEditor().filter.check( elementDefinition.requiredContent ) ) { - styles.display = 'none'; - this.notAllowed = true; - } - - // Set the id, a unique id is required for getElement() to work. - attributes.id = domId; - - // Set the type and definition CSS class names. - var classes = {}; - if ( elementDefinition.type ) - classes[ 'cke_dialog_ui_' + elementDefinition.type ] = 1; - if ( elementDefinition.className ) - classes[ elementDefinition.className ] = 1; - if ( elementDefinition.disabled ) - classes.cke_disabled = 1; - - var attributeClasses = ( attributes[ 'class' ] && attributes[ 'class' ].split ) ? attributes[ 'class' ].split( ' ' ) : []; - for ( i = 0; i < attributeClasses.length; i++ ) { - if ( attributeClasses[ i ] ) - classes[ attributeClasses[ i ] ] = 1; - } - var finalClasses = []; - for ( i in classes ) - finalClasses.push( i ); - attributes[ 'class' ] = finalClasses.join( ' ' ); - - // Set the popup tooltop. - if ( elementDefinition.title ) - attributes.title = elementDefinition.title; - - // Write the inline CSS styles. - var styleStr = ( elementDefinition.style || '' ).split( ';' ); - - // Element alignment support. - if ( elementDefinition.align ) { - var align = elementDefinition.align; - styles[ 'margin-left' ] = align == 'left' ? 0 : 'auto'; - styles[ 'margin-right' ] = align == 'right' ? 0 : 'auto'; - } - - for ( i in styles ) - styleStr.push( i + ':' + styles[ i ] ); - if ( elementDefinition.hidden ) - styleStr.push( 'display:none' ); - for ( i = styleStr.length - 1; i >= 0; i-- ) { - if ( styleStr[ i ] === '' ) - styleStr.splice( i, 1 ); - } - if ( styleStr.length > 0 ) - attributes.style = ( attributes.style ? ( attributes.style + '; ' ) : '' ) + styleStr.join( '; ' ); - - // Write the attributes. - for ( i in attributes ) - html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[ i ] ) + '" ' ); - - // Write the content HTML. - html.push( '>', innerHTML, '' ); - - // Add contents to the parent HTML array. - htmlList.push( html.join( '' ) ); - - ( this._ || ( this._ = {} ) ).dialog = dialog; - - // Override isChanged if it is defined in element definition. - if ( typeof elementDefinition.isChanged == 'boolean' ) - this.isChanged = function() { - return elementDefinition.isChanged; - }; - if ( typeof elementDefinition.isChanged == 'function' ) - this.isChanged = elementDefinition.isChanged; - - // Overload 'get(set)Value' on definition. - if ( typeof elementDefinition.setValue == 'function' ) { - this.setValue = CKEDITOR.tools.override( this.setValue, function( org ) { - return function( val ) { - org.call( this, elementDefinition.setValue.call( this, val ) ); - }; - } ); - } - - if ( typeof elementDefinition.getValue == 'function' ) { - this.getValue = CKEDITOR.tools.override( this.getValue, function( org ) { - return function() { - return elementDefinition.getValue.call( this, org.call( this ) ); - }; - } ); - } - - // Add events. - CKEDITOR.event.implementOn( this ); - - this.registerEvents( elementDefinition ); - if ( this.accessKeyUp && this.accessKeyDown && elementDefinition.accessKey ) - registerAccessKey( this, dialog, 'CTRL+' + elementDefinition.accessKey ); - - var me = this; - dialog.on( 'load', function() { - var input = me.getInputElement(); - if ( input ) { - var focusClass = me.type in { 'checkbox': 1, 'ratio': 1 } && CKEDITOR.env.ie && CKEDITOR.env.version < 8 ? 'cke_dialog_ui_focused' : ''; - input.on( 'focus', function() { - dialog._.tabBarMode = false; - dialog._.hasFocus = true; - me.fire( 'focus' ); - focusClass && this.addClass( focusClass ); - - } ); - - input.on( 'blur', function() { - me.fire( 'blur' ); - focusClass && this.removeClass( focusClass ); - } ); - } - } ); - - // Completes this object with everything we have in the - // definition. - CKEDITOR.tools.extend( this, elementDefinition ); - - // Register the object as a tab focus if it can be included. - if ( this.keyboardFocusable ) { - this.tabIndex = elementDefinition.tabIndex || 0; - - this.focusIndex = dialog._.focusList.push( this ) - 1; - this.on( 'focus', function() { - dialog._.currentFocusIndex = me.focusIndex; - } ); - } - }, - - /** - * Horizontal layout box for dialog UI elements, auto-expends to available width of container. - * - * @class CKEDITOR.ui.dialog.hbox - * @extends CKEDITOR.ui.dialog.uiElement - * @constructor Creates a hbox class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. - * @param {Array} childObjList - * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. - * @param {Array} childHtmlList - * Array of HTML code that correspond to the HTML output of all the - * objects in childObjList. - * @param {Array} htmlList - * Array of HTML code that this element will output to. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `widths` (Optional) The widths of child cells. - * * `height` (Optional) The height of the layout. - * * `padding` (Optional) The padding width inside child cells. - * * `align` (Optional) The alignment of the whole layout. - */ - hbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { - if ( arguments.length < 4 ) - return; - - this._ || ( this._ = {} ); - - var children = this._.children = childObjList, - widths = elementDefinition && elementDefinition.widths || null, - height = elementDefinition && elementDefinition.height || null, - styles = {}, - i; - /** @ignore */ - var innerHTML = function() { - var html = [ '' ]; - for ( i = 0; i < childHtmlList.length; i++ ) { - var className = 'cke_dialog_ui_hbox_child', - styles = []; - if ( i === 0 ) { - className = 'cke_dialog_ui_hbox_first'; - } - if ( i == childHtmlList.length - 1 ) { - className = 'cke_dialog_ui_hbox_last'; - } - - html.push( ' 0 ) { - html.push( 'style="' + styles.join( '; ' ) + '" ' ); - } - html.push( '>', childHtmlList[ i ], '' ); - } - html.push( '' ); - return html.join( '' ); - }; - - var attribs = { role: 'presentation' }; - elementDefinition && elementDefinition.align && ( attribs.align = elementDefinition.align ); - - CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'hbox' }, htmlList, 'table', styles, attribs, innerHTML ); - }, - - /** - * Vertical layout box for dialog UI elements. - * - * @class CKEDITOR.ui.dialog.vbox - * @extends CKEDITOR.ui.dialog.hbox - * @constructor Creates a vbox class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. - * @param {Array} childObjList - * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. - * @param {Array} childHtmlList - * Array of HTML code that correspond to the HTML output of all the - * objects in childObjList. - * @param {Array} htmlList Array of HTML code that this element will output to. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `width` (Optional) The width of the layout. - * * `heights` (Optional) The heights of individual cells. - * * `align` (Optional) The alignment of the layout. - * * `padding` (Optional) The padding width inside child cells. - * * `expand` (Optional) Whether the layout should expand - * vertically to fill its container. - */ - vbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { - if ( arguments.length < 3 ) - return; - - this._ || ( this._ = {} ); - - var children = this._.children = childObjList, - width = elementDefinition && elementDefinition.width || null, - heights = elementDefinition && elementDefinition.heights || null; - /** @ignore */ - var innerHTML = function() { - var html = [ '' ); - for ( var i = 0; i < childHtmlList.length; i++ ) { - var styles = []; - html.push( '' ); - } - html.push( '
0 ) - html.push( 'style="', styles.join( '; ' ), '" ' ); - html.push( ' class="cke_dialog_ui_vbox_child">', childHtmlList[ i ], '
' ); - return html.join( '' ); - }; - CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'vbox' }, htmlList, 'div', null, { role: 'presentation' }, innerHTML ); - } - }; - } )(); - - /** @class CKEDITOR.ui.dialog.uiElement */ - CKEDITOR.ui.dialog.uiElement.prototype = { - /** - * Gets the root DOM element of this dialog UI object. - * - * uiElement.getElement().hide(); - * - * @returns {CKEDITOR.dom.element} Root DOM element of UI object. - */ - getElement: function() { - return CKEDITOR.document.getById( this.domId ); - }, - - /** - * Gets the DOM element that the user inputs values. - * - * This function is used by {@link #setValue}, {@link #getValue} and {@link #focus}. It should - * be overrided in child classes where the input element isn't the root - * element. - * - * var rawValue = textInput.getInputElement().$.value; - * - * @returns {CKEDITOR.dom.element} The element where the user input values. - */ - getInputElement: function() { - return this.getElement(); - }, - - /** - * Gets the parent dialog object containing this UI element. - * - * var dialog = uiElement.getDialog(); - * - * @returns {CKEDITOR.dialog} Parent dialog object. - */ - getDialog: function() { - return this._.dialog; - }, - - /** - * Sets the value of this dialog UI object. - * - * uiElement.setValue( 'Dingo' ); - * - * @chainable - * @param {Object} value The new value. - * @param {Boolean} noChangeEvent Internal commit, to supress `change` event on this element. - */ - setValue: function( value, noChangeEvent ) { - this.getInputElement().setValue( value ); - !noChangeEvent && this.fire( 'change', { value: value } ); - return this; - }, - - /** - * Gets the current value of this dialog UI object. - * - * var myValue = uiElement.getValue(); - * - * @returns {Object} The current value. - */ - getValue: function() { - return this.getInputElement().getValue(); - }, - - /** - * Tells whether the UI object's value has changed. - * - * if ( uiElement.isChanged() ) - * confirm( 'Value changed! Continue?' ); - * - * @returns {Boolean} `true` if changed, `false` if not changed. - */ - isChanged: function() { - // Override in input classes. - return false; - }, - - /** - * Selects the parent tab of this element. Usually called by focus() or overridden focus() methods. - * - * focus : function() { - * this.selectParentTab(); - * // do something else. - * } - * - * @chainable - */ - selectParentTab: function() { - var element = this.getInputElement(), - cursor = element, - tabId; - while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 ) { - - } - - // Some widgets don't have parent tabs (e.g. OK and Cancel buttons). - if ( !cursor ) - return this; - - tabId = cursor.getAttribute( 'name' ); - // Avoid duplicate select. - if ( this._.dialog._.currentTabId != tabId ) - this._.dialog.selectPage( tabId ); - return this; - }, - - /** - * Puts the focus to the UI object. Switches tabs if the UI object isn't in the active tab page. - * - * uiElement.focus(); - * - * @chainable - */ - focus: function() { - this.selectParentTab().getInputElement().focus(); - return this; - }, - - /** - * Registers the `on*` event handlers defined in the element definition. - * - * The default behavior of this function is: - * - * 1. If the on* event is defined in the class's eventProcesors list, - * then the registration is delegated to the corresponding function - * in the eventProcessors list. - * 2. If the on* event is not defined in the eventProcessors list, then - * register the event handler under the corresponding DOM event of - * the UI element's input DOM element (as defined by the return value - * of {@link #getInputElement}). - * - * This function is only called at UI element instantiation, but can - * be overridded in child classes if they require more flexibility. - * - * @chainable - * @param {CKEDITOR.dialog.definition.uiElement} definition The UI element - * definition. - */ - registerEvents: function( definition ) { - var regex = /^on([A-Z]\w+)/, - match; - - var registerDomEvent = function( uiElement, dialog, eventName, func ) { - dialog.on( 'load', function() { - uiElement.getInputElement().on( eventName, func, uiElement ); - } ); - }; - - for ( var i in definition ) { - if ( !( match = i.match( regex ) ) ) - continue; - if ( this.eventProcessors[ i ] ) - this.eventProcessors[ i ].call( this, this._.dialog, definition[ i ] ); - else - registerDomEvent( this, this._.dialog, match[ 1 ].toLowerCase(), definition[ i ] ); - } - - return this; - }, - - /** - * The event processor list used by - * {@link CKEDITOR.ui.dialog.uiElement#getInputElement} at UI element - * instantiation. The default list defines three `on*` events: - * - * 1. `onLoad` - Called when the element's parent dialog opens for the - * first time. - * 2. `onShow` - Called whenever the element's parent dialog opens. - * 3. `onHide` - Called whenever the element's parent dialog closes. - * - * // This connects the 'click' event in CKEDITOR.ui.dialog.button to onClick - * // handlers in the UI element's definitions. - * CKEDITOR.ui.dialog.button.eventProcessors = CKEDITOR.tools.extend( {}, - * CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, - * { onClick : function( dialog, func ) { this.on( 'click', func ); } }, - * true - * ); - * - * @property {Object} - */ - eventProcessors: { - onLoad: function( dialog, func ) { - dialog.on( 'load', func, this ); - }, - - onShow: function( dialog, func ) { - dialog.on( 'show', func, this ); - }, - - onHide: function( dialog, func ) { - dialog.on( 'hide', func, this ); - } - }, - - /** - * The default handler for a UI element's access key down event, which - * tries to put focus to the UI element. - * - * Can be overridded in child classes for more sophisticaed behavior. - * - * @param {CKEDITOR.dialog} dialog The parent dialog object. - * @param {String} key The key combination pressed. Since access keys - * are defined to always include the `CTRL` key, its value should always - * include a `'CTRL+'` prefix. - */ - accessKeyDown: function() { - this.focus(); - }, - - /** - * The default handler for a UI element's access key up event, which - * does nothing. - * - * Can be overridded in child classes for more sophisticated behavior. - * - * @param {CKEDITOR.dialog} dialog The parent dialog object. - * @param {String} key The key combination pressed. Since access keys - * are defined to always include the `CTRL` key, its value should always - * include a `'CTRL+'` prefix. - */ - accessKeyUp: function() {}, - - /** - * Disables a UI element. - */ - disable: function() { - var element = this.getElement(), - input = this.getInputElement(); - input.setAttribute( 'disabled', 'true' ); - element.addClass( 'cke_disabled' ); - }, - - /** - * Enables a UI element. - */ - enable: function() { - var element = this.getElement(), - input = this.getInputElement(); - input.removeAttribute( 'disabled' ); - element.removeClass( 'cke_disabled' ); - }, - - /** - * Determines whether an UI element is enabled or not. - * - * @returns {Boolean} Whether the UI element is enabled. - */ - isEnabled: function() { - return !this.getElement().hasClass( 'cke_disabled' ); - }, - - /** - * Determines whether an UI element is visible or not. - * - * @returns {Boolean} Whether the UI element is visible. - */ - isVisible: function() { - return this.getInputElement().isVisible(); - }, - - /** - * Determines whether an UI element is focus-able or not. - * Focus-able is defined as being both visible and enabled. - * - * @returns {Boolean} Whether the UI element can be focused. - */ - isFocusable: function() { - if ( !this.isEnabled() || !this.isVisible() ) - return false; - return true; - } - }; - - /** @class CKEDITOR.ui.dialog.hbox */ - CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { - /** - * Gets a child UI element inside this container. - * - * var checkbox = hbox.getChild( [0,1] ); - * checkbox.setValue( true ); - * - * @param {Array/Number} indices An array or a single number to indicate the child's - * position in the container's descendant tree. Omit to get all the children in an array. - * @returns {Array/CKEDITOR.ui.dialog.uiElement} Array of all UI elements in the container - * if no argument given, or the specified UI element if indices is given. - */ - getChild: function( indices ) { - // If no arguments, return a clone of the children array. - if ( arguments.length < 1 ) - return this._.children.concat(); - - // If indices isn't array, make it one. - if ( !indices.splice ) - indices = [ indices ]; - - // Retrieve the child element according to tree position. - if ( indices.length < 2 ) - return this._.children[ indices[ 0 ] ]; - else - return ( this._.children[ indices[ 0 ] ] && this._.children[ indices[ 0 ] ].getChild ) ? this._.children[ indices[ 0 ] ].getChild( indices.slice( 1, indices.length ) ) : null; - } - }, true ); - - CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox(); - - ( function() { - var commonBuilder = { - build: function( dialog, elementDefinition, output ) { - var children = elementDefinition.children, - child, - childHtmlList = [], - childObjList = []; - for ( var i = 0; - ( i < children.length && ( child = children[ i ] ) ); i++ ) { - var childHtml = []; - childHtmlList.push( childHtml ); - childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) ); - } - return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition ); - } - }; - - CKEDITOR.dialog.addUIElement( 'hbox', commonBuilder ); - CKEDITOR.dialog.addUIElement( 'vbox', commonBuilder ); - } )(); - - /** - * Generic dialog command. It opens a specific dialog when executed. - * - * // Register the "link" command, which opens the "link" dialog. - * editor.addCommand( 'link', new CKEDITOR.dialogCommand( 'link' ) ); - * - * @class - * @constructor Creates a dialogCommand class instance. - * @extends CKEDITOR.commandDefinition - * @param {String} dialogName The name of the dialog to open when executing - * this command. - * @param {Object} [ext] Additional command definition's properties. - */ - CKEDITOR.dialogCommand = function( dialogName, ext ) { - this.dialogName = dialogName; - CKEDITOR.tools.extend( this, ext, true ); - }; - - CKEDITOR.dialogCommand.prototype = { - exec: function( editor ) { - editor.openDialog( this.dialogName ); - }, - - // Dialog commands just open a dialog ui, thus require no undo logic, - // undo support should dedicate to specific dialog implementation. - canUndo: false, - - editorFocus: 1 - }; - - ( function() { - var notEmptyRegex = /^([a]|[^a])+$/, - integerRegex = /^\d*$/, - numberRegex = /^\d*(?:\.\d+)?$/, - htmlLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/, - cssLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i, - inlineStyleRegex = /^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/; - - CKEDITOR.VALIDATE_OR = 1; - CKEDITOR.VALIDATE_AND = 2; - - CKEDITOR.dialog.validate = { - functions: function() { - var args = arguments; - return function() { - /** - * It's important for validate functions to be able to accept the value - * as argument in addition to this.getValue(), so that it is possible to - * combine validate functions together to make more sophisticated - * validators. - */ - var value = this && this.getValue ? this.getValue() : args[ 0 ]; - - var msg, - relation = CKEDITOR.VALIDATE_AND, - functions = [], - i; - - for ( i = 0; i < args.length; i++ ) { - if ( typeof args[ i ] == 'function' ) - functions.push( args[ i ] ); - else - break; - } - - if ( i < args.length && typeof args[ i ] == 'string' ) { - msg = args[ i ]; - i++; - } - - if ( i < args.length && typeof args[ i ] == 'number' ) - relation = args[ i ]; - - var passed = ( relation == CKEDITOR.VALIDATE_AND ? true : false ); - for ( i = 0; i < functions.length; i++ ) { - if ( relation == CKEDITOR.VALIDATE_AND ) - passed = passed && functions[ i ]( value ); - else - passed = passed || functions[ i ]( value ); - } - - return !passed ? msg : true; - }; - }, - - regex: function( regex, msg ) { - /* - * Can be greatly shortened by deriving from functions validator if code size - * turns out to be more important than performance. - */ - return function() { - var value = this && this.getValue ? this.getValue() : arguments[ 0 ]; - return !regex.test( value ) ? msg : true; - }; - }, - - notEmpty: function( msg ) { - return this.regex( notEmptyRegex, msg ); - }, - - integer: function( msg ) { - return this.regex( integerRegex, msg ); - }, - - 'number': function( msg ) { - return this.regex( numberRegex, msg ); - }, - - 'cssLength': function( msg ) { - return this.functions( function( val ) { - return cssLengthRegex.test( CKEDITOR.tools.trim( val ) ); - }, msg ); - }, - - 'htmlLength': function( msg ) { - return this.functions( function( val ) { - return htmlLengthRegex.test( CKEDITOR.tools.trim( val ) ); - }, msg ); - }, - - 'inlineStyle': function( msg ) { - return this.functions( function( val ) { - return inlineStyleRegex.test( CKEDITOR.tools.trim( val ) ); - }, msg ); - }, - - equals: function( value, msg ) { - return this.functions( function( val ) { - return val == value; - }, msg ); - }, - - notEqual: function( value, msg ) { - return this.functions( function( val ) { - return val != value; - }, msg ); - } - }; - - CKEDITOR.on( 'instanceDestroyed', function( evt ) { - // Remove dialog cover on last instance destroy. - if ( CKEDITOR.tools.isEmpty( CKEDITOR.instances ) ) { - var currentTopDialog; - while ( ( currentTopDialog = CKEDITOR.dialog._.currentTop ) ) - currentTopDialog.hide(); - removeCovers(); - } - - var dialogs = evt.editor._.storedDialogs; - for ( var name in dialogs ) - dialogs[ name ].destroy(); - - } ); - - } )(); - - // Extend the CKEDITOR.editor class with dialog specific functions. - CKEDITOR.tools.extend( CKEDITOR.editor.prototype, { - /** - * Loads and opens a registered dialog. - * - * CKEDITOR.instances.editor1.openDialog( 'smiley' ); - * - * @member CKEDITOR.editor - * @param {String} dialogName The registered name of the dialog. - * @param {Function} callback The function to be invoked after dialog instance created. - * @returns {CKEDITOR.dialog} The dialog object corresponding to the dialog displayed. - * `null` if the dialog name is not registered. - * @see CKEDITOR.dialog#add - */ - openDialog: function( dialogName, callback ) { - var dialog = null, dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; - - if ( CKEDITOR.dialog._.currentTop === null ) - showCover( this ); - - // If the dialogDefinition is already loaded, open it immediately. - if ( typeof dialogDefinitions == 'function' ) { - var storedDialogs = this._.storedDialogs || ( this._.storedDialogs = {} ); - - dialog = storedDialogs[ dialogName ] || ( storedDialogs[ dialogName ] = new CKEDITOR.dialog( this, dialogName ) ); - - callback && callback.call( dialog, dialog ); - dialog.show(); - - } else if ( dialogDefinitions == 'failed' ) { - hideCover( this ); - throw new Error( '[CKEDITOR.dialog.openDialog] Dialog "' + dialogName + '" failed when loading definition.' ); - } else if ( typeof dialogDefinitions == 'string' ) { - - CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), - function() { - var dialogDefinition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; - // In case of plugin error, mark it as loading failed. - if ( typeof dialogDefinition != 'function' ) - CKEDITOR.dialog._.dialogDefinitions[ dialogName ] = 'failed'; - - this.openDialog( dialogName, callback ); - }, this, 0, 1 ); - } - - CKEDITOR.skin.loadPart( 'dialog' ); - - return dialog; - } - } ); -} )(); - -CKEDITOR.plugins.add( 'dialog', { - requires: 'dialogui', - init: function( editor ) { - editor.on( 'doubleclick', function( evt ) { - if ( evt.data.dialog ) - editor.openDialog( evt.data.dialog ); - }, null, null, 999 ); - } -} ); - -// Dialog related configurations. - -/** - * The color of the dialog background cover. It should be a valid CSS color string. - * - * config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; - * - * @cfg {String} [dialog_backgroundCoverColor='white'] - * @member CKEDITOR.config - */ - -/** - * The opacity of the dialog background cover. It should be a number within the - * range `[0.0, 1.0]`. - * - * config.dialog_backgroundCoverOpacity = 0.7; - * - * @cfg {Number} [dialog_backgroundCoverOpacity=0.5] - * @member CKEDITOR.config - */ - -/** - * If the dialog has more than one tab, put focus into the first tab as soon as dialog is opened. - * - * config.dialog_startupFocusTab = true; - * - * @cfg {Boolean} [dialog_startupFocusTab=false] - * @member CKEDITOR.config - */ - -/** - * The distance of magnetic borders used in moving and resizing dialogs, - * measured in pixels. - * - * config.dialog_magnetDistance = 30; - * - * @cfg {Number} [dialog_magnetDistance=20] - * @member CKEDITOR.config - */ - -/** - * The guideline to follow when generating the dialog buttons. There are 3 possible options: - * - * * `'OS'` - the buttons will be displayed in the default order of the user's OS; - * * `'ltr'` - for Left-To-Right order; - * * `'rtl'` - for Right-To-Left order. - * - * Example: - * - * config.dialog_buttonsOrder = 'rtl'; - * - * @since 3.5 - * @cfg {String} [dialog_buttonsOrder='OS'] - * @member CKEDITOR.config - */ - -/** - * The dialog contents to removed. It's a string composed by dialog name and tab name with a colon between them. - * - * Separate each pair with semicolon (see example). - * - * **Note:** All names are case-sensitive. - * - * **Note:** Be cautious when specifying dialog tabs that are mandatory, - * like `'info'`, dialog functionality might be broken because of this! - * - * config.removeDialogTabs = 'flash:advanced;image:Link'; - * - * @since 3.5 - * @cfg {String} [removeDialogTabs=''] - * @member CKEDITOR.config - */ - -/** - * Tells if user should not be asked to confirm close, if any dialog field was modified. - * By default it is set to `false` meaning that the confirmation dialog will be shown. - * - * config.dialog_noConfirmCancel = true; - * - * @since 4.3 - * @cfg {Boolean} [dialog_noConfirmCancel=false] - * @member CKEDITOR.config - */ - -/** - * Fired when a dialog definition is about to be used to create a dialog into - * an editor instance. This event makes it possible to customize the definition - * before creating it. - * - * Note that this event is called only the first time a specific dialog is - * opened. Successive openings will use the cached dialog, and this event will - * not get fired. - * - * @event dialogDefinition - * @member CKEDITOR - * @param {CKEDITOR.dialog.definition} data The dialog defination that - * is being loaded. - * @param {CKEDITOR.editor} editor The editor instance that will use the dialog. - */ - -/** - * Fired when a tab is going to be selected in a dialog. - * - * @event selectPage - * @member CKEDITOR.dialog - * @param data - * @param {String} data.page The id of the page that it's gonna be selected. - * @param {String} data.currentPage The id of the current page. - */ - -/** - * Fired when the user tries to dismiss a dialog. - * - * @event cancel - * @member CKEDITOR.dialog - * @param data - * @param {Boolean} data.hide Whether the event should proceed or not. - */ - -/** - * Fired when the user tries to confirm a dialog. - * - * @event ok - * @member CKEDITOR.dialog - * @param data - * @param {Boolean} data.hide Whether the event should proceed or not. - */ - -/** - * Fired when a dialog is shown. - * - * @event show - * @member CKEDITOR.dialog - */ - -/** - * Fired when a dialog is shown. - * - * @event dialogShow - * @member CKEDITOR.editor - * @param {CKEDITOR.editor} editor This editor instance. - * @param {CKEDITOR.dialog} data The opened dialog instance. - */ - -/** - * Fired when a dialog is hidden. - * - * @event hide - * @member CKEDITOR.dialog - */ - -/** - * Fired when a dialog is hidden. - * - * @event dialogHide - * @member CKEDITOR.editor - * @param {CKEDITOR.editor} editor This editor instance. - * @param {CKEDITOR.dialog} data The hidden dialog instance. - */ - -/** - * Fired when a dialog is being resized. The event is fired on - * both the {@link CKEDITOR.dialog} object and the dialog instance - * since 3.5.3, previously it's available only in the global object. - * - * @static - * @event resize - * @member CKEDITOR.dialog - * @param data - * @param {CKEDITOR.dialog} data.dialog The dialog being resized (if - * it's fired on the dialog itself, this parameter isn't sent). - * @param {String} data.skin The skin name. - * @param {Number} data.width The new width. - * @param {Number} data.height The new height. - */ - -/** - * Fired when a dialog is being resized. The event is fired on - * both the {@link CKEDITOR.dialog} object and the dialog instance - * since 3.5.3, previously it's available only in the global object. - * - * @since 3.5 - * @event resize - * @member CKEDITOR.dialog - * @param data - * @param {Number} data.width The new width. - * @param {Number} data.height The new height. - */ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/samples/assets/my_dialog.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/samples/assets/my_dialog.js deleted file mode 100644 index 9fdcc2c641..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/samples/assets/my_dialog.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -CKEDITOR.dialog.add( 'myDialog', function() { - return { - title: 'My Dialog', - minWidth: 400, - minHeight: 200, - contents: [ - { - id: 'tab1', - label: 'First Tab', - title: 'First Tab', - elements: [ - { - id: 'input1', - type: 'text', - label: 'Text Field' - }, - { - id: 'select1', - type: 'select', - label: 'Select Field', - items: [ - [ 'option1', 'value1' ], - [ 'option2', 'value2' ] - ] - } - ] - }, - { - id: 'tab2', - label: 'Second Tab', - title: 'Second Tab', - elements: [ - { - id: 'button1', - type: 'button', - label: 'Button Field' - } - ] - } - ] - }; -} ); - -// %LEAVE_UNMINIFIED% %REMOVE_LINE% diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/samples/dialog.html b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/samples/dialog.html deleted file mode 100644 index a85c56645b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialog/samples/dialog.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - Using API to Customize Dialog Windows — CKEditor Sample - - - - - - - - - -

- CKEditor Samples » Using CKEditor Dialog API -

-
-

- This sample shows how to use the - CKEditor Dialog API - to customize CKEditor dialog windows without changing the original editor code. - The following customizations are being done in the example below: -

-

- For details on how to create this setup check the source code of this sample page. -

-
-

A custom dialog is added to the editors using the pluginsLoaded event, from an external dialog definition file:

-
    -
  1. Creating a custom dialog window – "My Dialog" dialog window opened with the "My Dialog" toolbar button.
  2. -
  3. Creating a custom button – Add button to open the dialog with "My Dialog" toolbar button.
  4. -
- - -

The below editor modify the dialog definition of the above added dialog using the dialogDefinition event:

-
    -
  1. Adding dialog tab – Add new tab "My Tab" to dialog window.
  2. -
  3. Removing a dialog window tab – Remove "Second Tab" page from the dialog window.
  4. -
  5. Adding dialog window fields – Add "My Custom Field" to the dialog window.
  6. -
  7. Removing dialog window field – Remove "Select Field" selection field from the dialog window.
  8. -
  9. Setting default values for dialog window fields – Set default value of "Text Field" text field.
  10. -
  11. Setup initial focus for dialog window – Put initial focus on "My Custom Field" text field.
  12. -
- - - - - diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialogui/plugin.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialogui/plugin.js deleted file mode 100644 index e6aea145ee..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/dialogui/plugin.js +++ /dev/null @@ -1,1444 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -/** - * @fileOverview The Dialog User Interface plugin. - */ - -CKEDITOR.plugins.add( 'dialogui', { - onLoad: function() { - - var initPrivateObject = function( elementDefinition ) { - this._ || ( this._ = {} ); - this._[ 'default' ] = this._.initValue = elementDefinition[ 'default' ] || ''; - this._.required = elementDefinition.required || false; - var args = [ this._ ]; - for ( var i = 1; i < arguments.length; i++ ) - args.push( arguments[ i ] ); - args.push( true ); - CKEDITOR.tools.extend.apply( CKEDITOR.tools, args ); - return this._; - }, - textBuilder = { - build: function( dialog, elementDefinition, output ) { - return new CKEDITOR.ui.dialog.textInput( dialog, elementDefinition, output ); - } - }, - commonBuilder = { - build: function( dialog, elementDefinition, output ) { - return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, elementDefinition, output ); - } - }, - containerBuilder = { - build: function( dialog, elementDefinition, output ) { - var children = elementDefinition.children, - child, - childHtmlList = [], - childObjList = []; - for ( var i = 0; - ( i < children.length && ( child = children[ i ] ) ); i++ ) { - var childHtml = []; - childHtmlList.push( childHtml ); - childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) ); - } - return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition ); - } - }, - commonPrototype = { - isChanged: function() { - return this.getValue() != this.getInitValue(); - }, - - reset: function( noChangeEvent ) { - this.setValue( this.getInitValue(), noChangeEvent ); - }, - - setInitValue: function() { - this._.initValue = this.getValue(); - }, - - resetInitValue: function() { - this._.initValue = this._[ 'default' ]; - }, - - getInitValue: function() { - return this._.initValue; - } - }, - commonEventProcessors = CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { - onChange: function( dialog, func ) { - if ( !this._.domOnChangeRegistered ) { - dialog.on( 'load', function() { - this.getInputElement().on( 'change', function() { - // Make sure 'onchange' doesn't get fired after dialog closed. (#5719) - if ( !dialog.parts.dialog.isVisible() ) - return; - - this.fire( 'change', { value: this.getValue() } ); - }, this ); - }, this ); - this._.domOnChangeRegistered = true; - } - - this.on( 'change', func ); - } - }, true ), - eventRegex = /^on([A-Z]\w+)/, - cleanInnerDefinition = function( def ) { - // An inner UI element should not have the parent's type, title or events. - for ( var i in def ) { - if ( eventRegex.test( i ) || i == 'title' || i == 'type' ) - delete def[ i ]; - } - return def; - }; - - CKEDITOR.tools.extend( CKEDITOR.ui.dialog, { - /** - * Base class for all dialog window elements with a textual label on the left. - * - * @class CKEDITOR.ui.dialog.labeledElement - * @extends CKEDITOR.ui.dialog.uiElement - * @constructor Creates a labeledElement class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `label` (Required) The label string. - * * `labelLayout` (Optional) Put 'horizontal' here if the - * label element is to be laid out horizontally. Otherwise a vertical - * layout will be used. - * * `widths` (Optional) This applies only to horizontal - * layouts — a two-element array of lengths to specify the widths of the - * label and the content element. - * * `role` (Optional) Value for the `role` attribute. - * * `includeLabel` (Optional) If set to `true`, the `aria-labelledby` attribute - * will be included. - * - * @param {Array} htmlList The list of HTML code to output to. - * @param {Function} contentHtml - * A function returning the HTML code string to be added inside the content - * cell. - */ - labeledElement: function( dialog, elementDefinition, htmlList, contentHtml ) { - if ( arguments.length < 4 ) - return; - - var _ = initPrivateObject.call( this, elementDefinition ); - _.labelId = CKEDITOR.tools.getNextId() + '_label'; - this._.children = []; - - var innerHTML = function() { - var html = [], - requiredClass = elementDefinition.required ? ' cke_required' : ''; - if ( elementDefinition.labelLayout != 'horizontal' ) { - html.push( - '', - '' ); - } else { - var hboxDefinition = { - type: 'hbox', - widths: elementDefinition.widths, - padding: 0, - children: [ { - type: 'html', - html: '' - }, - { - type: 'html', - html: '' + - contentHtml.call( this, dialog, elementDefinition ) + - '' - } ] - }; - CKEDITOR.dialog._.uiElementBuilders.hbox.build( dialog, hboxDefinition, html ); - } - return html.join( '' ); - }; - var attributes = { role: elementDefinition.role || 'presentation' }; - - if ( elementDefinition.includeLabel ) - attributes[ 'aria-labelledby' ] = _.labelId; - - CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, attributes, innerHTML ); - }, - - /** - * A text input with a label. This UI element class represents both the - * single-line text inputs and password inputs in dialog boxes. - * - * @class CKEDITOR.ui.dialog.textInput - * @extends CKEDITOR.ui.dialog.labeledElement - * @constructor Creates a textInput class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `default` (Optional) The default value. - * * `validate` (Optional) The validation function. - * * `maxLength` (Optional) The maximum length of text box contents. - * * `size` (Optional) The size of the text box. This is - * usually overridden by the size defined by the skin, though. - * - * @param {Array} htmlList List of HTML code to output to. - */ - textInput: function( dialog, elementDefinition, htmlList ) { - if ( arguments.length < 3 ) - return; - - initPrivateObject.call( this, elementDefinition ); - var domId = this._.inputId = CKEDITOR.tools.getNextId() + '_textInput', - attributes = { 'class': 'cke_dialog_ui_input_' + elementDefinition.type, id: domId, type: elementDefinition.type }; - - // Set the validator, if any. - if ( elementDefinition.validate ) - this.validate = elementDefinition.validate; - - // Set the max length and size. - if ( elementDefinition.maxLength ) - attributes.maxlength = elementDefinition.maxLength; - if ( elementDefinition.size ) - attributes.size = elementDefinition.size; - - if ( elementDefinition.inputStyle ) - attributes.style = elementDefinition.inputStyle; - - // If user presses Enter in a text box, it implies clicking OK for the dialog. - var me = this, - keyPressedOnMe = false; - dialog.on( 'load', function() { - me.getInputElement().on( 'keydown', function( evt ) { - if ( evt.data.getKeystroke() == 13 ) - keyPressedOnMe = true; - } ); - - // Lower the priority this 'keyup' since 'ok' will close the dialog.(#3749) - me.getInputElement().on( 'keyup', function( evt ) { - if ( evt.data.getKeystroke() == 13 && keyPressedOnMe ) { - dialog.getButton( 'ok' ) && setTimeout( function() { - dialog.getButton( 'ok' ).click(); - }, 0 ); - keyPressedOnMe = false; - } - }, null, null, 1000 ); - } ); - - var innerHTML = function() { - // IE BUG: Text input fields in IE at 100% would exceed a or inline - // container's width, so need to wrap it inside a
. - var html = [ '' ); - return html.join( '' ); - }; - CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); - }, - - /** - * A text area with a label at the top or on the left. - * - * @class CKEDITOR.ui.dialog.textarea - * @extends CKEDITOR.ui.dialog.labeledElement - * @constructor Creates a textarea class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * - * The element definition. Accepted fields: - * - * * `rows` (Optional) The number of rows displayed. - * Defaults to 5 if not defined. - * * `cols` (Optional) The number of cols displayed. - * Defaults to 20 if not defined. Usually overridden by skins. - * * `default` (Optional) The default value. - * * `validate` (Optional) The validation function. - * - * @param {Array} htmlList List of HTML code to output to. - */ - textarea: function( dialog, elementDefinition, htmlList ) { - if ( arguments.length < 3 ) - return; - - initPrivateObject.call( this, elementDefinition ); - var me = this, - domId = this._.inputId = CKEDITOR.tools.getNextId() + '_textarea', - attributes = {}; - - if ( elementDefinition.validate ) - this.validate = elementDefinition.validate; - - // Generates the essential attributes for the textarea tag. - attributes.rows = elementDefinition.rows || 5; - attributes.cols = elementDefinition.cols || 20; - - attributes[ 'class' ] = 'cke_dialog_ui_input_textarea ' + ( elementDefinition[ 'class' ] || '' ); - - if ( typeof elementDefinition.inputStyle != 'undefined' ) - attributes.style = elementDefinition.inputStyle; - - if ( elementDefinition.dir ) - attributes.dir = elementDefinition.dir; - - var innerHTML = function() { - attributes[ 'aria-labelledby' ] = this._.labelId; - this._.required && ( attributes[ 'aria-required' ] = this._.required ); - var html = [ '' ); - return html.join( '' ); - }; - CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); - }, - - /** - * A single checkbox with a label on the right. - * - * @class CKEDITOR.ui.dialog.checkbox - * @extends CKEDITOR.ui.dialog.uiElement - * @constructor Creates a checkbox class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `checked` (Optional) Whether the checkbox is checked - * on instantiation. Defaults to `false`. - * * `validate` (Optional) The validation function. - * * `label` (Optional) The checkbox label. - * - * @param {Array} htmlList List of HTML code to output to. - */ - checkbox: function( dialog, elementDefinition, htmlList ) { - if ( arguments.length < 3 ) - return; - - var _ = initPrivateObject.call( this, elementDefinition, { 'default': !!elementDefinition[ 'default' ] } ); - - if ( elementDefinition.validate ) - this.validate = elementDefinition.validate; - - var innerHTML = function() { - var myDefinition = CKEDITOR.tools.extend( - {}, - elementDefinition, - { - id: elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextId() + '_checkbox' - }, - true - ), - html = []; - - var labelId = CKEDITOR.tools.getNextId() + '_label'; - var attributes = { 'class': 'cke_dialog_ui_checkbox_input', type: 'checkbox', 'aria-labelledby': labelId }; - cleanInnerDefinition( myDefinition ); - if ( elementDefinition[ 'default' ] ) - attributes.checked = 'checked'; - - if ( typeof myDefinition.inputStyle != 'undefined' ) - myDefinition.style = myDefinition.inputStyle; - - _.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes ); - html.push( - ' ' - ); - return html.join( '' ); - }; - - CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'span', null, null, innerHTML ); - }, - - /** - * A group of radio buttons. - * - * @class CKEDITOR.ui.dialog.radio - * @extends CKEDITOR.ui.dialog.labeledElement - * @constructor Creates a radio class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `default` (Required) The default value. - * * `validate` (Optional) The validation function. - * * `items` (Required) An array of options. Each option - * is a one- or two-item array of format `[ 'Description', 'Value' ]`. If `'Value'` - * is missing, then the value would be assumed to be the same as the description. - * - * @param {Array} htmlList List of HTML code to output to. - */ - radio: function( dialog, elementDefinition, htmlList ) { - if ( arguments.length < 3 ) - return; - - initPrivateObject.call( this, elementDefinition ); - - if ( !this._[ 'default' ] ) - this._[ 'default' ] = this._.initValue = elementDefinition.items[ 0 ][ 1 ]; - - if ( elementDefinition.validate ) - this.validate = elementDefinition.validate; - - var children = [], - me = this; - - var innerHTML = function() { - var inputHtmlList = [], - html = [], - commonName = ( elementDefinition.id ? elementDefinition.id : CKEDITOR.tools.getNextId() ) + '_radio'; - - for ( var i = 0; i < elementDefinition.items.length; i++ ) { - var item = elementDefinition.items[ i ], - title = item[ 2 ] !== undefined ? item[ 2 ] : item[ 0 ], - value = item[ 1 ] !== undefined ? item[ 1 ] : item[ 0 ], - inputId = CKEDITOR.tools.getNextId() + '_radio_input', - labelId = inputId + '_label', - - inputDefinition = CKEDITOR.tools.extend( {}, elementDefinition, { - id: inputId, - title: null, - type: null - }, true ), - - labelDefinition = CKEDITOR.tools.extend( {}, inputDefinition, { - title: title - }, true ), - - inputAttributes = { - type: 'radio', - 'class': 'cke_dialog_ui_radio_input', - name: commonName, - value: value, - 'aria-labelledby': labelId - }, - - inputHtml = []; - - if ( me._[ 'default' ] == value ) - inputAttributes.checked = 'checked'; - - cleanInnerDefinition( inputDefinition ); - cleanInnerDefinition( labelDefinition ); - - if ( typeof inputDefinition.inputStyle != 'undefined' ) - inputDefinition.style = inputDefinition.inputStyle; - - // Make inputs of radio type focusable (#10866). - inputDefinition.keyboardFocusable = true; - - children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) ); - - inputHtml.push( ' ' ); - - new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtml, 'label', null, { - id: labelId, - 'for': inputAttributes.id - }, item[ 0 ] ); - - inputHtmlList.push( inputHtml.join( '' ) ); - } - - new CKEDITOR.ui.dialog.hbox( dialog, children, inputHtmlList, html ); - - return html.join( '' ); - }; - - // Adding a role="radiogroup" to definition used for wrapper. - elementDefinition.role = 'radiogroup'; - elementDefinition.includeLabel = true; - - CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); - this._.children = children; - }, - - /** - * A button with a label inside. - * - * @class CKEDITOR.ui.dialog.button - * @extends CKEDITOR.ui.dialog.uiElement - * @constructor Creates a button class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `label` (Required) The button label. - * * `disabled` (Optional) Set to `true` if you want the - * button to appear in the disabled state. - * - * @param {Array} htmlList List of HTML code to output to. - */ - button: function( dialog, elementDefinition, htmlList ) { - if ( !arguments.length ) - return; - - if ( typeof elementDefinition == 'function' ) - elementDefinition = elementDefinition( dialog.getParentEditor() ); - - initPrivateObject.call( this, elementDefinition, { disabled: elementDefinition.disabled || false } ); - - // Add OnClick event to this input. - CKEDITOR.event.implementOn( this ); - - var me = this; - - // Register an event handler for processing button clicks. - dialog.on( 'load', function() { - var element = this.getElement(); - - ( function() { - element.on( 'click', function( evt ) { - me.click(); - // #9958 - evt.data.preventDefault(); - } ); - - element.on( 'keydown', function( evt ) { - if ( evt.data.getKeystroke() in { 32: 1 } ) { - me.click(); - evt.data.preventDefault(); - } - } ); - } )(); - - element.unselectable(); - }, this ); - - var outerDefinition = CKEDITOR.tools.extend( {}, elementDefinition ); - delete outerDefinition.style; - - var labelId = CKEDITOR.tools.getNextId() + '_label'; - CKEDITOR.ui.dialog.uiElement.call( this, dialog, outerDefinition, htmlList, 'a', null, { - style: elementDefinition.style, - href: 'javascript:void(0)', // jshint ignore:line - title: elementDefinition.label, - hidefocus: 'true', - 'class': elementDefinition[ 'class' ], - role: 'button', - 'aria-labelledby': labelId - }, '' + - CKEDITOR.tools.htmlEncode( elementDefinition.label ) + - '' ); - }, - - /** - * A select box. - * - * @class CKEDITOR.ui.dialog.select - * @extends CKEDITOR.ui.dialog.uiElement - * @constructor Creates a button class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `default` (Required) The default value. - * * `validate` (Optional) The validation function. - * * `items` (Required) An array of options. Each option - * is a one- or two-item array of format `[ 'Description', 'Value' ]`. If `'Value'` - * is missing, then the value would be assumed to be the same as the - * description. - * * `multiple` (Optional) Set this to `true` if you would like - * to have a multiple-choice select box. - * * `size` (Optional) The number of items to display in - * the select box. - * - * @param {Array} htmlList List of HTML code to output to. - */ - select: function( dialog, elementDefinition, htmlList ) { - if ( arguments.length < 3 ) - return; - - var _ = initPrivateObject.call( this, elementDefinition ); - - if ( elementDefinition.validate ) - this.validate = elementDefinition.validate; - - _.inputId = CKEDITOR.tools.getNextId() + '_select'; - - var innerHTML = function() { - var myDefinition = CKEDITOR.tools.extend( - {}, - elementDefinition, - { - id: ( elementDefinition.id ? elementDefinition.id + '_select' : CKEDITOR.tools.getNextId() + '_select' ) - }, - true - ), - html = [], - innerHTML = [], - attributes = { 'id': _.inputId, 'class': 'cke_dialog_ui_input_select', 'aria-labelledby': this._.labelId }; - - html.push( '' ); - - return html.join( '' ); - }; - - CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); - }, - - /** - * A file upload input. - * - * @class CKEDITOR.ui.dialog.file - * @extends CKEDITOR.ui.dialog.labeledElement - * @constructor Creates a file class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `validate` (Optional) The validation function. - * - * @param {Array} htmlList List of HTML code to output to. - */ - file: function( dialog, elementDefinition, htmlList ) { - if ( arguments.length < 3 ) - return; - - if ( elementDefinition[ 'default' ] === undefined ) - elementDefinition[ 'default' ] = ''; - - var _ = CKEDITOR.tools.extend( initPrivateObject.call( this, elementDefinition ), { definition: elementDefinition, buttons: [] } ); - - if ( elementDefinition.validate ) - this.validate = elementDefinition.validate; - - /** @ignore */ - var innerHTML = function() { - _.frameId = CKEDITOR.tools.getNextId() + '_fileInput'; - - var html = [ - '' ); - - return html.join( '' ); - }; - - // IE BUG: Parent container does not resize to contain the iframe automatically. - dialog.on( 'load', function() { - var iframe = CKEDITOR.document.getById( _.frameId ), - contentDiv = iframe.getParent(); - contentDiv.addClass( 'cke_dialog_ui_input_file' ); - } ); - - CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); - }, - - /** - * A button for submitting the file in a file upload input. - * - * @class CKEDITOR.ui.dialog.fileButton - * @extends CKEDITOR.ui.dialog.button - * @constructor Creates a fileButton class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `for` (Required) The file input's page and element ID - * to associate with, in a two-item array format: `[ 'page_id', 'element_id' ]`. - * * `validate` (Optional) The validation function. - * - * @param {Array} htmlList List of HTML code to output to. - */ - fileButton: function( dialog, elementDefinition, htmlList ) { - var me = this; - if ( arguments.length < 3 ) - return; - - initPrivateObject.call( this, elementDefinition ); - - if ( elementDefinition.validate ) - this.validate = elementDefinition.validate; - - var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition ); - var onClick = myDefinition.onClick; - myDefinition.className = ( myDefinition.className ? myDefinition.className + ' ' : '' ) + 'cke_dialog_ui_button'; - myDefinition.onClick = function( evt ) { - var target = elementDefinition[ 'for' ]; // [ pageId, elementId ] - if ( !onClick || onClick.call( this, evt ) !== false ) { - dialog.getContentElement( target[ 0 ], target[ 1 ] ).submit(); - this.disable(); - } - }; - - dialog.on( 'load', function() { - dialog.getContentElement( elementDefinition[ 'for' ][ 0 ], elementDefinition[ 'for' ][ 1 ] )._.buttons.push( me ); - } ); - - CKEDITOR.ui.dialog.button.call( this, dialog, myDefinition, htmlList ); - }, - - html: ( function() { - var myHtmlRe = /^\s*<[\w:]+\s+([^>]*)?>/, - theirHtmlRe = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/, - emptyTagRe = /\/$/; - /** - * A dialog window element made from raw HTML code. - * - * @class CKEDITOR.ui.dialog.html - * @extends CKEDITOR.ui.dialog.uiElement - * @constructor Creates a html class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition Element definition. - * Accepted fields: - * - * * `html` (Required) HTML code of this element. - * - * @param {Array} htmlList List of HTML code to be added to the dialog's content area. - */ - return function( dialog, elementDefinition, htmlList ) { - if ( arguments.length < 3 ) - return; - - var myHtmlList = [], - myHtml, - theirHtml = elementDefinition.html, - myMatch, theirMatch; - - // If the HTML input doesn't contain any tags at the beginning, add a tag around it. - if ( theirHtml.charAt( 0 ) != '<' ) - theirHtml = '' + theirHtml + ''; - - // Look for focus function in definition. - var focus = elementDefinition.focus; - if ( focus ) { - var oldFocus = this.focus; - this.focus = function() { - ( typeof focus == 'function' ? focus : oldFocus ).call( this ); - this.fire( 'focus' ); - }; - if ( elementDefinition.isFocusable ) { - var oldIsFocusable = this.isFocusable; - this.isFocusable = oldIsFocusable; - } - this.keyboardFocusable = true; - } - - CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, myHtmlList, 'span', null, null, '' ); - - // Append the attributes created by the uiElement call to the real HTML. - myHtml = myHtmlList.join( '' ); - myMatch = myHtml.match( myHtmlRe ); - theirMatch = theirHtml.match( theirHtmlRe ) || [ '', '', '' ]; - - if ( emptyTagRe.test( theirMatch[ 1 ] ) ) { - theirMatch[ 1 ] = theirMatch[ 1 ].slice( 0, -1 ); - theirMatch[ 2 ] = '/' + theirMatch[ 2 ]; - } - - htmlList.push( [ theirMatch[ 1 ], ' ', myMatch[ 1 ] || '', theirMatch[ 2 ] ].join( '' ) ); - }; - } )(), - - /** - * Form fieldset for grouping dialog UI elements. - * - * @class CKEDITOR.ui.dialog.fieldset - * @extends CKEDITOR.ui.dialog.uiElement - * @constructor Creates a fieldset class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog window object. - * @param {Array} childObjList - * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. - * @param {Array} childHtmlList Array of HTML code that corresponds to the HTML output of all the - * objects in childObjList. - * @param {Array} htmlList Array of HTML code that this element will output to. - * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition - * The element definition. Accepted fields: - * - * * `label` (Optional) The legend of the this fieldset. - * * `children` (Required) An array of dialog window field definitions which will be grouped inside this fieldset. - * - */ - fieldset: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { - var legendLabel = elementDefinition.label; - /** @ignore */ - var innerHTML = function() { - var html = []; - legendLabel && html.push( '' + legendLabel + '' ); - for ( var i = 0; i < childHtmlList.length; i++ ) - html.push( childHtmlList[ i ] ); - return html.join( '' ); - }; - - this._ = { children: childObjList }; - CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'fieldset', null, null, innerHTML ); - } - - }, true ); - - CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement(); - - /** @class CKEDITOR.ui.dialog.labeledElement */ - CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { - /** - * Sets the label text of the element. - * - * @param {String} label The new label text. - * @returns {CKEDITOR.ui.dialog.labeledElement} The current labeled element. - */ - setLabel: function( label ) { - var node = CKEDITOR.document.getById( this._.labelId ); - if ( node.getChildCount() < 1 ) - ( new CKEDITOR.dom.text( label, CKEDITOR.document ) ).appendTo( node ); - else - node.getChild( 0 ).$.nodeValue = label; - return this; - }, - - /** - * Retrieves the current label text of the elment. - * - * @returns {String} The current label text. - */ - getLabel: function() { - var node = CKEDITOR.document.getById( this._.labelId ); - if ( !node || node.getChildCount() < 1 ) - return ''; - else - return node.getChild( 0 ).getText(); - }, - - /** - * Defines the `onChange` event for UI element definitions. - * @property {Object} - */ - eventProcessors: commonEventProcessors - }, true ); - - /** @class CKEDITOR.ui.dialog.button */ - CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { - /** - * Simulates a click to the button. - * - * @returns {Object} Return value of the `click` event. - */ - click: function() { - if ( !this._.disabled ) - return this.fire( 'click', { dialog: this._.dialog } ); - return false; - }, - - /** - * Enables the button. - */ - enable: function() { - this._.disabled = false; - var element = this.getElement(); - element && element.removeClass( 'cke_disabled' ); - }, - - /** - * Disables the button. - */ - disable: function() { - this._.disabled = true; - this.getElement().addClass( 'cke_disabled' ); - }, - - /** - * Checks whether a field is visible. - * - * @returns {Boolean} - */ - isVisible: function() { - return this.getElement().getFirst().isVisible(); - }, - - /** - * Checks whether a field is enabled. Fields can be disabled by using the - * {@link #disable} method and enabled by using the {@link #enable} method. - * - * @returns {Boolean} - */ - isEnabled: function() { - return !this._.disabled; - }, - - /** - * Defines the `onChange` event and `onClick` for button element definitions. - * - * @property {Object} - */ - eventProcessors: CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { - onClick: function( dialog, func ) { - this.on( 'click', function() { - func.apply( this, arguments ); - } ); - } - }, true ), - - /** - * Handler for the element's access key up event. Simulates a click to - * the button. - */ - accessKeyUp: function() { - this.click(); - }, - - /** - * Handler for the element's access key down event. Simulates a mouse - * down to the button. - */ - accessKeyDown: function() { - this.focus(); - }, - - keyboardFocusable: true - }, true ); - - /** @class CKEDITOR.ui.dialog.textInput */ - CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { - /** - * Gets the text input DOM element under this UI object. - * - * @returns {CKEDITOR.dom.element} The DOM element of the text input. - */ - getInputElement: function() { - return CKEDITOR.document.getById( this._.inputId ); - }, - - /** - * Puts focus into the text input. - */ - focus: function() { - var me = this.selectParentTab(); - - // GECKO BUG: setTimeout() is needed to workaround invisible selections. - setTimeout( function() { - var element = me.getInputElement(); - element && element.$.focus(); - }, 0 ); - }, - - /** - * Selects all the text in the text input. - */ - select: function() { - var me = this.selectParentTab(); - - // GECKO BUG: setTimeout() is needed to workaround invisible selections. - setTimeout( function() { - var e = me.getInputElement(); - if ( e ) { - e.$.focus(); - e.$.select(); - } - }, 0 ); - }, - - /** - * Handler for the text input's access key up event. Makes a `select()` - * call to the text input. - */ - accessKeyUp: function() { - this.select(); - }, - - /** - * Sets the value of this text input object. - * - * uiElement.setValue( 'Blamo' ); - * - * @param {Object} value The new value. - * @returns {CKEDITOR.ui.dialog.textInput} The current UI element. - */ - setValue: function( value ) { - !value && ( value = '' ); - return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply( this, arguments ); - }, - - keyboardFocusable: true - }, commonPrototype, true ); - - CKEDITOR.ui.dialog.textarea.prototype = new CKEDITOR.ui.dialog.textInput(); - - /** @class CKEDITOR.ui.dialog.select */ - CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { - /** - * Gets the DOM element of the select box. - * - * @returns {CKEDITOR.dom.element} The `` element of this file input. - * - * @returns {CKEDITOR.dom.element} The file input element. - */ - getInputElement: function() { - var frameDocument = CKEDITOR.document.getById( this._.frameId ).getFrameDocument(); - return frameDocument.$.forms.length > 0 ? new CKEDITOR.dom.element( frameDocument.$.forms[ 0 ].elements[ 0 ] ) : this.getElement(); - }, - - /** - * Uploads the file in the file input. - * - * @returns {CKEDITOR.ui.dialog.file} This object. - */ - submit: function() { - this.getInputElement().getParent().$.submit(); - return this; - }, - - /** - * Gets the action assigned to the form. - * - * @returns {String} The value of the action. - */ - getAction: function() { - return this.getInputElement().getParent().$.action; - }, - - /** - * The events must be applied to the inner input element, and - * this must be done when the iframe and form have been loaded. - */ - registerEvents: function( definition ) { - var regex = /^on([A-Z]\w+)/, - match; - - var registerDomEvent = function( uiElement, dialog, eventName, func ) { - uiElement.on( 'formLoaded', function() { - uiElement.getInputElement().on( eventName, func, uiElement ); - } ); - }; - - for ( var i in definition ) { - if ( !( match = i.match( regex ) ) ) - continue; - - if ( this.eventProcessors[ i ] ) - this.eventProcessors[ i ].call( this, this._.dialog, definition[ i ] ); - else - registerDomEvent( this, this._.dialog, match[ 1 ].toLowerCase(), definition[ i ] ); - } - - return this; - }, - - /** - * Redraws the file input and resets the file path in the file input. - * The redrawing logic is necessary because non-IE browsers tend to clear - * the `' + - '
', - - onLoad: function() { - var iFrame = CKEDITOR.document.getById( this.domId ).getChild( 0 ); - preview = new CKEDITOR.plugins.mathjax.frameWrapper( iFrame, editor ); - }, - - setup: function( widget ) { - preview.setValue( widget.data.math ); - } - } - ] - } - ] - }; -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/icons/hidpi/mathjax.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/icons/hidpi/mathjax.png deleted file mode 100644 index 85b8e11df6..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/icons/hidpi/mathjax.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/icons/mathjax.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/icons/mathjax.png deleted file mode 100644 index d25081be99..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/icons/mathjax.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/images/loader.gif b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/images/loader.gif deleted file mode 100644 index 3ffb1811f7..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/images/loader.gif and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/af.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/af.js deleted file mode 100644 index cd488575f8..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/af.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'af', { - title: 'Wiskunde in TeX', - button: 'Wiskunde', - dialogInput: 'Skryf you Tex hier', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX dokument', - loading: 'laai...', - pathName: 'wiskunde' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ar.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ar.js deleted file mode 100644 index 5223facd08..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ar.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'ar', { - title: 'Mathematics in TeX', // MISSING - button: 'Math', // MISSING - dialogInput: 'Write your TeX here', // MISSING - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX documentation', // MISSING - loading: 'تحميل', - pathName: 'math' // MISSING -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ca.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ca.js deleted file mode 100644 index 51abbc70d2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ca.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'ca', { - title: 'Matemàtiques a TeX', - button: 'Matemàtiques', - dialogInput: 'Escriu el TeX aquí', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Documentació TeX', - loading: 'carregant...', - pathName: 'matemàtiques' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/cs.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/cs.js deleted file mode 100644 index c9f6a1d33b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/cs.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'cs', { - title: 'Matematika v TeXu', - button: 'Matematika', - dialogInput: 'Zde napište TeXový kód', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Dokumentace k TeXu', - loading: 'Nahrává se...', - pathName: 'Matematika' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/cy.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/cy.js deleted file mode 100644 index 8d7298aa4d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/cy.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'cy', { - title: 'Mathemateg mewn TeX', - button: 'Math', - dialogInput: 'Ysgrifennwch eich TeX yma', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Dogfennaeth TeX', - loading: 'llwytho...', - pathName: 'math' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/da.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/da.js deleted file mode 100644 index d56f8f2df5..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/da.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'da', { - title: 'Matematik i TeX', - button: 'Matematik', - dialogInput: 'Write your TeX here', // MISSING - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX dokumentation', - loading: 'loading...', // MISSING - pathName: 'matematik' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/de.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/de.js deleted file mode 100644 index 9a1cf64cb9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/de.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'de', { - title: 'Mathematik in Tex', - button: 'Rechnung', - dialogInput: 'Schreiben Sie hier in Tex', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Tex Dokumentation', - loading: 'lädt...', - pathName: 'rechnen' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/el.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/el.js deleted file mode 100644 index 933a71e116..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/el.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'el', { - title: 'Μαθηματικά με τη γλώσσα TeX', - button: 'Μαθηματικά', - dialogInput: 'Γράψτε κώδικα TeX εδώ', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Τεκμηρίωση TeX', - loading: 'γίνεται φόρτωση...', - pathName: 'μαθηματικά' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/en-gb.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/en-gb.js deleted file mode 100644 index a706e8d13a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/en-gb.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'en-gb', { - title: 'Mathematics in TeX', - button: 'Math', - dialogInput: 'Write you TeX here', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX documentation', - loading: 'loading...', - pathName: 'math' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/en.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/en.js deleted file mode 100644 index ff7701ea61..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/en.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'en', { - title: 'Mathematics in TeX', - button: 'Math', - dialogInput: 'Write your TeX here', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX documentation', - loading: 'loading...', - pathName: 'math' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/eo.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/eo.js deleted file mode 100644 index e6cc52fcda..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/eo.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'eo', { - title: 'Matematiko en TeX', - button: 'Matematiko', - dialogInput: 'Skribu vian TeX tien', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX dokumentado', - loading: 'estas ŝarganta', - pathName: 'matematiko' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/es.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/es.js deleted file mode 100644 index 8de6d794bc..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/es.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'es', { - title: 'Matemáticas en TeX', - button: 'Matemáticas', - dialogInput: 'Escribe tu TeX aquí', - docUrl: 'http://es.wikipedia.org/wiki/TeX', - docLabel: 'Documentación de TeX', - loading: 'cargando...', - pathName: 'matemáticas' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/fa.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/fa.js deleted file mode 100644 index 29cf872e7b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/fa.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'fa', { - title: 'ریاضیات در تک', - button: 'ریاضی', - dialogInput: 'فرمول خود را اینجا بنویسید', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'مستندسازی فرمول نویسی', - loading: 'بارگیری', - pathName: 'ریاضی' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/fi.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/fi.js deleted file mode 100644 index a83d56ede2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/fi.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'fi', { - title: 'Matematiikkaa TeX:llä', - button: 'Matematiikka', - dialogInput: 'Kirjoita TeX:iä tähän', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX dokumentaatio', - loading: 'lataa...', - pathName: 'matematiikka' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/fr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/fr.js deleted file mode 100644 index fff6ad5425..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/fr.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'fr', { - title: 'Mathématiques au format TeX', - button: 'Math', - dialogInput: 'Saisir la formule TeX ici', - docUrl: 'http://fr.wikibooks.org/wiki/LaTeX/Math%C3%A9matiques', - docLabel: 'Documentation du format TeX', - loading: 'chargement...', - pathName: 'math' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/gl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/gl.js deleted file mode 100644 index 07d98ad498..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/gl.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'gl', { - title: 'Matemáticas en TeX', - button: 'Matemáticas', - dialogInput: 'Escriba o seu TeX aquí', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Documentación de TeX', - loading: 'cargando...', - pathName: 'matemáticas' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/he.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/he.js deleted file mode 100644 index 841bdd22b4..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/he.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'he', { - title: 'מתמטיקה בTeX', - button: 'מתמטיקה', - dialogInput: 'כתוב את הTeX שלך כאן', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'תיעוד TeX', - loading: 'טוען...', - pathName: 'מתמטיקה' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/hr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/hr.js deleted file mode 100644 index 887b8ee7ad..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/hr.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'hr', { - title: 'Matematika u TeXu', - button: 'Matematika', - dialogInput: 'Napiši svoj TeX ovdje', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX dokumentacija', - loading: 'učitavanje...', - pathName: 'matematika' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/hu.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/hu.js deleted file mode 100644 index 899a143a9e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/hu.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'hu', { - title: 'Matematika a TeX-ben', - button: 'Matek', - dialogInput: 'Írd a TeX-ed ide', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX dokumentáció', - loading: 'töltés...', - pathName: 'matek' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/it.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/it.js deleted file mode 100644 index 71ce5786f4..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/it.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'it', { - title: 'Formule in TeX', - button: 'Formule', - dialogInput: 'Scrivere qui il proprio TeX', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Documentazione TeX', - loading: 'caricamento…', - pathName: 'formula' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ja.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ja.js deleted file mode 100644 index f067813c62..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ja.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'ja', { - title: 'TeX形式の数式', - button: '数式', - dialogInput: 'TeX形式の数式を入力してください', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeXの解説', - loading: '読み込み中…', - pathName: 'math' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/km.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/km.js deleted file mode 100644 index 21f52a7569..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/km.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'km', { - title: 'គណិត​វិទ្យា​ក្នុង TeX', - button: 'គណិត', - dialogInput: 'សរសេរ TeX របស់​អ្នក​នៅ​ទីនេះ', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'ឯកសារ​អត្ថបទ​ពី ​TeX', - loading: 'កំពុង​ផ្ទុក..', - pathName: 'គណិត' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ku.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ku.js deleted file mode 100644 index 639ba211bf..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ku.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'ku', { - title: 'بیرکاری لە TeX', - button: 'بیرکاری', - dialogInput: 'TeXەکەت لێرە بنووسە', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'بەڵگەنامەکردنی TeX', - loading: 'بارکردن...', - pathName: 'بیرکاری' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/lt.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/lt.js deleted file mode 100644 index 172639f2b5..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/lt.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'lt', { - title: 'Matematika per TeX', - button: 'Matematika', - dialogInput: 'Parašyk savo TeX čia', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX žinynas', - loading: 'kraunasi...', - pathName: 'matematika' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/nb.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/nb.js deleted file mode 100644 index ee3c4b3f59..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/nb.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'nb', { - title: 'Matematikk i TeX', - button: 'Matte', - dialogInput: 'Skriv TeX-koden her', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX-dokumentasjon', - loading: 'laster...', - pathName: 'matte' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/nl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/nl.js deleted file mode 100644 index d34428c097..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/nl.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'nl', { - title: 'Wiskunde in TeX', - button: 'Wiskunde', - dialogInput: 'Typ hier uw TeX', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX documentatie', - loading: 'laden...', - pathName: 'wiskunde' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/no.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/no.js deleted file mode 100644 index 9906d2c916..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/no.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'no', { - title: 'Matematikk i TeX', - button: 'Matte', - dialogInput: 'Skriv TeX-koden her', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX-dokumentasjon', - loading: 'laster...', - pathName: 'matte' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/pl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/pl.js deleted file mode 100644 index 36a111bb7d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/pl.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'pl', { - title: 'Wzory matematyczne w TeX', - button: 'Wzory matematyczne', - dialogInput: 'Wpisz wyrażenie w TeX', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Dokumentacja TeX', - loading: 'ładowanie...', - pathName: 'matematyka' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/pt-br.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/pt-br.js deleted file mode 100644 index dd1365b3aa..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/pt-br.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'pt-br', { - title: 'Matemática em TeX', - button: 'Matemática', - dialogInput: 'Escreva seu TeX aqui', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Documentação TeX', - loading: 'carregando...', - pathName: 'Matemática' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/pt.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/pt.js deleted file mode 100644 index f63c6a0def..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/pt.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'pt', { - title: 'Matemática em TeX', - button: 'Matemática', - dialogInput: 'Escreva aqui o seu Tex', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Documentação TeX', - loading: 'a carregar ...', - pathName: 'matemática' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ro.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ro.js deleted file mode 100644 index 5a6fa66173..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ro.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'ro', { - title: 'Matematici in TeX', - button: 'Matematici', - dialogInput: 'Scrie TeX-ul aici', - docUrl: 'http://ro.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Documentatie TeX', - loading: 'încarcă...', - pathName: 'matematici' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ru.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ru.js deleted file mode 100644 index 0087b9cf24..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/ru.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'ru', { - title: 'Математика в TeX-системе', - button: 'Математика', - dialogInput: 'Введите здесь TeX', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX документация', - loading: 'загрузка...', - pathName: 'мат.' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sk.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sk.js deleted file mode 100644 index 99c2090afc..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sk.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'sk', { - title: 'Matematika v TeX', - button: 'Matika', - dialogInput: 'Napíšte svoj TeX sem', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Dokumentácia TeX', - loading: 'načítavanie...', - pathName: 'matika' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sl.js deleted file mode 100644 index 5d77cea52f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sl.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'sl', { - title: 'Matematika v TeX', - button: 'Matematika', - dialogInput: 'Napišite svoj TeX tukaj', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX dokumentacija', - loading: 'nalaganje...', - pathName: 'matematika' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sq.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sq.js deleted file mode 100644 index 10751371a3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sq.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'sq', { - title: 'Matematikë në TeX', - button: 'Matematikë', - dialogInput: 'Shkruani TeX-in tuaj këtu', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Tex dokumentimi', - loading: 'duke u hapur...', - pathName: 'matematikë' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sv.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sv.js deleted file mode 100644 index f24b12ce25..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/sv.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'sv', { - title: 'Mattematik i TeX', - button: 'Matte', - dialogInput: 'Skriv din TeX här', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX dokumentation', - loading: 'laddar', - pathName: 'matte' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/tr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/tr.js deleted file mode 100644 index 5ed54da79e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/tr.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'tr', { - title: 'TeX ile Matematik', - button: 'Matematik', - dialogInput: 'TeX kodunuzu buraya yazın', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX yardım dökümanı', - loading: 'yükleniyor...', - pathName: 'matematik' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/tt.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/tt.js deleted file mode 100644 index 3d9fdf5004..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/tt.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'tt', { - title: 'TeX\'та математика', - button: 'Математика', - dialogInput: 'Биредә TeX форматында аңлатмагызны языгыз', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX турыдна документлар', - loading: 'йөкләнә...', - pathName: 'математика' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/uk.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/uk.js deleted file mode 100644 index 092b0e958a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/uk.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'uk', { - title: 'Математика у TeX', - button: 'Математика', - dialogInput: 'Наберіть тут на TeX\'у', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Документація про TeX', - loading: 'завантажується…', - pathName: 'математика' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/vi.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/vi.js deleted file mode 100644 index 74fd68a4c2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/vi.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'vi', { - title: 'Toán học bằng TeX', - button: 'Toán', - dialogInput: 'Nhập mã TeX ở đây', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'Tài liệu TeX', - loading: 'đang nạp...', - pathName: 'toán' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/zh-cn.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/zh-cn.js deleted file mode 100644 index a78d17a47e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/zh-cn.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'zh-cn', { - title: 'TeX 语法的数学公式编辑器', - button: '数学公式', - dialogInput: '在此编写您的 TeX 指令', - docUrl: 'http://zh.wikipedia.org/wiki/TeX', - docLabel: 'TeX 语法(可以参考维基百科自身关于数学公式显示方式的帮助)', - loading: '正在加载...', - pathName: '数字公式' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/zh.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/zh.js deleted file mode 100644 index d8ffe31668..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/lang/zh.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.plugins.setLang( 'mathjax', 'zh', { - title: '以 TeX 表示數學', - button: '數學', - dialogInput: '請輸入 TeX', - docUrl: 'http://en.wikibooks.org/wiki/LaTeX/Mathematics', - docLabel: 'TeX 說明文件', - loading: '載入中…', - pathName: '數學' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/plugin.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/plugin.js deleted file mode 100644 index 482a8b7fd6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/plugin.js +++ /dev/null @@ -1,460 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -/** - * @fileOverview [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin. - */ - -'use strict'; - -( function() { - - var cdn = 'http:\/\/cdn.mathjax.org\/mathjax\/2.2-latest\/MathJax.js?config=TeX-AMS_HTML'; - - CKEDITOR.plugins.add( 'mathjax', { - lang: 'af,ar,ca,cs,cy,da,de,el,en,en-gb,eo,es,fa,fi,fr,gl,he,hr,hu,it,ja,km,ku,lt,nb,nl,no,pl,pt,pt-br,ro,ru,sk,sl,sq,sv,tr,tt,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% - requires: 'widget,dialog', - icons: 'mathjax', - hidpi: true, // %REMOVE_LINE_CORE% - - init: function( editor ) { - var cls = editor.config.mathJaxClass || 'math-tex'; - - editor.widgets.add( 'mathjax', { - inline: true, - dialog: 'mathjax', - button: editor.lang.mathjax.button, - mask: true, - allowedContent: 'span(!' + cls + ')', - // Allow style classes only on spans having mathjax class. - styleToAllowedContentRules: function( style ) { - var classes = style.getClassesArray(); - if ( !classes ) - return null; - classes.push( '!' + cls ); - - return 'span(' + classes.join( ',' ) + ')'; - }, - pathName: editor.lang.mathjax.pathName, - - template: '', - - parts: { - span: 'span' - }, - - defaults: { - math: '\\(x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}\\)' - }, - - init: function() { - var iframe = this.parts.span.getChild( 0 ); - - // Check if span contains iframe and create it otherwise. - if ( !iframe || iframe.type != CKEDITOR.NODE_ELEMENT || !iframe.is( 'iframe' ) ) { - iframe = new CKEDITOR.dom.element( 'iframe' ); - iframe.setAttributes( { - style: 'border:0;width:0;height:0', - scrolling: 'no', - frameborder: 0, - allowTransparency: true, - src: CKEDITOR.plugins.mathjax.fixSrc - } ); - this.parts.span.append( iframe ); - } - - // Wait for ready because on some browsers iFrame will not - // have document element until it is put into document. - // This is a problem when you crate widget using dialog. - this.once( 'ready', function() { - // Src attribute must be recreated to fix custom domain error after undo - // (see iFrame.removeAttribute( 'src' ) in frameWrapper.load). - if ( CKEDITOR.env.ie ) - iframe.setAttribute( 'src', CKEDITOR.plugins.mathjax.fixSrc ); - - this.frameWrapper = new CKEDITOR.plugins.mathjax.frameWrapper( iframe, editor ); - this.frameWrapper.setValue( this.data.math ); - } ); - }, - - data: function() { - if ( this.frameWrapper ) - this.frameWrapper.setValue( this.data.math ); - }, - - upcast: function( el, data ) { - if ( !( el.name == 'span' && el.hasClass( cls ) ) ) - return; - - if ( el.children.length > 1 || el.children[ 0 ].type != CKEDITOR.NODE_TEXT ) - return; - - data.math = CKEDITOR.tools.htmlDecode( el.children[ 0 ].value ); - - // Add style display:inline-block to have proper height of widget wrapper and mask. - var attrs = el.attributes; - - if ( attrs.style ) - attrs.style += ';display:inline-block'; - else - attrs.style = 'display:inline-block'; - - // Add attribute to prevent deleting empty span in data processing. - attrs[ 'data-cke-survive' ] = 1; - - el.children[ 0 ].remove(); - - return el; - }, - - downcast: function( el ) { - el.children[ 0 ].replaceWith( new CKEDITOR.htmlParser.text( CKEDITOR.tools.htmlEncode( this.data.math ) ) ); - - // Remove style display:inline-block. - var attrs = el.attributes; - attrs.style = attrs.style.replace( /display:\s?inline-block;?\s?/, '' ); - if ( attrs.style === '' ) - delete attrs.style; - - return el; - } - } ); - - // Add dialog. - CKEDITOR.dialog.add( 'mathjax', this.path + 'dialogs/mathjax.js' ); - - // Add MathJax script to page preview. - editor.on( 'contentPreview', function( evt ) { - evt.data.dataValue = evt.data.dataValue.replace( /<\/head>/, - '' + - - // Load MathJax lib. - '' + - '' + - '' + - '' + - - // Render everything here and after that copy it to the preview. - '' + - '' + - '' ); - } - - // Run MathJax parsing Tex. - function update() { - isRunning = true; - - value = newValue; - - editor.fire( 'lockSnapshot' ); - - buffer.setHtml( value ); - - // Set loading indicator. - preview.setHtml( ' + editor.lang.mathjax.loading + ' ); - - iFrame.setStyles( { - height: '16px', - width: '16px', - display: 'inline', - 'vertical-align': 'middle' - } ); - - editor.fire( 'unlockSnapshot' ); - - // Run MathJax. - doc.getWindow().$.update( value ); - } - - return { - /** - * Sets the TeX value to be displayed in the `iframe` element inside - * the editor. This function will activate the MathJax - * library which interprets TeX expressions and converts them into - * their representation that is displayed in the editor. - * - * @param {String} value TeX string. - */ - setValue: function( value ) { - newValue = CKEDITOR.tools.htmlEncode( value ); - - if ( isInit && !isRunning ) - update(); - } - }; - }; - } else { - // In IE8 MathJax does not work stable so instead of using standard - // frame wrapper it is replaced by placeholder to show pure TeX in iframe. - CKEDITOR.plugins.mathjax.frameWrapper = function( iFrame, editor ) { - iFrame.getFrameDocument().write( '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' ); - - return { - setValue: function( value ) { - var doc = iFrame.getFrameDocument(), - tex = doc.getById( 'tex' ); - - tex.setHtml( CKEDITOR.plugins.mathjax.trim( CKEDITOR.tools.htmlEncode( value ) ) ); - - CKEDITOR.plugins.mathjax.copyStyles( iFrame, tex ); - - editor.fire( 'lockSnapshot' ); - - iFrame.setStyles( { - width: Math.min( 250, tex.$.offsetWidth ) + 'px', - height: doc.$.body.offsetHeight + 'px', - display: 'inline', - 'vertical-align': 'middle' - } ); - - editor.fire( 'unlockSnapshot' ); - } - }; - }; - } -} )(); - -/** - * Sets the path to the MathJax library. It can be both a local - * resource and a location different than the default CDN. - * - * Please note that this must be a full or absolute path. - * - * config.mathJaxLib = 'http:\/\/example.com\/libs\/MathJax.js'; - * - * @cfg {String} [mathJaxLib='http:\/\/cdn.mathjax.org\/mathjax\/2.2-latest\/MathJax.js?config=TeX-AMS_HTML'] - * @member CKEDITOR.config - */ - -/** - * Sets the default class for `span` elements that will be - * converted into [Mathematical Formulas](http://ckeditor.com/addon/mathjax) - * widgets. - * - * If you set it to the following: - * - * config.mathJaxClass = 'my-math'; - * - * The code below will be recognized as a Mathematical Formulas widget. - * - * \( \sqrt{4} = 2 \) - * - * @cfg {String} [mathJaxClass='math-tex'] - * @member CKEDITOR.config - */ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/samples/mathjax.html b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/samples/mathjax.html deleted file mode 100644 index 27b95eea5c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/mathjax/samples/mathjax.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - Mathematical Formulas — CKEditor Sample - - - - - - - - - -

- CKEditor Samples » Mathematical Formulas -

- -
-

- This sample shows the usage of the CKEditor mathematical plugin that introduces a MathJax widget. You can now use it to create or modify equations using TeX. -

-

- TeX content will be automatically replaced by a widget when you put it in a <span class="math-tex"> element. You can also add new equations by using the Math toolbar button and entering TeX content in the plugin dialog window. After you click OK, a widget will be inserted into the editor content. -

-

- The output of the editor will be plain TeX with MathJax delimiters: \( and \), as in the code below: -

-
-<span class="math-tex">\( \sqrt{1} + (1)^2 = 2 \)</span>
-
-

- To transform TeX into a visual equation, a page must include the MathJax script. -

-

- In order to use the new plugin, include it in the config.extraPlugins configuration setting. -

-
-CKEDITOR.replace( 'textarea_id', {
-	extraPlugins: 'mathjax'
-} );
-
-

- Please note that this plugin is not compatible with Internet Explorer 8. -

-
- - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/termi/dialogs/termi.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/termi/dialogs/termi.js deleted file mode 100644 index 4dcd01f855..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/termi/dialogs/termi.js +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -'use strict'; -/* global CKEDITOR */ - -CKEDITOR.dialog.add('termiDialog', function( editor ) { - var kaanna = editor.config.customData.kaanna; - var controllerScope = null; - return { - title: kaanna('termi-plugin-title'), - minWidth: 400, - minHeight: 200, - contents: [ - { - id: 'tab-basic', - label: kaanna('termi-plugin-label'), - elements: [ - { - type: 'text', - id: 'termi-text', - label: kaanna('termi-plugin-label-teksti'), - validate: CKEDITOR.dialog.validate.notEmpty(kaanna('termi-plugin-virhe-teksti-tyhja')), - setup: function(element) { - this.setValue(element.getText()); - }, - commit: function(element) { - element.setText(this.getValue()); - } - }, - { - type: 'html', - id: 'termi-html', - validate: function() { - return !this.getValue() ? kaanna('termi-plugin-virhe-viite-tyhja') : true; - }, - html: '
' + - '' + - '' + - ' {{$select.selected.termi|kaanna}}' + - ' ' + - ' ' + - '' + - '

' + - '
' + - ' {{\'termi-plugin-lisaa-uusi\'|kaanna}}'+ - '
' + - ' ' + - ' ' + - '
' + - '

{{message|kaanna}}

' + - '
', - onLoad: function () { - var self = this; - var el = this.getElement().$; - angular.element('body').injector().invoke(function($compile) { - var scope = angular.element(el).scope(); - $compile(el)(scope); - controllerScope = angular.element(el).scope(); - controllerScope.init(); - controllerScope.registerListener(function onChange(value) { - if (value && value.avain) { - self.setValue(value.avain); - } - }); - }); - }, - onShow: function () { - var dialog = this.getDialog(); - if (!dialog.insertMode) { - dialog.setupContent(dialog.element); - } - }, - setup: function (element) { - var value = element.getAttribute('data-viite'); - controllerScope.setValue(value); - this.setValue(value); - }, - commit: function (element) { - element.setAttribute('data-viite', this.getValue()); - } - } - ] - }, - ], - onShow: function () { - var selection = editor.getSelection(); - var element = selection.getStartElement(); - if (element) { - element = element.getAscendant('abbr', true); - } - if (!element || element.getName() !== 'abbr') { - element = editor.document.createElement('abbr'); - element.appendText(selection.getSelectedText()); - this.insertMode = true; - } else { - this.insertMode = false; - } - this.setupContent(element); - this.element = element; - }, - onOk: function() { - var el = this.element; - this.commitContent(el); - if (this.insertMode) { - editor.insertElement(el); - } - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/termi/icons/termi.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/termi/icons/termi.png deleted file mode 100644 index 1aee389b7b..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/termi/icons/termi.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/termi/plugin.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/termi/plugin.js deleted file mode 100644 index f29df3e4ff..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/termi/plugin.js +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -'use strict'; -/* global CKEDITOR */ - -CKEDITOR.plugins.add('termi', { - icons: 'termi', - init: function( editor ) { - var kaanna = editor.config.customData.kaanna; - editor.addCommand('termiEdit', new CKEDITOR.dialogCommand('termiDialog')); - - editor.addCommand('termiDelete', { - exec: function (editor) { - var selection = editor.getSelection(); - if (selection) { - var element = selection.getStartElement(); - if (element) { - element = element.getAscendant('abbr', true); - } - if (element && element.is('abbr')) { - element.remove(1); - } - } - } - }); - - editor.ui.addButton('Termi', { - label: kaanna('termi-plugin-button-label'), - command: 'termiEdit', - toolbar: 'insert' - }); - - if (editor.contextMenu) { - editor.addMenuGroup('termiGroup'); - editor.addMenuItem('termiEditItem', { - label: kaanna('termi-plugin-menu-muokkaa'), - icon: this.path + 'icons/termi.png', - command: 'termiEdit', - group: 'termiGroup' - }); - editor.addMenuItem('termiDeleteItem', { - label: kaanna('termi-plugin-menu-poista'), - icon: this.path + 'icons/termi.png', - command: 'termiDelete', - group: 'termiGroup' - }); - editor.contextMenu.addListener(function(element) { - if (element.getAscendant('abbr', true)) { - return {termiEditItem: CKEDITOR.TRISTATE_OFF, termiDeleteItem: CKEDITOR.TRISTATE_OFF}; - } - }); - } - - CKEDITOR.dialog.add('termiDialog', this.path + 'dialogs/termi.js'); - } -}); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/contents.css b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/contents.css deleted file mode 100644 index c2b51d3630..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/contents.css +++ /dev/null @@ -1,23 +0,0 @@ -.mediumBorder { - border-width: 2px; -} -.thickBorder { - border-width: 5px; -} -img.thickBorder, img.mediumBorder { - border-style: solid; - border-color: #CCC; -} -.important.soMuch { - margin: 25px; - padding: 25px; - background: red; - border: none; -} - -span.redMarker { - background-color: red; -} -.invisible { - opacity: 0.1; -} \ No newline at end of file diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/sample.jpg b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/sample.jpg deleted file mode 100644 index a4a77fae83..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/sample.jpg and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/contents.css b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/contents.css deleted file mode 100644 index dba301503f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/contents.css +++ /dev/null @@ -1,36 +0,0 @@ -.simplebox { - padding: 8px; - margin: 10px; - background: #eee; - border-radius: 8px; - border: 1px solid #ddd; - box-shadow: 0 1px 1px #fff inset, 0 -1px 0px #ccc inset; -} -.simplebox-title, .simplebox-content { - box-shadow: 0 1px 1px #ddd inset; - border: 1px solid #cccccc; - border-radius: 5px; - background: #fff; -} -.simplebox-title { - margin: 0 0 8px; - padding: 5px 8px; -} -.simplebox-content { - padding: 0 8px; -} -.simplebox-content::after { - content: ''; - display: block; - clear: both; -} -.simplebox.align-right { - float: right; -} -.simplebox.align-left { - float: left; -} -.simplebox.align-center { - margin-left: auto; - margin-right: auto; -} \ No newline at end of file diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/dialogs/simplebox.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/dialogs/simplebox.js deleted file mode 100644 index f0cdb4d3e5..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/dialogs/simplebox.js +++ /dev/null @@ -1,51 +0,0 @@ -// Note: This automatic widget to dialog window binding (the fact that every field is set up from the widget -// and is committed to the widget) is only possible when the dialog is opened by the Widgets System -// (i.e. the widgetDef.dialog property is set). -// When you are opening the dialog window by yourself, you need to take care of this by yourself too. - -CKEDITOR.dialog.add( 'simplebox', function( editor ) { - return { - title: 'Edit Simple Box', - minWidth: 200, - minHeight: 100, - contents: [ - { - id: 'info', - elements: [ - { - id: 'align', - type: 'select', - label: 'Align', - items: [ - [ editor.lang.common.notSet, '' ], - [ editor.lang.common.alignLeft, 'left' ], - [ editor.lang.common.alignRight, 'right' ], - [ editor.lang.common.alignCenter, 'center' ] - ], - // When setting up this field, set its value to the "align" value from widget data. - // Note: Align values used in the widget need to be the same as those defined in the "items" array above. - setup: function( widget ) { - this.setValue( widget.data.align ); - }, - // When committing (saving) this field, set its value to the widget data. - commit: function( widget ) { - widget.setData( 'align', this.getValue() ); - } - }, - { - id: 'width', - type: 'text', - label: 'Width', - width: '50px', - setup: function( widget ) { - this.setValue( widget.data.width ); - }, - commit: function( widget ) { - widget.setData( 'width', this.getValue() ); - } - } - ] - } - ] - }; -} ); \ No newline at end of file diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/icons/simplebox.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/icons/simplebox.png deleted file mode 100644 index 6a5e3131a5..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/icons/simplebox.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/plugin.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/plugin.js deleted file mode 100644 index 6b28e10df5..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/assets/simplebox/plugin.js +++ /dev/null @@ -1,114 +0,0 @@ -'use strict'; - -// Register the plugin within the editor. -CKEDITOR.plugins.add( 'simplebox', { - // This plugin requires the Widgets System defined in the 'widget' plugin. - requires: 'widget', - - // Register the icon used for the toolbar button. It must be the same - // as the name of the widget. - icons: 'simplebox', - - // The plugin initialization logic goes inside this method. - init: function( editor ) { - // Register the editing dialog. - CKEDITOR.dialog.add( 'simplebox', this.path + 'dialogs/simplebox.js' ); - - // Register the simplebox widget. - editor.widgets.add( 'simplebox', { - // Allow all HTML elements, classes, and styles that this widget requires. - // Read more about the Advanced Content Filter here: - // * http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter - // * http://docs.ckeditor.com/#!/guide/plugin_sdk_integration_with_acf - allowedContent: - 'div(!simplebox,align-left,align-right,align-center){width};' + - 'div(!simplebox-content); h2(!simplebox-title)', - - // Minimum HTML which is required by this widget to work. - requiredContent: 'div(simplebox)', - - // Define two nested editable areas. - editables: { - title: { - // Define CSS selector used for finding the element inside widget element. - selector: '.simplebox-title', - // Define content allowed in this nested editable. Its content will be - // filtered accordingly and the toolbar will be adjusted when this editable - // is focused. - allowedContent: 'br strong em' - }, - content: { - selector: '.simplebox-content' - } - }, - - // Define the template of a new Simple Box widget. - // The template will be used when creating new instances of the Simple Box widget. - template: - '
' + - '

Title

' + - '

Content...

' + - '
', - - // Define the label for a widget toolbar button which will be automatically - // created by the Widgets System. This button will insert a new widget instance - // created from the template defined above, or will edit selected widget - // (see second part of this tutorial to learn about editing widgets). - // - // Note: In order to be able to translate your widget you should use the - // editor.lang.simplebox.* property. A string was used directly here to simplify this tutorial. - button: 'Create a simple box', - - // Set the widget dialog window name. This enables the automatic widget-dialog binding. - // This dialog window will be opened when creating a new widget or editing an existing one. - dialog: 'simplebox', - - // Check the elements that need to be converted to widgets. - // - // Note: The "element" argument is an instance of http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.element - // so it is not a real DOM element yet. This is caused by the fact that upcasting is performed - // during data processing which is done on DOM represented by JavaScript objects. - upcast: function( element ) { - // Return "true" (that element needs to converted to a Simple Box widget) - // for all
elements with a "simplebox" class. - return element.name == 'div' && element.hasClass( 'simplebox' ); - }, - - // When a widget is being initialized, we need to read the data ("align" and "width") - // from DOM and set it by using the widget.setData() method. - // More code which needs to be executed when DOM is available may go here. - init: function() { - var width = this.element.getStyle( 'width' ); - if ( width ) - this.setData( 'width', width ); - - if ( this.element.hasClass( 'align-left' ) ) - this.setData( 'align', 'left' ); - if ( this.element.hasClass( 'align-right' ) ) - this.setData( 'align', 'right' ); - if ( this.element.hasClass( 'align-center' ) ) - this.setData( 'align', 'center' ); - }, - - // Listen on the widget#data event which is fired every time the widget data changes - // and updates the widget's view. - // Data may be changed by using the widget.setData() method, which we use in the - // Simple Box dialog window. - data: function() { - // Check whether "width" widget data is set and remove or set "width" CSS style. - // The style is set on widget main element (div.simplebox). - if ( !this.data.width ) - this.element.removeStyle( 'width' ); - else - this.element.setStyle( 'width', this.data.width ); - - // Brutally remove all align classes and set a new one if "align" widget data is set. - this.element.removeClass( 'align-left' ); - this.element.removeClass( 'align-right' ); - this.element.removeClass( 'align-center' ); - if ( this.data.align ) - this.element.addClass( 'align-' + this.data.align ); - } - } ); - } -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/console.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/console.js deleted file mode 100644 index 7bd4bd0e0f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/console.js +++ /dev/null @@ -1,131 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -/* global CKCONSOLE */ - -'use strict'; - -( function() { - - CKCONSOLE.add( 'widget', { - panels: [ - { - type: 'box', - content: '
    ', - - refresh: function( editor ) { - var instances = obj2Array( editor.widgets.instances ); - - return { - header: 'Instances (' + instances.length + ')', - instances: generateInstancesList( instances ) - }; - }, - - refreshOn: function( editor, refresh ) { - editor.widgets.on( 'instanceCreated', function( evt ) { - refresh(); - - evt.data.on( 'data', refresh ); - } ); - - editor.widgets.on( 'instanceDestroyed', refresh ); - } - }, - - { - type: 'box', - content: - '
      ' + - '
    • focused:
    • ' + - '
    • selected:
    • ' + - '
    ', - - refresh: function( editor ) { - var focused = editor.widgets.focused, - selected = editor.widgets.selected, - selectedIds = []; - - for ( var i = 0; i < selected.length; ++i ) - selectedIds.push( selected[ i ].id ); - - return { - header: 'Focus & selection', - focused: focused ? 'id: ' + focused.id : '-', - selected: selectedIds.length ? 'id: ' + selectedIds.join( ', id: ' ) : '-' - }; - }, - - refreshOn: function( editor, refresh ) { - editor.on( 'selectionCheck', refresh, null, null, 999 ); - } - }, - - { - type: 'log', - - on: function( editor, log, logFn ) { - // Add all listeners with high priorities to log - // messages in the correct order when one event depends on another. - // E.g. selectionChange triggers widget selection - if this listener - // for selectionChange will be executed later than that one, then order - // will be incorrect. - - editor.on( 'selectionChange', function( evt ) { - var msg = 'selection change', - sel = evt.data.selection, - el = sel.getSelectedElement(), - widget; - - if ( el && ( widget = editor.widgets.getByElement( el, true ) ) ) - msg += ' (id: ' + widget.id + ')'; - - log( msg ); - }, null, null, 1 ); - - editor.widgets.on( 'instanceDestroyed', function( evt ) { - log( 'instance destroyed (id: ' + evt.data.id + ')' ); - }, null, null, 1 ); - - editor.widgets.on( 'instanceCreated', function( evt ) { - log( 'instance created (id: ' + evt.data.id + ')' ); - }, null, null, 1 ); - - editor.widgets.on( 'widgetFocused', function( evt ) { - log( 'widget focused (id: ' + evt.data.widget.id + ')' ); - }, null, null, 1 ); - - editor.widgets.on( 'widgetBlurred', function( evt ) { - log( 'widget blurred (id: ' + evt.data.widget.id + ')' ); - }, null, null, 1 ); - - editor.widgets.on( 'checkWidgets', logFn( 'checking widgets' ), null, null, 1 ); - editor.widgets.on( 'checkSelection', logFn( 'checking selection' ), null, null, 1 ); - } - } - ] - } ); - - function generateInstancesList( instances ) { - var html = '', - instance; - - for ( var i = 0; i < instances.length; ++i ) { - instance = instances[ i ]; - html += itemTpl.output( { id: instance.id, name: instance.name, data: JSON.stringify( instance.data ) } ); - } - return html; - } - - function obj2Array( obj ) { - var arr = []; - for ( var id in obj ) - arr.push( obj[ id ] ); - - return arr; - } - - var itemTpl = new CKEDITOR.template( '
  • id: {id}, name: {name}, data: {data}
  • ' ); -} )(); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/nestedwidgets.html b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/nestedwidgets.html deleted file mode 100644 index f7cb0cf53d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/nestedwidgets.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - Nested widgets — CKEditor Sample - - - - - - - - - - -

    Nested widgets

    - -

    Classic (iframe-based) Sample

    - - -

    Inline Sample

    -
    -

    Simple Box Sample

    - -
    -

    Title

    -
    -

    Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on [[July 20, 1969, at 20:18 UTC]]. Armstrong became the first to step onto the lunar surface 6 hours later on [[July 21 at 02:56 UTC]].

    - -
    - The Eagle -
    The Eagle in lunar orbit
    -
    - -
      -
    • Foo!
    • -
    • Bar!
    • -
    - -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet orci ut nisi adipiscing ultrices. Sed pellentesque iaculis malesuada. Pellentesque scelerisque, purus non porta dictum, neque urna bibendum dolor, eget tristique ipsum metus fringilla dolor. Nullam sed accumsan sapien. Vestibulum in placerat magna. Sed justo lacus, volutpat rhoncus odio luctus, ornare adipiscing mauris. Vivamus erat sem, egestas et lectus eget, varius cursus odio. Duis posuere lacus sit amet urna bibendum, id iaculis eros ultrices. Vestibulum a ultrices ante.

    -
    -
    - -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet orci ut nisi adipiscing ultrices. Sed pellentesque iaculis malesuada. Pellentesque scelerisque, purus non porta dictum, neque urna bibendum dolor, eget tristique ipsum metus fringilla dolor. Nullam sed accumsan sapien. Vestibulum in placerat magna. Sed justo lacus, volutpat rhoncus odio luctus, ornare adipiscing mauris. Vivamus erat sem, egestas et lectus eget, varius cursus odio. Duis posuere lacus sit amet urna bibendum, id iaculis eros ultrices. Vestibulum a ultrices ante.

    - -

    Pellentesque vitae eleifend nisl, non accumsan tellus. Maecenas nec libero non tellus tincidunt mollis porttitor sed arcu. Donec ultricies nulla vitae eros lacinia, vel congue sem auctor. Vivamus convallis, urna ac tincidunt malesuada, lectus erat convallis metus, a hendrerit massa augue accumsan magna. Nulla mattis tellus elit, nec congue magna scelerisque eget. Aliquam posuere nisi augue, posuere sodales nisi iaculis eu. Donec fermentum urna id nibh sagittis fermentum sit amet sed enim. Aliquam neque elit, pretium elementum nunc a, faucibus accumsan lorem. Etiam pulvinar odio et hendrerit tincidunt. Suspendisse tempus eros lacus, in convallis velit mollis ut. Aenean congue, justo eleifend ultricies malesuada, nunc nunc molestie mauris, eget placerat libero eros vel nisi. Quisque diam arcu, mollis ac laoreet vitae, varius et sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis in vehicula sapien. Nunc feugiat porta elit nec volutpat.

    - -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet orci ut nisi adipiscing ultrices. Sed pellentesque iaculis malesuada. Pellentesque scelerisque, purus non porta dictum, neque urna bibendum dolor, eget tristique ipsum metus fringilla dolor. Nullam sed accumsan sapien. Vestibulum in placerat magna. Sed justo lacus, volutpat rhoncus odio luctus, ornare adipiscing mauris. Vivamus erat sem, egestas et lectus eget, varius cursus odio. Duis posuere lacus sit amet urna bibendum, id iaculis eros ultrices. Vestibulum a ultrices ante.

    - -
    -

    Title

    -
    -

    The EagleApollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on [[July 20, 1969, at 20:18 UTC]]. Armstrong became the first to step onto the lunar surface 6 hours later on [[July 21 at 02:56 UTC]].

    - -
      -
    • Foo!
    • -
    • Bar!
    • -
    -
    -
    - -

    Ut eget ipsum a sapien porta ultrices. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus mi lacus, pharetra eu bibendum blandit, tristique sit amet leo. Integer eu nulla nec magna vulputate blandit. Praesent mattis quis ante eget adipiscing. Nulla vel tempus risus, in placerat velit. Mauris sed nibh at elit posuere laoreet. Morbi non sapien sed nunc fringilla imperdiet.

    -
    - - - - diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/widgetstyles.html b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/widgetstyles.html deleted file mode 100644 index 9abfedd2fc..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/dev/widgetstyles.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - Applying styles to widgets — CKEditor Sample - - - - - - - -

    Applying styles to widgets

    - -

    Classic (iframe-based) Sample

    - - -

    Inline Sample

    -
    -

    Apollo 11

    - -
    - Saturn V -
    Roll out of Saturn V on launch pad
    -
    - -

    Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on [[July 20, 1969, at 20:18 UTC]]. Armstrong became the first to step onto the lunar surface 6 hours later on [[July 21 at 02:56 UTC]].

    - -

    Armstrong spent about three and a half two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5 kg) of lunar material for return to Earth. A third member of the mission, Michael Collins, piloted the command spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.

    - -

    Broadcasting and quotes

    - -

    Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:

    - -
    -

    One small step for [a] man, one giant leap for mankind.

    -
    - -

    \( \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) \)

    - -

    Apollo 11 effectively ended the Space Race and fulfilled a national goal proposed in 1961 by the late U.S. President John F. Kennedy in a speech before the United States Congress:

    - -
    -

    [...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.

    -
    - -
    - The Eagle -
    The Eagle in lunar orbit
    -
    - -

    Technical details

    - -

    Launched by a Saturn V rocket from Kennedy Space Center in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of NASA's Apollo program. The Apollo spacecraft had three parts:

    - -
      -
    1. Command Module with a cabin for the three astronauts which was the only part which landed back on Earth
    2. -
    3. Service Module which supported the Command Module with propulsion, electrical power, oxygen and water
    4. -
    5. Lunar Module for landing on the Moon.
    6. -
    - -

    After being sent to the Moon by the Saturn V's upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the Sea of Tranquility. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the Pacific Ocean on July 24.

    -
    - - - - diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/images/handle.png b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/images/handle.png deleted file mode 100644 index ba8cda5b30..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/images/handle.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/af.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/af.js deleted file mode 100644 index a8a352cc69..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/af.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'af', { - 'move': 'Klik en trek on te beweeg' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ar.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ar.js deleted file mode 100644 index c0315b2cb9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ar.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'ar', { - 'move': 'Click and drag to move' // MISSING -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ca.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ca.js deleted file mode 100644 index 66415ee6e3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ca.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'ca', { - 'move': 'Clicar i arrossegar per moure' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/cs.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/cs.js deleted file mode 100644 index 1a2f82a96c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/cs.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'cs', { - 'move': 'Klepněte a táhněte pro přesunutí' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/cy.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/cy.js deleted file mode 100644 index 1863cb6f49..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/cy.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'cy', { - 'move': 'Clcio a llusgo i symud' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/da.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/da.js deleted file mode 100644 index 9a928c0604..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/da.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'da', { - 'move': 'Klik og træk for at flytte' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/de.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/de.js deleted file mode 100644 index 3ca7e535cc..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/de.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'de', { - 'move': 'Zum verschieben anwählen und ziehen' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/el.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/el.js deleted file mode 100644 index 35acba442e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/el.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'el', { - 'move': 'Κάνετε κλικ και σύρετε το ποντίκι για να μετακινήστε' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/en-gb.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/en-gb.js deleted file mode 100644 index 363a5474ef..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/en-gb.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'en-gb', { - 'move': 'Click and drag to move' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/en.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/en.js deleted file mode 100644 index 38e5a93f91..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/en.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'en', { - 'move': 'Click and drag to move' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/eo.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/eo.js deleted file mode 100644 index a13e9ac6af..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/eo.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'eo', { - 'move': 'klaki kaj treni por movi' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/es.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/es.js deleted file mode 100644 index 8299f1d1a8..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/es.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'es', { - 'move': 'Dar clic y arrastrar para mover' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/fa.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/fa.js deleted file mode 100644 index 2d315f3cc3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/fa.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'fa', { - 'move': 'کلیک و کشیدن برای جابجایی' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/fi.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/fi.js deleted file mode 100644 index 579c9f9238..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/fi.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'fi', { - 'move': 'Siirrä klikkaamalla ja raahaamalla' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/fr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/fr.js deleted file mode 100644 index 421a478c60..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/fr.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'fr', { - 'move': 'Cliquer et glisser pour déplacer' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/gl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/gl.js deleted file mode 100644 index 470e96f9ff..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/gl.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'gl', { - 'move': 'Prema e arrastre para mover' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/he.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/he.js deleted file mode 100644 index f295eae73f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/he.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'he', { - 'move': 'לחץ וגרור להזזה' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/hr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/hr.js deleted file mode 100644 index c6c322eb3b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/hr.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'hr', { - 'move': 'Klikni i povuci da pomakneš' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/hu.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/hu.js deleted file mode 100644 index 3b99f84487..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/hu.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'hu', { - 'move': 'Kattints és húzd a mozgatáshoz' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/it.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/it.js deleted file mode 100644 index 72ca994994..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/it.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'it', { - 'move': 'Fare clic e trascinare per spostare' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ja.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ja.js deleted file mode 100644 index 7a6e47ad35..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ja.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'ja', { - 'move': 'ドラッグして移動' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/km.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/km.js deleted file mode 100644 index a142362570..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/km.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'km', { - 'move': 'ចុច​ហើយ​ទាញ​ដើម្បី​ផ្លាស់​ទី' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ko.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ko.js deleted file mode 100644 index 01d6c64746..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ko.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'ko', { - 'move': '움직이려면 클릭 후 드래그 하세요' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ku.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ku.js deleted file mode 100644 index 622e365322..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ku.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'ku', { - 'move': 'کرتەبکە و ڕایبکێشە بۆ جوڵاندن' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/nb.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/nb.js deleted file mode 100644 index 6bb5a3757a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/nb.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'nb', { - 'move': 'Klikk og dra for å flytte' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/nl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/nl.js deleted file mode 100644 index cab2834db7..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/nl.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'nl', { - 'move': 'Klik en sleep om te verplaatsen' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/no.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/no.js deleted file mode 100644 index dd2f9577fd..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/no.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'no', { - 'move': 'Klikk og dra for å flytte' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/pl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/pl.js deleted file mode 100644 index 9f3b834c5b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/pl.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'pl', { - 'move': 'Kliknij i przeciągnij, by przenieść.' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/pt-br.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/pt-br.js deleted file mode 100644 index 6b40cc9862..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/pt-br.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'pt-br', { - 'move': 'Click e arraste para mover' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/pt.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/pt.js deleted file mode 100644 index 078d93f143..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/pt.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'pt', { - 'move': 'Clique e arraste para mover' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ru.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ru.js deleted file mode 100644 index 205c5ded0b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/ru.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'ru', { - 'move': 'Нажмите и перетащите' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sk.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sk.js deleted file mode 100644 index 182d3a1569..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sk.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'sk', { - 'move': 'Kliknite a potiahnite pre presunutie' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sl.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sl.js deleted file mode 100644 index b617e75706..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sl.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'sl', { - 'move': 'Kliknite in povlecite, da premaknete' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sq.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sq.js deleted file mode 100644 index fdb48116e9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sq.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'sq', { - 'move': 'Kliko dhe tërhiqe për ta lëvizur' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sv.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sv.js deleted file mode 100644 index da3572cdd3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/sv.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'sv', { - 'move': 'Klicka och drag för att flytta' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/tr.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/tr.js deleted file mode 100644 index e061d61eae..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/tr.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'tr', { - 'move': 'Taşımak için, tıklayın ve sürükleyin' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/tt.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/tt.js deleted file mode 100644 index 5ffacb4335..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/tt.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'tt', { - 'move': 'Күчереп куер өчен басып шудырыгыз' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/uk.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/uk.js deleted file mode 100644 index c5047c0413..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/uk.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'uk', { - 'move': 'Клікніть і потягніть для переміщення' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/vi.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/vi.js deleted file mode 100644 index 39bcb22711..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/vi.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'vi', { - 'move': 'Nhấp chuột và kéo để di chuyển' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/zh-cn.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/zh-cn.js deleted file mode 100644 index 94ef945efe..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/zh-cn.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'zh-cn', { - 'move': '点击并拖拽以移动' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/zh.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/zh.js deleted file mode 100644 index 8bd75d5378..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/lang/zh.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ -CKEDITOR.plugins.setLang( 'widget', 'zh', { - 'move': '拖曳以移動' -} ); diff --git a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/plugin.js b/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/plugin.js deleted file mode 100644 index e1d3094dba..0000000000 --- a/eperusteet/eperusteet-app/yo/app/ckeditor-plugins/widget/plugin.js +++ /dev/null @@ -1,3744 +0,0 @@ -/** - * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -/** - * @fileOverview [Widget](http://ckeditor.com/addon/widget) plugin. - */ - -'use strict'; - -( function() { - - var DRAG_HANDLER_SIZE = 15; - - CKEDITOR.plugins.add( 'widget', { - // jscs:disable maximumLineLength - lang: 'af,ar,ca,cs,cy,da,de,el,en,en-gb,eo,es,fa,fi,fr,gl,he,hr,hu,it,ja,km,ko,ku,nb,nl,no,pl,pt,pt-br,ru,sk,sl,sq,sv,tr,tt,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% - // jscs:enable maximumLineLength - requires: 'lineutils,clipboard', - onLoad: function() { - CKEDITOR.addCss( - '.cke_widget_wrapper{' + - 'position:relative;' + - 'outline:none' + - '}' + - '.cke_widget_inline{' + - 'display:inline-block' + - '}' + - '.cke_widget_wrapper:hover>.cke_widget_element{' + - 'outline:2px solid yellow;' + - 'cursor:default' + - '}' + - '.cke_widget_wrapper:hover .cke_widget_editable{' + - 'outline:2px solid yellow' + - '}' + - '.cke_widget_wrapper.cke_widget_focused>.cke_widget_element,' + - // We need higher specificity than hover style. - '.cke_widget_wrapper .cke_widget_editable.cke_widget_editable_focused{' + - 'outline:2px solid #ace' + - '}' + - '.cke_widget_editable{' + - 'cursor:text' + - '}' + - '.cke_widget_drag_handler_container{' + - 'position:absolute;' + - 'width:' + DRAG_HANDLER_SIZE + 'px;' + - 'height:0;' + - // Initially drag handler should not be visible, until its position will be - // repositioned. #11177 - 'left:-9999px;' + - 'opacity:0.75;' + - 'transition:height 0s 0.2s;' + // Delay hiding drag handler. - // Prevent drag handler from being misplaced (#11198). - 'line-height:0' + - '}' + - '.cke_widget_wrapper:hover>.cke_widget_drag_handler_container{' + - 'height:' + DRAG_HANDLER_SIZE + 'px;' + - 'transition:none' + - '}' + - '.cke_widget_drag_handler_container:hover{' + - 'opacity:1' + - '}' + - 'img.cke_widget_drag_handler{' + - 'cursor:move;' + - 'width:' + DRAG_HANDLER_SIZE + 'px;' + - 'height:' + DRAG_HANDLER_SIZE + 'px;' + - 'display:inline-block' + - '}' + - '.cke_widget_mask{' + - 'position:absolute;' + - 'top:0;' + - 'left:0;' + - 'width:100%;' + - 'height:100%;' + - 'display:block' + - '}' + - '.cke_editable.cke_widget_dragging, .cke_editable.cke_widget_dragging *{' + - 'cursor:move !important' + - '}' - ); - }, - - beforeInit: function( editor ) { - /** - * An instance of widget repository. It contains all - * {@link CKEDITOR.plugins.widget.repository#registered registered widget definitions} and - * {@link CKEDITOR.plugins.widget.repository#instances initialized instances}. - * - * editor.widgets.add( 'someName', { - * // Widget definition... - * } ); - * - * editor.widgets.registered.someName; // -> Widget definition - * - * @since 4.3 - * @readonly - * @property {CKEDITOR.plugins.widget.repository} widgets - * @member CKEDITOR.editor - */ - editor.widgets = new Repository( editor ); - }, - - afterInit: function( editor ) { - addWidgetButtons( editor ); - setupContextMenu( editor ); - } - } ); - - /** - * Widget repository. It keeps track of all {@link #registered registered widget definitions} and - * {@link #instances initialized instances}. An instance of the repository is available under - * the {@link CKEDITOR.editor#widgets} property. - * - * @class CKEDITOR.plugins.widget.repository - * @mixins CKEDITOR.event - * @constructor Creates a widget repository instance. Note that the widget plugin automatically - * creates a repository instance which is available under the {@link CKEDITOR.editor#widgets} property. - * @param {CKEDITOR.editor} editor The editor instance for which the repository will be created. - */ - function Repository( editor ) { - /** - * The editor instance for which this repository was created. - * - * @readonly - * @property {CKEDITOR.editor} editor - */ - this.editor = editor; - - /** - * A hash of registered widget definitions (definition name => {@link CKEDITOR.plugins.widget.definition}). - * - * To register a definition use the {@link #add} method. - * - * @readonly - */ - this.registered = {}; - - /** - * An object containing initialized widget instances (widget id => {@link CKEDITOR.plugins.widget}). - * - * @readonly - */ - this.instances = {}; - - /** - * An array of selected widget instances. - * - * @readonly - * @property {CKEDITOR.plugins.widget[]} selected - */ - this.selected = []; - - /** - * The focused widget instance. See also {@link CKEDITOR.plugins.widget#event-focus} - * and {@link CKEDITOR.plugins.widget#event-blur} events. - * - * editor.on( 'selectionChange', function() { - * if ( editor.widgets.focused ) { - * // Do something when a widget is focused... - * } - * } ); - * - * @readonly - * @property {CKEDITOR.plugins.widget} focused - */ - this.focused = null; - - /** - * The widget instance that contains the nested editable which is currently focused. - * - * @readonly - * @property {CKEDITOR.plugins.widget} widgetHoldingFocusedEditable - */ - this.widgetHoldingFocusedEditable = null; - - this._ = { - nextId: 0, - upcasts: [], - upcastCallbacks: [], - filters: {} - }; - - setupWidgetsLifecycle( this ); - setupSelectionObserver( this ); - setupMouseObserver( this ); - setupKeyboardObserver( this ); - setupDragAndDrop( this ); - setupNativeCutAndCopy( this ); - } - - Repository.prototype = { - /** - * Minimum interval between selection checks. - * - * @private - */ - MIN_SELECTION_CHECK_INTERVAL: 500, - - /** - * Adds a widget definition to the repository. Fires the {@link CKEDITOR.editor#widgetDefinition} event - * which allows to modify the widget definition which is going to be registered. - * - * @param {String} name The name of the widget definition. - * @param {CKEDITOR.plugins.widget.definition} widgetDef Widget definition. - * @returns {CKEDITOR.plugins.widget.definition} - */ - add: function( name, widgetDef ) { - // Create prototyped copy of original widget definition, so we won't modify it. - widgetDef = CKEDITOR.tools.prototypedCopy( widgetDef ); - widgetDef.name = name; - - widgetDef._ = widgetDef._ || {}; - - this.editor.fire( 'widgetDefinition', widgetDef ); - - if ( widgetDef.template ) - widgetDef.template = new CKEDITOR.template( widgetDef.template ); - - addWidgetCommand( this.editor, widgetDef ); - addWidgetProcessors( this, widgetDef ); - - this.registered[ name ] = widgetDef; - - return widgetDef; - }, - - /** - * Adds a callback for element upcasting. Each callback will be executed - * for every element which is later tested by upcast methods. If a callback - * returns `false`, the element will not be upcasted. - * - * // Images with the "banner" class will not be upcasted (e.g. to the image widget). - * editor.widgets.addUpcastCallback( function( element ) { - * if ( element.name == 'img' && element.hasClass( 'banner' ) ) - * return false; - * } ); - * - * @param {Function} callback - * @param {CKEDITOR.htmlParser.element} callback.element - */ - addUpcastCallback: function( callback ) { - this._.upcastCallbacks.push( callback ); - }, - - /** - * Checks the selection to update widget states (selection and focus). - * - * This method is triggered by the {@link #event-checkSelection} event. - */ - checkSelection: function() { - var sel = this.editor.getSelection(), - selectedElement = sel.getSelectedElement(), - updater = stateUpdater( this ), - widget; - - // Widget is focused so commit and finish checking. - if ( selectedElement && ( widget = this.getByElement( selectedElement, true ) ) ) - return updater.focus( widget ).select( widget ).commit(); - - var range = sel.getRanges()[ 0 ]; - - // No ranges or collapsed range mean that nothing is selected, so commit and finish checking. - if ( !range || range.collapsed ) - return updater.commit(); - - // Range is not empty, so create walker checking for wrappers. - var walker = new CKEDITOR.dom.walker( range ), - wrapper; - - walker.evaluator = isDomWidgetWrapper; - - while ( ( wrapper = walker.next() ) ) - updater.select( this.getByElement( wrapper ) ); - - updater.commit(); - }, - - /** - * Checks if all widget instances are still present in the DOM. - * Destroys those instances that are not present. - * Reinitializes widgets on widget wrappers for which widget instances - * cannot be found. - * - * This method triggers the {@link #event-checkWidgets} event whose listeners - * can cancel the method's execution or modify its options. - * - * @param [options] The options object. - * @param {Boolean} [options.initOnlyNew] Initializes widgets only on newly wrapped - * widget elements (those which still have the `cke_widget_new` class). When this option is - * set to `true`, widgets which were invalidated (e.g. by replacing with a cloned DOM structure) - * will not be reinitialized. This makes the check faster. - * @param {Boolean} [options.focusInited] If only one widget is initialized by - * the method, it will be focused. - */ - checkWidgets: function( options ) { - this.fire( 'checkWidgets', CKEDITOR.tools.copy( options || {} ) ); - }, - - /** - * Removes the widget from the editor and moves the selection to the closest - * editable position if the widget was focused before. - * - * @param {CKEDITOR.plugins.widget} widget The widget instance to be deleted. - */ - del: function( widget ) { - if ( this.focused === widget ) { - var editor = widget.editor, - range = editor.createRange(), - found; - - // If haven't found place for caret on the default side, - // try to find it on the other side. - if ( !( found = range.moveToClosestEditablePosition( widget.wrapper, true ) ) ) - found = range.moveToClosestEditablePosition( widget.wrapper, false ); - - if ( found ) - editor.getSelection().selectRanges( [ range ] ); - } - - widget.wrapper.remove(); - this.destroy( widget, true ); - }, - - /** - * Destroys the widget instance. - * - * @param {CKEDITOR.plugins.widget} widget The widget instance to be destroyed. - * @param {Boolean} [offline] Whether the widget is offline (detached from the DOM tree) — - * in this case the DOM (attributes, classes, etc.) will not be cleaned up. - */ - destroy: function( widget, offline ) { - if ( this.widgetHoldingFocusedEditable === widget ) - setFocusedEditable( this, widget, null, offline ); - - widget.destroy( offline ); - delete this.instances[ widget.id ]; - this.fire( 'instanceDestroyed', widget ); - }, - - /** - * Destroys all widget instances. - * - * @param {Boolean} [offline] Whether the widgets are offline (detached from the DOM tree) — - * in this case the DOM (attributes, classes, etc.) will not be cleaned up. - */ - destroyAll: function( offline ) { - var instances = this.instances, - widget; - - for ( var id in instances ) { - widget = instances[ id ]; - this.destroy( widget, offline ); - } - }, - - /** - * Finalizes a process of widget creation. This includes: - * - * * inserting widget element into editor, - * * marking widget instance as ready (see {@link CKEDITOR.plugins.widget#event-ready}), - * * focusing widget instance. - * - * This method is used by the default widget's command and is called - * after widget's dialog (if set) is closed. It may also be used in a - * customized process of widget creation and insertion. - * - * widget.once( 'edit', function() { - * // Finalize creation only of not ready widgets. - * if ( widget.isReady() ) - * return; - * - * // Cancel edit event to prevent automatic widget insertion. - * evt.cancel(); - * - * CustomDialog.open( widget.data, function saveCallback( savedData ) { - * // Cache the container, because widget may be destroyed while saving data, - * // if this process will require some deep transformations. - * var container = widget.wrapper.getParent(); - * - * widget.setData( savedData ); - * - * // Widget will be retrieved from container and inserted into editor. - * editor.widgets.finalizeCreation( container ); - * } ); - * } ); - * - * @param {CKEDITOR.dom.element/CKEDITOR.dom.documentFragment} container The element - * or document fragment which contains widget wrapper. The container is used, so before - * finalizing creation the widget can be freely transformed (even destroyed and reinitialized). - */ - finalizeCreation: function( container ) { - var wrapper = container.getFirst(); - if ( wrapper && isDomWidgetWrapper( wrapper ) ) { - this.editor.insertElement( wrapper ); - - var widget = this.getByElement( wrapper ); - // Fire postponed #ready event. - widget.ready = true; - widget.fire( 'ready' ); - widget.focus(); - } - }, - - /** - * Finds a widget instance which contains a given element. The element will be the {@link CKEDITOR.plugins.widget#wrapper wrapper} - * of the returned widget or a descendant of this {@link CKEDITOR.plugins.widget#wrapper wrapper}. - * - * editor.widgets.getByElement( someWidget.wrapper ); // -> someWidget - * editor.widgets.getByElement( someWidget.parts.caption ); // -> someWidget - * - * // Check wrapper only: - * editor.widgets.getByElement( someWidget.wrapper, true ); // -> someWidget - * editor.widgets.getByElement( someWidget.parts.caption, true ); // -> null - * - * @param {CKEDITOR.dom.element} element The element to be checked. - * @param {Boolean} [checkWrapperOnly] If set to `true`, the method will not check wrappers' descendants. - * @returns {CKEDITOR.plugins.widget} The widget instance or `null`. - */ - getByElement: ( function() { - var validWrapperElements = { div: 1, span: 1 }; - function getWidgetId( element ) { - return element.is( validWrapperElements ) && element.data( 'cke-widget-id' ); - } - - return function( element, checkWrapperOnly ) { - if ( !element ) - return null; - - var id = getWidgetId( element ); - - // There's no need to check element parents if element is a wrapper. - if ( !checkWrapperOnly && !id ) { - var limit = this.editor.editable(); - - // Try to find a closest ascendant which is a widget wrapper. - do { - element = element.getParent(); - } while ( element && !element.equals( limit ) && !( id = getWidgetId( element ) ) ); - } - - return this.instances[ id ] || null; - }; - } )(), - - /** - * Initializes a widget on a given element if the widget has not been initialized on it yet. - * - * @param {CKEDITOR.dom.element} element The future widget element. - * @param {String/CKEDITOR.plugins.widget.definition} [widgetDef] Name of a widget or a widget definition. - * The widget definition should be previously registered by using the - * {@link CKEDITOR.plugins.widget.repository#add} method. - * @param [startupData] Widget startup data (has precedence over default one). - * @returns {CKEDITOR.plugins.widget} The widget instance or `null` if a widget could not be initialized on - * a given element. - */ - initOn: function( element, widgetDef, startupData ) { - if ( !widgetDef ) - widgetDef = this.registered[ element.data( 'widget' ) ]; - else if ( typeof widgetDef == 'string' ) - widgetDef = this.registered[ widgetDef ]; - - if ( !widgetDef ) - return null; - - // Wrap element if still wasn't wrapped (was added during runtime by method that skips dataProcessor). - var wrapper = this.wrapElement( element, widgetDef.name ); - - if ( wrapper ) { - // Check if widget wrapper is new (widget hasn't been initialized on it yet). - // This class will be removed by widget constructor to avoid locking snapshot twice. - if ( wrapper.hasClass( 'cke_widget_new' ) ) { - var widget = new Widget( this, this._.nextId++, element, widgetDef, startupData ); - - // Widget could be destroyed when initializing it. - if ( widget.isInited() ) { - this.instances[ widget.id ] = widget; - - return widget; - } else { - return null; - } - } - - // Widget already has been initialized, so try to get widget by element. - // Note - it may happen that other instance will returned than the one created above, - // if for example widget was destroyed and reinitialized. - return this.getByElement( element ); - } - - // No wrapper means that there's no widget for this element. - return null; - }, - - /** - * Initializes widgets on all elements which were wrapped by {@link #wrapElement} and - * have not been initialized yet. - * - * @param {CKEDITOR.dom.element} [container=editor.editable()] The container which will be checked for not - * initialized widgets. Defaults to editor's {@link CKEDITOR.editor#editable editable} element. - * @returns {CKEDITOR.plugins.widget[]} Array of widget instances which have been initialized. - * Note: Only first-level widgets are returned — without nested widgets. - */ - initOnAll: function( container ) { - var newWidgets = ( container || this.editor.editable() ).find( '.cke_widget_new' ), - newInstances = [], - instance; - - for ( var i = newWidgets.count(); i--; ) { - instance = this.initOn( newWidgets.getItem( i ).getFirst( isDomWidgetElement ) ); - if ( instance ) - newInstances.push( instance ); - } - - return newInstances; - }, - - /** - * Parses element classes string and returns an object - * whose keys contain class names. Skips all `cke_*` classes. - * - * This method is used by the {@link CKEDITOR.plugins.widget#getClasses} method and - * may be used when overriding that method. - * - * @since 4.4 - * @param {String} classes String (value of `class` attribute). - * @returns {Object} Object containing classes or `null` if no classes found. - */ - parseElementClasses: function( classes ) { - if ( !classes ) - return null; - - classes = CKEDITOR.tools.trim( classes ).split( /\s+/ ); - - var cl, - obj = {}, - hasClasses = 0; - - while ( ( cl = classes.pop() ) ) { - if ( cl.indexOf( 'cke_' ) == -1 ) - obj[ cl ] = hasClasses = 1; - } - - return hasClasses ? obj : null; - }, - - /** - * Wraps an element with a widget's non-editable container. - * - * If this method is called on an {@link CKEDITOR.htmlParser.element}, then it will - * also take care of fixing the DOM after wrapping (the wrapper may not be allowed in element's parent). - * - * @param {CKEDITOR.dom.element/CKEDITOR.htmlParser.element} element The widget element to be wrapped. - * @param {String} [widgetName] The name of the widget definition. Defaults to element's `data-widget` - * attribute value. - * @returns {CKEDITOR.dom.element/CKEDITOR.htmlParser.element} The wrapper element or `null` if - * the widget definition of this name is not registered. - */ - wrapElement: function( element, widgetName ) { - var wrapper = null, - widgetDef, - isInline; - - if ( element instanceof CKEDITOR.dom.element ) { - widgetDef = this.registered[ widgetName || element.data( 'widget' ) ]; - if ( !widgetDef ) - return null; - - // Do not wrap already wrapped element. - wrapper = element.getParent(); - if ( wrapper && wrapper.type == CKEDITOR.NODE_ELEMENT && wrapper.data( 'cke-widget-wrapper' ) ) - return wrapper; - - // If attribute isn't already set (e.g. for pasted widget), set it. - if ( !element.hasAttribute( 'data-cke-widget-keep-attr' ) ) - element.data( 'cke-widget-keep-attr', element.data( 'widget' ) ? 1 : 0 ); - if ( widgetName ) - element.data( 'widget', widgetName ); - - isInline = isWidgetInline( widgetDef, element.getName() ); - - wrapper = new CKEDITOR.dom.element( isInline ? 'span' : 'div' ); - wrapper.setAttributes( getWrapperAttributes( isInline ) ); - - wrapper.data( 'cke-display-name', widgetDef.pathName ? widgetDef.pathName : element.getName() ); - - // Replace element unless it is a detached one. - if ( element.getParent( true ) ) - wrapper.replace( element ); - element.appendTo( wrapper ); - } - else if ( element instanceof CKEDITOR.htmlParser.element ) { - widgetDef = this.registered[ widgetName || element.attributes[ 'data-widget' ] ]; - if ( !widgetDef ) - return null; - - wrapper = element.parent; - if ( wrapper && wrapper.type == CKEDITOR.NODE_ELEMENT && wrapper.attributes[ 'data-cke-widget-wrapper' ] ) - return wrapper; - - // If attribute isn't already set (e.g. for pasted widget), set it. - if ( !( 'data-cke-widget-keep-attr' in element.attributes ) ) - element.attributes[ 'data-cke-widget-keep-attr' ] = element.attributes[ 'data-widget' ] ? 1 : 0; - if ( widgetName ) - element.attributes[ 'data-widget' ] = widgetName; - - isInline = isWidgetInline( widgetDef, element.name ); - - wrapper = new CKEDITOR.htmlParser.element( isInline ? 'span' : 'div', getWrapperAttributes( isInline ) ); - - wrapper.attributes[ 'data-cke-display-name' ] = widgetDef.pathName ? widgetDef.pathName : element.name; - - var parent = element.parent, - index; - - // Don't detach already detached element. - if ( parent ) { - index = element.getIndex(); - element.remove(); - } - - wrapper.add( element ); - - // Insert wrapper fixing DOM (splitting parents if wrapper is not allowed inside them). - parent && insertElement( parent, index, wrapper ); - } - - return wrapper; - }, - - // Expose for tests. - _tests_getNestedEditable: getNestedEditable, - _tests_createEditableFilter: createEditableFilter - }; - - CKEDITOR.event.implementOn( Repository.prototype ); - - /** - * An event fired when a widget instance is created, but before it is fully initialized. - * - * @event instanceCreated - * @param {CKEDITOR.plugins.widget} data The widget instance. - */ - - /** - * An event fired when a widget instance was destroyed. - * - * See also {@link CKEDITOR.plugins.widget#event-destroy}. - * - * @event instanceDestroyed - * @param {CKEDITOR.plugins.widget} data The widget instance. - */ - - /** - * An event fired to trigger the selection check. - * - * See the {@link #method-checkSelection} method. - * - * @event checkSelection - */ - - /** - * An event fired by the the {@link #method-checkWidgets} method. - * - * It can be canceled in order to stop the {@link #method-checkWidgets} - * method execution or the event listener can modify the method's options. - * - * @event checkWidgets - * @param [data] - * @param {Boolean} [data.initOnlyNew] Initialize widgets only on newly wrapped - * widget elements (those which still have the `cke_widget_new` class). When this option is - * set to `true`, widgets which were invalidated (e.g. by replacing with a cloned DOM structure) - * will not be reinitialized. This makes the check faster. - * @param {Boolean} [data.focusInited] If only one widget is initialized by - * the method, it will be focused. - */ - - - /** - * An instance of a widget. Together with {@link CKEDITOR.plugins.widget.repository} these - * two classes constitute the core of the Widget System. - * - * Note that neither the repository nor the widget instances can be created by using their constructors. - * A repository instance is automatically set up by the Widget plugin and is accessible under - * {@link CKEDITOR.editor#widgets}, while widget instances are created and destroyed by the repository. - * - * To create a widget, first you need to {@link CKEDITOR.plugins.widget.repository#add register} its - * {@link CKEDITOR.plugins.widget.definition definition}: - * - * editor.widgets.add( 'simplebox', { - * upcast: function( element ) { - * // Defines which elements will become widgets. - * if ( element.hasClass( 'simplebox' ) ) - * return true; - * }, - * init: function() { - * // ... - * } - * } ); - * - * Once the widget definition is registered, widgets will be automatically - * created when loading data: - * - * editor.setData( '
    foo
    ', function() { - * console.log( editor.widgets.instances ); // -> An object containing one instance. - * } ); - * - * It is also possible to create instances during runtime by using a command - * (if a {@link CKEDITOR.plugins.widget.definition#template} property was defined): - * - * // You can execute an automatically defined command to - * // insert a new simplebox widget or edit the one currently focused. - * editor.execCommand( 'simplebox' ); - * - * Or in a completely custom way: - * - * var element = editor.document.createElement( 'div' ); - * editor.insertElement( element ); - * var widget = editor.widgets.initOn( element, 'simplebox' ); - * - * @since 4.3 - * @class CKEDITOR.plugins.widget - * @mixins CKEDITOR.event - * @extends CKEDITOR.plugins.widget.definition - * @constructor Creates an instance of the widget class. Do not use it directly, but instead initialize widgets - * by using the {@link CKEDITOR.plugins.widget.repository#initOn} method or by the upcasting system. - * @param {CKEDITOR.plugins.widget.repository} widgetsRepo - * @param {Number} id Unique ID of this widget instance. - * @param {CKEDITOR.dom.element} element The widget element. - * @param {CKEDITOR.plugins.widget.definition} widgetDef Widget's registered definition. - * @param [startupData] Initial widget data. This data object will overwrite the default data and - * the data loaded from the DOM. - */ - function Widget( widgetsRepo, id, element, widgetDef, startupData ) { - var editor = widgetsRepo.editor; - - // Extend this widget with widgetDef-specific methods and properties. - CKEDITOR.tools.extend( this, widgetDef, { - /** - * The editor instance. - * - * @readonly - * @property {CKEDITOR.editor} - */ - editor: editor, - - /** - * This widget's unique (per editor instance) ID. - * - * @readonly - * @property {Number} - */ - id: id, - - /** - * Whether this widget is an inline widget (based on an inline element unless - * forced otherwise by {@link CKEDITOR.plugins.widget.definition#inline}). - * - * **Note:** This option does not allow to turn a block element into an inline widget. - * However, it makes it possible to turn an inline element into a block widget or to - * force a correct type in case when automatic recognition fails. - * - * @readonly - * @property {Boolean} - */ - inline: element.getParent().getName() == 'span', - - /** - * The widget element — the element on which the widget was initialized. - * - * @readonly - * @property {CKEDITOR.dom.element} element - */ - element: element, - - /** - * Widget's data object. - * - * The data can only be set by using the {@link #setData} method. - * Changes made to the data fire the {@link #event-data} event. - * - * @readonly - */ - data: CKEDITOR.tools.extend( {}, typeof widgetDef.defaults == 'function' ? widgetDef.defaults() : widgetDef.defaults ), - - /** - * Indicates if a widget is data-ready. Set to `true` when data from all sources - * ({@link CKEDITOR.plugins.widget.definition#defaults}, set in the - * {@link #init} method, loaded from the widget's element and startup data coming from the constructor) - * are finally loaded. This is immediately followed by the first {@link #event-data}. - * - * @readonly - */ - dataReady: false, - - /** - * Whether a widget instance was initialized. This means that: - * - * * An instance was created, - * * Its properties were set, - * * The `init` method was executed. - * - * **Note**: The first {@link #event-data} event could not be fired yet which - * means that the widget's DOM has not been set up yet. Wait for the {@link #event-ready} - * event to be notified when a widget is fully initialized and ready. - * - * **Note**: Use the {@link #isInited} method to check whether a widget is initialized and - * has not been destroyed. - * - * @readonly - */ - inited: false, - - /** - * Whether a widget instance is ready. This means that the widget is {@link #inited} and - * that its DOM was finally set up. - * - * **Note:** Use the {@link #isReady} method to check whether a widget is ready and - * has not been destroyed. - * - * @readonly - */ - ready: false, - - // Revert what widgetDef could override (automatic #edit listener). - edit: Widget.prototype.edit, - - /** - * The nested editable element which is currently focused. - * - * @readonly - * @property {CKEDITOR.plugins.widget.nestedEditable} - */ - focusedEditable: null, - - /** - * The widget definition from which this instance was created. - * - * @readonly - * @property {CKEDITOR.plugins.widget.definition} definition - */ - definition: widgetDef, - - /** - * Link to the widget repository which created this instance. - * - * @readonly - * @property {CKEDITOR.plugins.widget.repository} repository - */ - repository: widgetsRepo, - - draggable: widgetDef.draggable !== false, - - // WAAARNING: Overwrite widgetDef's priv object, because otherwise violent unicorn's gonna visit you. - _: { - downcastFn: ( widgetDef.downcast && typeof widgetDef.downcast == 'string' ) ? - widgetDef.downcasts[ widgetDef.downcast ] : widgetDef.downcast - } - }, true ); - - /** - * An object of widget component elements. - * - * For every `partName => selector` pair in {@link CKEDITOR.plugins.widget.definition#parts}, - * one `partName => element` pair is added to this object during the widget initialization. - * - * @readonly - * @property {Object} parts - */ - - /** - * The template which will be used to create a new widget element (when the widget's command is executed). - * It will be populated with {@link #defaults default values}. - * - * @readonly - * @property {CKEDITOR.template} template - */ - - /** - * The widget wrapper — a non-editable `div` or `span` element (depending on {@link #inline}) - * which is a parent of the {@link #element} and widget compontents like the drag handler and the {@link #mask}. - * It is the outermost widget element. - * - * @readonly - * @property {CKEDITOR.dom.element} wrapper - */ - - widgetsRepo.fire( 'instanceCreated', this ); - - setupWidget( this, widgetDef ); - - this.init && this.init(); - - // Finally mark widget as inited. - this.inited = true; - - setupWidgetData( this, startupData ); - - // If at some point (e.g. in #data listener) widget hasn't been destroyed - // and widget is already attached to document then fire #ready. - if ( this.isInited() && editor.editable().contains( this.wrapper ) ) { - this.ready = true; - this.fire( 'ready' ); - } - } - - Widget.prototype = { - /** - * Adds a class to the widget element. This method is used by - * the {@link #applyStyle} method and should be overriden by widgets - * which should handle classes differently (e.g. add them to other elements). - * - * **Note**: This method should not be used directly. Use the {@link #setData} method to - * set the `classes` property. Read more in the {@link #setData} documentation. - * - * See also: {@link #removeClass}, {@link #hasClass}, {@link #getClasses}. - * - * @since 4.4 - * @param {String} className The class name to be added. - */ - addClass: function( className ) { - this.element.addClass( className ); - }, - - /** - * Applies the specified style to the widget. It is highly recommended to use the - * {@link CKEDITOR.editor#applyStyle} or {@link CKEDITOR.style#apply} methods instead of - * using this method directly, because unlike editor's and style's methods, this one - * does not perform any checks. - * - * By default this method handles only classes defined in the style. It clones existing - * classes which are stored in the {@link #property-data widget data}'s `classes` property, - * adds new classes, and calls the {@link #setData} method if at least one new class was added. - * Then, using the {@link #event-data} event listener widget applies modifications passing - * new classes to the {@link #addClass} method. - * - * If you need to handle classes differently than in the default way, you can override the - * {@link #addClass} and related methods. You can also handle other style properties than `classes` - * by overriding this method. - * - * See also: {@link #checkStyleActive}, {@link #removeStyle}. - * - * @since 4.4 - * @param {CKEDITOR.style} style The custom widget style to be applied. - */ - applyStyle: function( style ) { - applyRemoveStyle( this, style, 1 ); - }, - - /** - * Checks if the specified style is applied to this widget. It is highly recommended to use the - * {@link CKEDITOR.style#checkActive} method instead of using this method directly, - * because unlike style's method, this one does not perform any checks. - * - * By default this method handles only classes defined in the style and passes - * them to the {@link #hasClass} method. You can override these methods to handle classes - * differently or to handle more of the style properties. - * - * See also: {@link #applyStyle}, {@link #removeStyle}. - * - * @since 4.4 - * @param {CKEDITOR.style} style The custom widget style to be checked. - * @returns {Boolean} Whether the style is applied to this widget. - */ - checkStyleActive: function( style ) { - var classes = getStyleClasses( style ), - cl; - - if ( !classes ) - return false; - - while ( ( cl = classes.pop() ) ) { - if ( !this.hasClass( cl ) ) - return false; - } - return true; - }, - - /** - * Destroys this widget instance. - * - * Use {@link CKEDITOR.plugins.widget.repository#destroy} when possible instead of this method. - * - * This method fires the {#event-destroy} event. - * - * @param {Boolean} [offline] Whether a widget is offline (detached from the DOM tree) — - * in this case the DOM (attributes, classes, etc.) will not be cleaned up. - */ - destroy: function( offline ) { - this.fire( 'destroy' ); - - if ( this.editables ) { - for ( var name in this.editables ) - this.destroyEditable( name, offline ); - } - - if ( !offline ) { - if ( this.element.data( 'cke-widget-keep-attr' ) == '0' ) - this.element.removeAttribute( 'data-widget' ); - this.element.removeAttributes( [ 'data-cke-widget-data', 'data-cke-widget-keep-attr' ] ); - this.element.removeClass( 'cke_widget_element' ); - this.element.replace( this.wrapper ); - } - - this.wrapper = null; - }, - - /** - * Destroys a nested editable. - * - * @param {String} editableName Nested editable name. - * @param {Boolean} [offline] See {@link #method-destroy} method. - */ - destroyEditable: function( editableName, offline ) { - var editable = this.editables[ editableName ]; - - editable.removeListener( 'focus', onEditableFocus ); - editable.removeListener( 'blur', onEditableBlur ); - this.editor.focusManager.remove( editable ); - - if ( !offline ) { - editable.removeClass( 'cke_widget_editable' ); - editable.removeClass( 'cke_widget_editable_focused' ); - editable.removeAttributes( [ 'contenteditable', 'data-cke-widget-editable', 'data-cke-enter-mode' ] ); - } - - delete this.editables[ editableName ]; - }, - - /** - * Starts widget editing. - * - * This method fires the {@link CKEDITOR.plugins.widget#event-edit} event - * which may be canceled in order to prevent it from opening a dialog window. - * - * The dialog window name is obtained from the event's data `dialog` property or - * from {@link CKEDITOR.plugins.widget.definition#dialog}. - * - * @returns {Boolean} Returns `true` if a dialog window was opened. - */ - edit: function() { - var evtData = { dialog: this.dialog }, - that = this; - - // Edit event was blocked, but there's no dialog to be automatically opened. - if ( this.fire( 'edit', evtData ) === false || !evtData.dialog ) - return false; - - this.editor.openDialog( evtData.dialog, function( dialog ) { - var showListener, - okListener; - - // Allow to add a custom dialog handler. - if ( that.fire( 'dialog', dialog ) === false ) - return; - - showListener = dialog.on( 'show', function() { - dialog.setupContent( that ); - } ); - - okListener = dialog.on( 'ok', function() { - // Commit dialog's fields, but prevent from - // firing data event for every field. Fire only one, - // bulk event at the end. - var dataChanged, - dataListener = that.on( 'data', function( evt ) { - dataChanged = 1; - evt.cancel(); - }, null, null, 0 ); - - // Create snapshot preceeding snapshot with changed widget... - // TODO it should not be required, but it is and I found similar - // code in dialog#ok listener in dialog/plugin.js. - that.editor.fire( 'saveSnapshot' ); - dialog.commitContent( that ); - - dataListener.removeListener(); - if ( dataChanged ) { - that.fire( 'data', that.data ); - that.editor.fire( 'saveSnapshot' ); - } - } ); - - dialog.once( 'hide', function() { - showListener.removeListener(); - okListener.removeListener(); - } ); - } ); - - return true; - }, - - /** - * Returns widget element classes parsed to an object. This method - * is used to populate the `classes` property of widget's {@link #property-data}. - * - * This method reuses {@link CKEDITOR.plugins.widget.repository#parseElementClasses}. - * It should be overriden if a widget should handle classes differently (e.g. on other elements). - * - * See also: {@link #removeClass}, {@link #addClass}, {@link #hasClass}. - * - * @since 4.4 - * @returns {Object} - */ - getClasses: function() { - return this.repository.parseElementClasses( this.element.getAttribute( 'class' ) ); - }, - - /** - * Checks if the widget element has specified class. This method is used by - * the {@link #checkStyleActive} method and should be overriden by widgets - * which should handle classes differently (e.g. on other elements). - * - * See also: {@link #removeClass}, {@link #addClass}, {@link #getClasses}. - * - * @since 4.4 - * @param {String} className The class to be checked. - * @param {Boolean} Whether a widget has specified class. - */ - hasClass: function( className ) { - return this.element.hasClass( className ); - }, - - /** - * Initializes a nested editable. - * - * **Note**: Only elements from {@link CKEDITOR.dtd#$editable} may become editables. - * - * @param {String} editableName The nested editable name. - * @param {CKEDITOR.plugins.widget.nestedEditable.definition} definition The definition of the nested editable. - * @returns {Boolean} Whether an editable was successfully initialized. - */ - initEditable: function( editableName, definition ) { - var editable = this.wrapper.findOne( definition.selector ); - - if ( editable && editable.is( CKEDITOR.dtd.$editable ) ) { - editable = new NestedEditable( this.editor, editable, { - filter: createEditableFilter.call( this.repository, this.name, editableName, definition ) - } ); - this.editables[ editableName ] = editable; - - editable.setAttributes( { - contenteditable: 'true', - 'data-cke-widget-editable': editableName, - 'data-cke-enter-mode': editable.enterMode - } ); - - if ( editable.filter ) - editable.data( 'cke-filter', editable.filter.id ); - - editable.addClass( 'cke_widget_editable' ); - // This class may be left when d&ding widget which - // had focused editable. Clean this class here, not in - // cleanUpWidgetElement for performance and code size reasons. - editable.removeClass( 'cke_widget_editable_focused' ); - - if ( definition.pathName ) - editable.data( 'cke-display-name', definition.pathName ); - - this.editor.focusManager.add( editable ); - editable.on( 'focus', onEditableFocus, this ); - CKEDITOR.env.ie && editable.on( 'blur', onEditableBlur, this ); - - // Finally, process editable's data. This data wasn't processed when loading - // editor's data, becuase they need to be processed separately, with its own filters and settings. - editable.setData( editable.getHtml() ); - - return true; - } - - return false; - }, - - /** - * Checks if a widget has already been initialized and has not been destroyed yet. - * - * See {@link #inited} for more details. - * - * @returns {Boolean} - */ - isInited: function() { - return !!( this.wrapper && this.inited ); - }, - - /** - * Checks if a widget is ready and has not been destroyed yet. - * - * See {@link #property-ready} for more details. - * - * @returns {Boolean} - */ - isReady: function() { - return this.isInited() && this.ready; - }, - - /** - * Focuses a widget by selecting it. - */ - focus: function() { - var sel = this.editor.getSelection(); - - // Fake the selection before focusing editor, to avoid unpreventable viewports scrolling - // on Webkit/Blink/IE which is done because there's no selection or selection was somewhere else than widget. - if ( sel ) { - var isDirty = this.editor.checkDirty(); - - sel.fake( this.wrapper ); - - !isDirty && this.editor.resetDirty(); - } - - // Always focus editor (not only when focusManger.hasFocus is false) (because of #10483). - this.editor.focus(); - }, - - /** - * Removes a class from the widget element. This method is used by - * the {@link #removeStyle} method and should be overriden by widgets - * which should handle classes differently (e.g. on other elements). - * - * **Note**: This method should not be used directly. Use the {@link #setData} method to - * set the `classes` property. Read more in the {@link #setData} documentation. - * - * See also: {@link #hasClass}, {@link #addClass}. - * - * @since 4.4 - * @param {String} className The class to be removed. - */ - removeClass: function( className ) { - this.element.removeClass( className ); - }, - - /** - * Removes the specified style from the widget. It is highly recommended to use the - * {@link CKEDITOR.editor#removeStyle} or {@link CKEDITOR.style#remove} methods instead of - * using this method directly, because unlike editor's and style's methods, this one - * does not perform any checks. - * - * Read more about how applying/removing styles works in the {@link #applyStyle} method documentation. - * - * See also {@link #checkStyleActive}, {@link #applyStyle}, {@link #getClasses}. - * - * @since 4.4 - * @param {CKEDITOR.style} style The custom widget style to be removed. - */ - removeStyle: function( style ) { - applyRemoveStyle( this, style, 0 ); - }, - - /** - * Sets widget value(s) in the {@link #property-data} object. - * If the given value(s) modifies current ones, the {@link #event-data} event is fired. - * - * this.setData( 'align', 'left' ); - * this.data.align; // -> 'left' - * - * this.setData( { align: 'right', opened: false } ); - * this.data.align; // -> 'right' - * this.data.opened; // -> false - * - * Set values are stored in {@link #element}'s attribute (`data-cke-widget-data`), - * in a JSON string, therefore {@link #property-data} should contain - * only serializable data. - * - * **Note:** A special data property, `classes`, exists. It contains an object with - * classes which were returned by the {@link #getClasses} method during the widget initialization. - * This property is then used by the {@link #applyStyle} and {@link #removeStyle} methods. - * When it is changed (the reference to object must be changed!), the widget updates its classes by - * using the {@link #addClass} and {@link #removeClass} methods. - * - * // Adding a new class. - * var classes = CKEDITOR.tools.clone( widget.data.classes ); - * classes.newClass = 1; - * widget.setData( 'classes', classes ); - * - * // Removing a class. - * var classes = CKEDITOR.tools.clone( widget.data.classes ); - * delete classes.newClass; - * widget.setData( 'classes', classes ); - * - * @param {String/Object} keyOrData - * @param {Object} value - * @chainable - */ - setData: function( key, value ) { - var data = this.data, - modified = 0; - - if ( typeof key == 'string' ) { - if ( data[ key ] !== value ) { - data[ key ] = value; - modified = 1; - } - } - else { - var newData = key; - - for ( key in newData ) { - if ( data[ key ] !== newData[ key ] ) { - modified = 1; - data[ key ] = newData[ key ]; - } - } - } - - // Block firing data event and overwriting data element before setupWidgetData is executed. - if ( modified && this.dataReady ) { - writeDataToElement( this ); - this.fire( 'data', data ); - } - - return this; - }, - - /** - * Changes the widget's focus state. This method is executed automatically after - * a widget has been focused by the {@link #method-focus} method or a selection was moved - * out of the widget. - * - * @param {Boolean} selected Whether to select or deselect this widget. - * @chainable - */ - setFocused: function( focused ) { - this.wrapper[ focused ? 'addClass' : 'removeClass' ]( 'cke_widget_focused' ); - this.fire( focused ? 'focus' : 'blur' ); - return this; - }, - - /** - * Changes the widget's select state. This method is executed automatically after - * a widget has been selected by the {@link #method-focus} method or the selection - * was moved out of widget. - * - * @param {Boolean} selected Whether to select or deselect this widget. - * @chainable - */ - setSelected: function( selected ) { - this.wrapper[ selected ? 'addClass' : 'removeClass' ]( 'cke_widget_selected' ); - this.fire( selected ? 'select' : 'deselect' ); - return this; - }, - - /** - * Repositions drag handler according to the widget's element position. Should be called from events, like mouseover. - */ - updateDragHandlerPosition: function() { - var editor = this.editor, - domElement = this.element.$, - oldPos = this._.dragHandlerOffset, - newPos = { - x: domElement.offsetLeft, - y: domElement.offsetTop - DRAG_HANDLER_SIZE - }; - - if ( oldPos && newPos.x == oldPos.x && newPos.y == oldPos.y ) - return; - - // We need to make sure that dirty state is not changed (#11487). - var initialDirty = editor.checkDirty(); - - editor.fire( 'lockSnapshot' ); - this.dragHandlerContainer.setStyles( { - top: newPos.y + 'px', - left: newPos.x + 'px' - } ); - editor.fire( 'unlockSnapshot' ); - !initialDirty && editor.resetDirty(); - - this._.dragHandlerOffset = newPos; - } - }; - - CKEDITOR.event.implementOn( Widget.prototype ); - - /** - * An event fired when a widget is ready (fully initialized). This event is fired after: - * - * * {@link #init} is called, - * * The first {@link #event-data} event is fired, - * * A widget is attached to the document. - * - * Therefore, in case of widget creation with a command which opens a dialog window, this event - * will be delayed after the dialog window is closed and the widget is finally inserted into the document. - * - * **Note**: If your widget does not use automatic dialog window binding (i.e. you open the dialog window manually) - * or another situation in which the widget wrapper is not attached to document at the time when it is - * initialized occurs, you need to take care of firing {@link #event-ready} yourself. - * - * See also {@link #property-ready} and {@link #property-inited} properties, and - * {@link #isReady} and {@link #isInited} methods. - * - * @event ready - */ - - /** - * An event fired when a widget is about to be destroyed, but before it is - * fully torn down. - * - * @event destroy - */ - - /** - * An event fired when a widget is focused. - * - * Widget can be focused by executing {@link #method-focus}. - * - * @event focus - */ - - /** - * An event fired when a widget is blurred. - * - * @event blur - */ - - /** - * An event fired when a widget is selected. - * - * @event select - */ - - /** - * An event fired when a widget is deselected. - * - * @event deselect - */ - - /** - * An event fired by the {@link #method-edit} method. It can be canceled - * in order to stop the default action (opening a dialog window and/or - * {@link CKEDITOR.plugins.widget.repository#finalizeCreation finalizing widget creation}). - * - * @event edit - * @param data - * @param {String} data.dialog Defaults to {@link CKEDITOR.plugins.widget.definition#dialog} - * and can be changed or set by the listener. - */ - - /** - * An event fired when a dialog window for widget editing is opened. - * This event can be canceled in order to handle the editing dialog in a custom manner. - * - * @event dialog - * @param {CKEDITOR.dialog} data The opened dialog window instance. - */ - - /** - * An event fired when a key is pressed on a focused widget. - * This event is forwarded from the {@link CKEDITOR.editor#key} event and - * has the ability to block editor keystrokes if it is canceled. - * - * @event key - * @param data - * @param {Number} data.keyCode A number representing the key code (or combination). - */ - - /** - * An event fired when a widget is double clicked. - * - * **Note:** If a default editing action is executed on double click (i.e. a widget has a - * {@link CKEDITOR.plugins.widget.definition#dialog dialog} defined and the {@link #event-doubleclick} event was not - * canceled), this event will be automatically canceled, so a listener added with the default priority (10) - * will not be executed. Use a listener with low priority (e.g. 5) to be sure that it will be executed. - * - * widget.on( 'doubleclick', function( evt ) { - * console.log( 'widget#doubleclick' ); - * }, null, null, 5 ); - * - * If your widget handles double click in a special way (so the default editing action is not executed), - * make sure you cancel this event, because otherwise it will be propagated to {@link CKEDITOR.editor#doubleclick} - * and another feature may step in (e.g. a Link dialog window may be opened if your widget was inside a link). - * - * @event doubleclick - * @param data - * @param {CKEDITOR.dom.element} data.element The double-clicked element. - */ - - /** - * An event fired when the context menu is opened for a widget. - * - * @event contextMenu - * @param data The object containing context menu options to be added - * for this widget. See {@link CKEDITOR.plugins.contextMenu#addListener}. - */ - - /** - * An event fired when the widget data changed. See the {@link #setData} method and the {@link #property-data} property. - * - * @event data - */ - - - - /** - * The wrapper class for editable elements inside widgets. - * - * Do not use directly. Use {@link CKEDITOR.plugins.widget.definition#editables} or - * {@link CKEDITOR.plugins.widget#initEditable}. - * - * @class CKEDITOR.plugins.widget.nestedEditable - * @extends CKEDITOR.dom.element - * @constructor - * @param {CKEDITOR.editor} editor - * @param {CKEDITOR.dom.element} element - * @param config - * @param {CKEDITOR.filter} [config.filter] - */ - function NestedEditable( editor, element, config ) { - // Call the base constructor. - CKEDITOR.dom.element.call( this, element.$ ); - this.editor = editor; - var filter = this.filter = config.filter; - - // If blockless editable - always use BR mode. - if ( !CKEDITOR.dtd[ this.getName() ].p ) - this.enterMode = this.shiftEnterMode = CKEDITOR.ENTER_BR; - else { - this.enterMode = filter ? filter.getAllowedEnterMode( editor.enterMode ) : editor.enterMode; - this.shiftEnterMode = filter ? filter.getAllowedEnterMode( editor.shiftEnterMode, true ) : editor.shiftEnterMode; - } - } - - NestedEditable.prototype = CKEDITOR.tools.extend( CKEDITOR.tools.prototypedCopy( CKEDITOR.dom.element.prototype ), { - /** - * Sets the editable data. The data will be passed through the {@link CKEDITOR.editor#dataProcessor} - * and the {@link CKEDITOR.editor#filter}. This ensures that the data was filtered and prepared to be - * edited like the {@link CKEDITOR.editor#method-setData editor data}. - * - * @param {String} data - */ - setData: function( data ) { - data = this.editor.dataProcessor.toHtml( data, { - context: this.getName(), - filter: this.filter, - enterMode: this.enterMode - } ); - this.setHtml( data ); - - this.editor.widgets.initOnAll( this ); - }, - - /** - * Gets the editable data. Like {@link #setData}, this method will process and filter the data. - * - * @returns {String} - */ - getData: function() { - return this.editor.dataProcessor.toDataFormat( this.getHtml(), { - context: this.getName(), - filter: this.filter, - enterMode: this.enterMode - } ); - } - } ); - - /** - * The editor instance. - * - * @readonly - * @property {CKEDITOR.editor} editor - */ - - /** - * The filter instance if allowed content rules were defined. - * - * @readonly - * @property {CKEDITOR.filter} filter - */ - - /** - * The enter mode active in this editable. - * It is determined from editable's name (whether it is a blockless editable), - * its allowed content rules (if defined) and the default editor's mode. - * - * @readonly - * @property {Number} enterMode - */ - - /** - * The shift enter move active in this editable. - * - * @readonly - * @property {Number} shiftEnterMode - */ - - - // - // REPOSITORY helpers ----------------------------------------------------- - // - - function addWidgetButtons( editor ) { - var widgets = editor.widgets.registered, - widget, - widgetName, - widgetButton; - - for ( widgetName in widgets ) { - widget = widgets[ widgetName ]; - - // Create button if defined. - widgetButton = widget.button; - if ( widgetButton && editor.ui.addButton ) { - editor.ui.addButton( CKEDITOR.tools.capitalize( widget.name, true ), { - label: widgetButton, - command: widget.name, - toolbar: 'insert,10' - } ); - } - } - } - - // Create a command creating and editing widget. - // - // @param editor - // @param {CKEDITOR.plugins.widget.definition} widgetDef - function addWidgetCommand( editor, widgetDef ) { - editor.addCommand( widgetDef.name, { - exec: function() { - var focused = editor.widgets.focused; - // If a widget of the same type is focused, start editing. - if ( focused && focused.name == widgetDef.name ) - focused.edit(); - // Otherwise... - // ... use insert method is was defined. - else if ( widgetDef.insert ) - widgetDef.insert(); - // ... or create a brand-new widget from template. - else if ( widgetDef.template ) { - var defaults = typeof widgetDef.defaults == 'function' ? widgetDef.defaults() : widgetDef.defaults, - element = CKEDITOR.dom.element.createFromHtml( widgetDef.template.output( defaults ) ), - instance, - wrapper = editor.widgets.wrapElement( element, widgetDef.name ), - temp = new CKEDITOR.dom.documentFragment( wrapper.getDocument() ); - - // Append wrapper to a temporary document. This will unify the environment - // in which #data listeners work when creating and editing widget. - temp.append( wrapper ); - instance = editor.widgets.initOn( element, widgetDef ); - - // Instance could be destroyed during initialization. - // In this case finalize creation if some new widget - // was left in temporary document fragment. - if ( !instance ) { - finalizeCreation(); - return; - } - - // Listen on edit to finalize widget insertion. - // - // * If dialog was set, then insert widget after dialog was successfully saved or destroy this - // temporary instance. - // * If dialog wasn't set and edit wasn't canceled, insert widget. - var editListener = instance.once( 'edit', function( evt ) { - if ( evt.data.dialog ) { - instance.once( 'dialog', function( evt ) { - var dialog = evt.data, - okListener, - cancelListener; - - // Finalize creation AFTER (20) new data was set. - okListener = dialog.once( 'ok', finalizeCreation, null, null, 20 ); - - cancelListener = dialog.once( 'cancel', function() { - editor.widgets.destroy( instance, true ); - } ); - - dialog.once( 'hide', function() { - okListener.removeListener(); - cancelListener.removeListener(); - } ); - } ); - } else { - // Dialog hasn't been set, so insert widget now. - finalizeCreation(); - } - }, null, null, 999 ); - - instance.edit(); - - // Remove listener in case someone canceled it before this - // listener was executed. - editListener.removeListener(); - } - - function finalizeCreation() { - editor.widgets.finalizeCreation( temp ); - } - }, - - refresh: function( editor, path ) { - // Disable widgets' commands inside nested editables - - // check if blockLimit is a nested editable or a descendant of any. - this.setState( getNestedEditable( editor.editable(), path.blockLimit ) ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF ); - }, - // A hack to force command refreshing on context change. - context: 'div', - - allowedContent: widgetDef.allowedContent, - requiredContent: widgetDef.requiredContent, - contentForms: widgetDef.contentForms, - contentTransformations: widgetDef.contentTransformations - } ); - } - - function addWidgetProcessors( widgetsRepo, widgetDef ) { - var upcast = widgetDef.upcast, - upcasts; - - if ( !upcast ) - return; - - // Multiple upcasts defined in string. - if ( typeof upcast == 'string' ) { - upcasts = upcast.split( ',' ); - while ( upcasts.length ) - widgetsRepo._.upcasts.push( [ widgetDef.upcasts[ upcasts.pop() ], widgetDef.name ] ); - } else { - // Single rule which is automatically activated. - widgetsRepo._.upcasts.push( [ upcast, widgetDef.name ] ); - } - } - - function blurWidget( widgetsRepo, widget ) { - widgetsRepo.focused = null; - - if ( widget.isInited() ) { - var isDirty = widget.editor.checkDirty(); - - // Widget could be destroyed in the meantime - e.g. data could be set. - widgetsRepo.fire( 'widgetBlurred', { widget: widget } ); - widget.setFocused( false ); - - !isDirty && widget.editor.resetDirty(); - } - } - - function checkWidgets( evt ) { - var options = evt.data; - - if ( this.editor.mode != 'wysiwyg' ) - return; - - var editable = this.editor.editable(), - instances = this.instances, - newInstances, i, count, wrapper; - - if ( !editable ) - return; - - // Remove widgets which have no corresponding elements in DOM. - for ( i in instances ) { - if ( !editable.contains( instances[ i ].wrapper ) ) - this.destroy( instances[ i ], true ); - } - - // Init on all (new) if initOnlyNew option was passed. - if ( options && options.initOnlyNew ) - newInstances = this.initOnAll(); - else { - var wrappers = editable.find( '.cke_widget_wrapper' ); - newInstances = []; - - // Create widgets on existing wrappers if they do not exists. - for ( i = 0, count = wrappers.count(); i < count; i++ ) { - wrapper = wrappers.getItem( i ); - - // Check if there's no instance for this widget and that - // wrapper is not inside some temporary element like copybin (#11088). - if ( !this.getByElement( wrapper, true ) && !findParent( wrapper, isDomTemp ) ) { - // Add cke_widget_new class because otherwise - // widget will not be created on such wrapper. - wrapper.addClass( 'cke_widget_new' ); - newInstances.push( this.initOn( wrapper.getFirst( isDomWidgetElement ) ) ); - } - } - } - - // If only single widget was initialized and focusInited was passed, focus it. - if ( options && options.focusInited && newInstances.length == 1 ) - newInstances[ 0 ].focus(); - } - - // Unwraps widget element and clean up element. - // - // This function is used to clean up pasted widgets. - // It should have similar result to widget#destroy plus - // some additional adjustments, specific for pasting. - // - // @param {CKEDITOR.htmlParser.element} el - function cleanUpWidgetElement( el ) { - var parent = el.parent; - if ( parent.type == CKEDITOR.NODE_ELEMENT && parent.attributes[ 'data-cke-widget-wrapper' ] ) - parent.replaceWith( el ); - } - - // Similar to cleanUpWidgetElement, but works on DOM and finds - // widget elements by its own. - // - // Unlike cleanUpWidgetElement it will wrap element back. - // - // @param {CKEDITOR.dom.element} container - function cleanUpAllWidgetElements( widgetsRepo, container ) { - var wrappers = container.find( '.cke_widget_wrapper' ), - wrapper, element, - i = 0, - l = wrappers.count(); - - for ( ; i < l; ++i ) { - wrapper = wrappers.getItem( i ); - element = wrapper.getFirst( isDomWidgetElement ); - // If wrapper contains widget element - unwrap it and wrap again. - if ( element.type == CKEDITOR.NODE_ELEMENT && element.data( 'widget' ) ) { - element.replace( wrapper ); - widgetsRepo.wrapElement( element ); - } else { - // Otherwise - something is wrong... clean this up. - wrapper.remove(); - } - } - } - - // Creates {@link CKEDITOR.filter} instance for given widget, editable and rules. - // - // Once filter for widget-editable pair is created it is cached, so the same instance - // will be returned when method is executed again. - // - // @param {String} widgetName - // @param {String} editableName - // @param {CKEDITOR.plugins.widget.nestedEditableDefinition} editableDefinition The nested editable definition. - // @returns {CKEDITOR.filter} Filter instance or `null` if rules are not defined. - // @context CKEDITOR.plugins.widget.repository - function createEditableFilter( widgetName, editableName, editableDefinition ) { - if ( !editableDefinition.allowedContent ) - return null; - - var editables = this._.filters[ widgetName ]; - - if ( !editables ) - this._.filters[ widgetName ] = editables = {}; - - var filter = editables[ editableName ]; - - if ( !filter ) - editables[ editableName ] = filter = new CKEDITOR.filter( editableDefinition.allowedContent ); - - return filter; - } - - // Creates an iterator function which when executed on all - // elements in DOM tree will gather elements that should be wrapped - // and initialized as widgets. - function createUpcastIterator( widgetsRepo ) { - var toBeWrapped = [], - upcasts = widgetsRepo._.upcasts, - upcastCallbacks = widgetsRepo._.upcastCallbacks; - - return { - toBeWrapped: toBeWrapped, - - iterator: function( element ) { - var upcast, upcasted, - data, - i, - upcastsLength, - upcastCallbacksLength; - - // Wrapper found - find widget element, add it to be - // cleaned up (unwrapped) and wrapped and stop iterating in this branch. - if ( 'data-cke-widget-wrapper' in element.attributes ) { - element = element.getFirst( isParserWidgetElement ); - - if ( element ) - toBeWrapped.push( [ element ] ); - - // Do not iterate over descendants. - return false; - } - // Widget element found - add it to be cleaned up (just in case) - // and wrapped and stop iterating in this branch. - else if ( 'data-widget' in element.attributes ) { - toBeWrapped.push( [ element ] ); - - // Do not iterate over descendants. - return false; - } - else if ( ( upcastsLength = upcasts.length ) ) { - // Ignore elements with data-cke-widget-upcasted to avoid multiple upcasts (#11533). - // Do not iterate over descendants. - if ( element.attributes[ 'data-cke-widget-upcasted' ] ) - return false; - - // Check element with upcast callbacks first. - // If any of them return false abort upcasting. - for ( i = 0, upcastCallbacksLength = upcastCallbacks.length; i < upcastCallbacksLength; ++i ) { - if ( upcastCallbacks[ i ]( element ) === false ) - return; - // Return nothing in order to continue iterating over ascendants. - // See http://dev.ckeditor.com/ticket/11186#comment:6 - } - - for ( i = 0; i < upcastsLength; ++i ) { - upcast = upcasts[ i ]; - data = {}; - - if ( ( upcasted = upcast[ 0 ]( element, data ) ) ) { - // If upcast function returned element, upcast this one. - // It can be e.g. a new element wrapping the original one. - if ( upcasted instanceof CKEDITOR.htmlParser.element ) - element = upcasted; - - // Set initial data attr with data from upcast method. - element.attributes[ 'data-cke-widget-data' ] = encodeURIComponent( JSON.stringify( data ) ); - element.attributes[ 'data-cke-widget-upcasted' ] = 1; - - toBeWrapped.push( [ element, upcast[ 1 ] ] ); - - // Do not iterate over descendants. - return false; - } - } - } - } - }; - } - - // Finds a first parent that matches query. - // - // @param {CKEDITOR.dom.element} element - // @param {Function} query - function findParent( element, query ) { - var parent = element; - - while ( ( parent = parent.getParent() ) ) { - if ( query( parent ) ) - return true; - } - return false; - } - - // Gets nested editable if node is its descendant or the editable itself. - // - // @param {CKEDITOR.dom.element} guard Stop ancestor search on this node (usually editor's editable). - // @param {CKEDITOR.dom.node} node Start search from this node. - // @returns {CKEDITOR.dom.element} Element or null. - function getNestedEditable( guard, node ) { - if ( !node || node.equals( guard ) ) - return null; - - if ( isDomNestedEditable( node ) ) - return node; - - return getNestedEditable( guard, node.getParent() ); - } - - function getWrapperAttributes( inlineWidget ) { - return { - // tabindex="-1" means that it can receive focus by code. - tabindex: -1, - contenteditable: 'false', - 'data-cke-widget-wrapper': 1, - 'data-cke-filter': 'off', - // Class cke_widget_new marks widgets which haven't been initialized yet. - 'class': 'cke_widget_wrapper cke_widget_new cke_widget_' + - ( inlineWidget ? 'inline' : 'block' ) - }; - } - - // Inserts element at given index. - // It will check DTD and split ancestor elements up to the first - // that can contain this element. - // - // @param {CKEDITOR.htmlParser.element} parent - // @param {Number} index - // @param {CKEDITOR.htmlParser.element} element - function insertElement( parent, index, element ) { - // Do not split doc fragment... - if ( parent.type == CKEDITOR.NODE_ELEMENT ) { - var parentAllows = CKEDITOR.dtd[ parent.name ]; - // Parent element is known (included in DTD) and cannot contain - // this element. - if ( parentAllows && !parentAllows[ element.name ] ) { - var parent2 = parent.split( index ), - parentParent = parent.parent; - - // Element will now be inserted at right parent's index. - index = parent2.getIndex(); - - // If left part of split is empty - remove it. - if ( !parent.children.length ) { - index -= 1; - parent.remove(); - } - - // If right part of split is empty - remove it. - if ( !parent2.children.length ) - parent2.remove(); - - // Try inserting as grandpas' children. - return insertElement( parentParent, index, element ); - } - } - - // Finally we can add this element. - parent.add( element, index ); - } - - // @param {CKEDITOR.htmlParser.element} - function isParserWidgetElement( element ) { - return element.type == CKEDITOR.NODE_ELEMENT && !!element.attributes[ 'data-widget' ]; - } - - // @param {CKEDITOR.dom.element} - function isDomWidgetElement( element ) { - return element.type == CKEDITOR.NODE_ELEMENT && element.hasAttribute( 'data-widget' ); - } - - // Whether for this definition and element widget should be created in inline or block mode. - function isWidgetInline( widgetDef, elementName ) { - return typeof widgetDef.inline == 'boolean' ? widgetDef.inline : !!CKEDITOR.dtd.$inline[ elementName ]; - } - - // @param {CKEDITOR.htmlParser.element} - function isParserWidgetWrapper( element ) { - return element.type == CKEDITOR.NODE_ELEMENT && element.attributes[ 'data-cke-widget-wrapper' ]; - } - - // @param {CKEDITOR.dom.element} - function isDomWidgetWrapper( element ) { - return element.type == CKEDITOR.NODE_ELEMENT && element.hasAttribute( 'data-cke-widget-wrapper' ); - } - - // @param {CKEDITOR.dom.element} - function isDomNestedEditable( node ) { - return node.type == CKEDITOR.NODE_ELEMENT && node.hasAttribute( 'data-cke-widget-editable' ); - } - - // @param {CKEDITOR.dom.element} - function isDomTemp( element ) { - return element.hasAttribute( 'data-cke-temp' ); - } - - // @param {CKEDITOR.dom.element} - function isDomDragHandler( element ) { - return element.type == CKEDITOR.NODE_ELEMENT && element.hasAttribute( 'data-cke-widget-drag-handler' ); - } - - // @param {CKEDITOR.dom.element} - function isDomDragHandlerContainer( element ) { - return element.type == CKEDITOR.NODE_ELEMENT && element.hasClass( 'cke_widget_drag_handler_container' ); - } - - function finalizeNativeDrop( editor, sourceWidget, range ) { - // Save the snapshot with the state before moving widget. - // Focus widget, so when we'll undo the DnD, widget will be focused. - sourceWidget.focus(); - editor.fire( 'saveSnapshot' ); - - // Lock snapshot to group all steps of moving widget from the original place to the new one. - editor.fire( 'lockSnapshot', { dontUpdate: true } ); - - range.select(); - - var widgetHtml = sourceWidget.wrapper.getOuterHtml(); - sourceWidget.wrapper.remove(); - editor.widgets.destroy( sourceWidget, true ); - editor.execCommand( 'paste', widgetHtml ); - - editor.fire( 'unlockSnapshot' ); - } - - function getRangeAtDropPosition( editor, dropEvt ) { - var $evt = dropEvt.data.$, - $range, - range = editor.createRange(); - - // Make testing possible. - if ( dropEvt.data.testRange ) - return dropEvt.data.testRange; - - // Webkits. - if ( document.caretRangeFromPoint ) { - $range = editor.document.$.caretRangeFromPoint( $evt.clientX, $evt.clientY ); - range.setStart( CKEDITOR.dom.node( $range.startContainer ), $range.startOffset ); - range.collapse( true ); - } - // FF. - else if ( $evt.rangeParent ) { - range.setStart( CKEDITOR.dom.node( $evt.rangeParent ), $evt.rangeOffset ); - range.collapse( true ); - } - // IEs. - else if ( document.body.createTextRange ) { - $range = editor.document.getBody().$.createTextRange(); - $range.moveToPoint( $evt.clientX, $evt.clientY ); - var id = 'cke-temp-' + ( new Date() ).getTime(); - $range.pasteHTML( '\u200b' ); - - var span = editor.document.getById( id ); - range.moveToPosition( span, CKEDITOR.POSITION_BEFORE_START ); - span.remove(); - } else { - return null; - } - - return range; - } - - function onEditableKey( widget, keyCode ) { - var focusedEditable = widget.focusedEditable, - range; - - // CTRL+A. - if ( keyCode == CKEDITOR.CTRL + 65 ) { - var bogus = focusedEditable.getBogus(); - - range = widget.editor.createRange(); - range.selectNodeContents( focusedEditable ); - // Exclude bogus if exists. - if ( bogus ) - range.setEndAt( bogus, CKEDITOR.POSITION_BEFORE_START ); - - range.select(); - // Cancel event - block default. - return false; - } - // DEL or BACKSPACE. - else if ( keyCode == 8 || keyCode == 46 ) { - var ranges = widget.editor.getSelection().getRanges(); - - range = ranges[ 0 ]; - - // Block del or backspace if at editable's boundary. - return !( ranges.length == 1 && range.collapsed && - range.checkBoundaryOfElement( focusedEditable, CKEDITOR[ keyCode == 8 ? 'START' : 'END' ] ) ); - } - } - - function setFocusedEditable( widgetsRepo, widget, editableElement, offline ) { - var editor = widgetsRepo.editor; - - editor.fire( 'lockSnapshot' ); - - if ( editableElement ) { - var editableName = editableElement.data( 'cke-widget-editable' ), - editableInstance = widget.editables[ editableName ]; - - widgetsRepo.widgetHoldingFocusedEditable = widget; - widget.focusedEditable = editableInstance; - editableElement.addClass( 'cke_widget_editable_focused' ); - - if ( editableInstance.filter ) - editor.setActiveFilter( editableInstance.filter ); - editor.setActiveEnterMode( editableInstance.enterMode, editableInstance.shiftEnterMode ); - } else { - if ( !offline ) - widget.focusedEditable.removeClass( 'cke_widget_editable_focused' ); - - widget.focusedEditable = null; - widgetsRepo.widgetHoldingFocusedEditable = null; - editor.setActiveFilter( null ); - editor.setActiveEnterMode( null, null ); - } - - editor.fire( 'unlockSnapshot' ); - } - - function setupContextMenu( editor ) { - if ( !editor.contextMenu ) - return; - - editor.contextMenu.addListener( function( element ) { - var widget = editor.widgets.getByElement( element, true ); - - if ( widget ) - return widget.fire( 'contextMenu', {} ); - } ); - } - - // And now we've got two problems - original problem and RegExp. - // Some softeners: - // * FF tends to copy all blocks up to the copybin container. - // * IE tends to copy only the copybin, without its container. - // * We use spans on IE and blockless editors, but divs in other cases. - var pasteReplaceRegex = new RegExp( - '^' + - '(?:<(?:div|span)(?: data-cke-temp="1")?(?: id="cke_copybin")?(?: data-cke-temp="1")?>)?' + - '(?:<(?:div|span)(?: style="[^"]+")?>)?' + - ']*data-cke-copybin-start="1"[^>]*>.?([\\s\\S]+)]*data-cke-copybin-end="1"[^>]*>.?' + - '(?:)?' + - '(?:)?' + - '$' - ); - - function pasteReplaceFn( match, wrapperHtml ) { - // Avoid polluting pasted data with any whitspaces, - // what's going to break check whether only one widget was pasted. - return CKEDITOR.tools.trim( wrapperHtml ); - } - - function setupDragAndDrop( widgetsRepo ) { - var editor = widgetsRepo.editor, - lineutils = CKEDITOR.plugins.lineutils; - - editor.on( 'contentDom', function() { - var editable = editor.editable(), - // #11123 Firefox needs to listen on document, because otherwise event won't be fired. - // #11086 IE8 cannot listen on document. - dropTarget = ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) || editable.isInline() ? editable : editor.document; - - editable.attachListener( dropTarget, 'drop', function( evt ) { - var dataStr = evt.data.$.dataTransfer.getData( 'text' ), - dataObj, - sourceWidget, - range; - - if ( !dataStr ) - return; - - try { - dataObj = JSON.parse( dataStr ); - } catch ( e ) { - // Do nothing - data couldn't be parsed so it's not a CKEditor's data. - return; - } - - if ( dataObj.type != 'cke-widget' ) - return; - - evt.data.preventDefault(); - - // Something went wrong... maybe someone is dragging widgets between editors/windows/tabs/browsers/frames. - if ( dataObj.editor != editor.name || !( sourceWidget = widgetsRepo.instances[ dataObj.id ] ) ) - return; - - // Try to determine a DOM position at which drop happened. If none of methods - // which we support succeeded abort. - range = getRangeAtDropPosition( editor, evt ); - if ( !range ) - return; - - // #11132 Hack to prevent cursor loss on Firefox. Without timeout widget is - // correctly pasted but then cursor is invisible (although it works) and can be restored - // only by blurring editable. - if ( CKEDITOR.env.gecko ) - setTimeout( finalizeNativeDrop, 0, editor, sourceWidget, range ); - else - finalizeNativeDrop( editor, sourceWidget, range ); - } ); - - // Register Lineutils's utilities as properties of repo. - CKEDITOR.tools.extend( widgetsRepo, { - finder: new lineutils.finder( editor, { - lookups: { - // Element is block but not list item and not in nested editable. - 'default': function( el ) { - if ( el.is( CKEDITOR.dtd.$listItem ) ) - return; - - if ( !el.is( CKEDITOR.dtd.$block ) ) - return; - - while ( el ) { - if ( isDomNestedEditable( el ) ) - return; - - el = el.getParent(); - } - - return CKEDITOR.LINEUTILS_BEFORE | CKEDITOR.LINEUTILS_AFTER; - } - } - } ), - locator: new lineutils.locator( editor ), - liner: new lineutils.liner( editor, { - lineStyle: { - cursor: 'move !important', - 'border-top-color': '#666' - }, - tipLeftStyle: { - 'border-left-color': '#666' - }, - tipRightStyle: { - 'border-right-color': '#666' - } - } ) - }, true ); - } ); - } - - // Setup mouse observer which will trigger: - // * widget focus on widget click, - // * widget#doubleclick forwarded from editor#doubleclick. - function setupMouseObserver( widgetsRepo ) { - var editor = widgetsRepo.editor; - - editor.on( 'contentDom', function() { - var editable = editor.editable(), - evtRoot = editable.isInline() ? editable : editor.document, - widget, - mouseDownOnDragHandler; - - editable.attachListener( evtRoot, 'mousedown', function( evt ) { - var target = evt.data.getTarget(); - - // #10887 Clicking scrollbar in IE8 will invoke event with empty target object. - if ( !target.type ) - return false; - - widget = widgetsRepo.getByElement( target ); - mouseDownOnDragHandler = 0; // Reset. - - // Widget was clicked, but not editable nested in it. - if ( widget ) { - // Ignore mousedown on drag and drop handler if the widget is inline. - // Block widgets are handled by Lineutils. - if ( widget.inline && target.type == CKEDITOR.NODE_ELEMENT && target.hasAttribute( 'data-cke-widget-drag-handler' ) ) { - mouseDownOnDragHandler = 1; - return; - } - - if ( !getNestedEditable( widget.wrapper, target ) ) { - evt.data.preventDefault(); - if ( !CKEDITOR.env.ie ) - widget.focus(); - } else { - // Reset widget so mouseup listener is not confused. - widget = null; - } - } - } ); - - // Focus widget on mouseup if mousedown was fired on drag handler. - // Note: mouseup won't be fired at all if widget was dragged and dropped, so - // this code will be executed only when drag handler was clicked. - editable.attachListener( evtRoot, 'mouseup', function() { - if ( widget && mouseDownOnDragHandler ) { - mouseDownOnDragHandler = 0; - widget.focus(); - } - } ); - - // On IE it is not enough to block mousedown. If widget wrapper (element with - // contenteditable=false attribute) is clicked directly (it is a target), - // then after mouseup/click IE will select that element. - // It is not possible to prevent that default action, - // so we force fake selection after everything happened. - if ( CKEDITOR.env.ie ) { - editable.attachListener( evtRoot, 'mouseup', function() { - if ( widget ) { - setTimeout( function() { - widget.focus(); - widget = null; - } ); - } - } ); - } - } ); - - editor.on( 'doubleclick', function( evt ) { - var widget = widgetsRepo.getByElement( evt.data.element ); - - // Not in widget or in nested editable. - if ( !widget || getNestedEditable( widget.wrapper, evt.data.element ) ) - return; - - return widget.fire( 'doubleclick', { element: evt.data.element } ); - }, null, null, 1 ); - } - - // Setup editor#key observer which will forward it - // to focused widget. - function setupKeyboardObserver( widgetsRepo ) { - var editor = widgetsRepo.editor; - - editor.on( 'key', function( evt ) { - var focused = widgetsRepo.focused, - widgetHoldingFocusedEditable = widgetsRepo.widgetHoldingFocusedEditable, - ret; - - if ( focused ) - ret = focused.fire( 'key', { keyCode: evt.data.keyCode } ); - else if ( widgetHoldingFocusedEditable ) - ret = onEditableKey( widgetHoldingFocusedEditable, evt.data.keyCode ); - - return ret; - }, null, null, 1 ); - } - - // Setup copybin on native copy and cut events in order to handle copy and cut commands - // if user accepted security alert on IEs. - // Note: when copying or cutting using keystroke, copySingleWidget will be first executed - // by the keydown listener. Conflict between two calls will be resolved by copy_bin existence check. - function setupNativeCutAndCopy( widgetsRepo ) { - var editor = widgetsRepo.editor; - - editor.on( 'contentDom', function() { - var editable = editor.editable(); - - editable.attachListener( editable, 'copy', eventListener ); - editable.attachListener( editable, 'cut', eventListener ); - } ); - - function eventListener( evt ) { - if ( widgetsRepo.focused ) - copySingleWidget( widgetsRepo.focused, evt.name == 'cut' ); - } - } - - // Setup selection observer which will trigger: - // * widget select & focus on selection change, - // * nested editable focus (related properites and classes) on selection change, - // * deselecting and blurring all widgets on data, - // * blurring widget on editor blur. - function setupSelectionObserver( widgetsRepo ) { - var editor = widgetsRepo.editor; - - editor.on( 'selectionCheck', function() { - widgetsRepo.fire( 'checkSelection' ); - } ); - - widgetsRepo.on( 'checkSelection', widgetsRepo.checkSelection, widgetsRepo ); - - editor.on( 'selectionChange', function( evt ) { - var nestedEditable = getNestedEditable( editor.editable(), evt.data.selection.getStartElement() ), - newWidget = nestedEditable && widgetsRepo.getByElement( nestedEditable ), - oldWidget = widgetsRepo.widgetHoldingFocusedEditable; - - if ( oldWidget ) { - if ( oldWidget !== newWidget || !oldWidget.focusedEditable.equals( nestedEditable ) ) { - setFocusedEditable( widgetsRepo, oldWidget, null ); - - if ( newWidget && nestedEditable ) - setFocusedEditable( widgetsRepo, newWidget, nestedEditable ); - } - } - // It may happen that there's no widget even if editable was found - - // e.g. if selection was automatically set in editable although widget wasn't initialized yet. - else if ( newWidget && nestedEditable ) { - setFocusedEditable( widgetsRepo, newWidget, nestedEditable ); - } - } ); - - // Invalidate old widgets early - immediately on dataReady. - editor.on( 'dataReady', function() { - // Deselect and blur all widgets. - stateUpdater( widgetsRepo ).commit(); - } ); - - editor.on( 'blur', function() { - var widget; - - if ( ( widget = widgetsRepo.focused ) ) - blurWidget( widgetsRepo, widget ); - - if ( ( widget = widgetsRepo.widgetHoldingFocusedEditable ) ) - setFocusedEditable( widgetsRepo, widget, null ); - } ); - } - - // Set up actions like: - // * processing in toHtml/toDataFormat, - // * pasting handling, - // * insertion handling, - // * editable reload handling (setData, mode switch, undo/redo), - // * DOM invalidation handling, - // * widgets checks. - function setupWidgetsLifecycle( widgetsRepo ) { - setupWidgetsLifecycleStart( widgetsRepo ); - setupWidgetsLifecycleEnd( widgetsRepo ); - - widgetsRepo.on( 'checkWidgets', checkWidgets ); - widgetsRepo.editor.on( 'contentDomInvalidated', widgetsRepo.checkWidgets, widgetsRepo ); - } - - function setupWidgetsLifecycleEnd( widgetsRepo ) { - var editor = widgetsRepo.editor, - downcastingSessions = {}; - - // Listen before htmlDP#htmlFilter is applied to cache all widgets, because we'll - // loose data-cke-* attributes. - editor.on( 'toDataFormat', function( evt ) { - // To avoid conflicts between htmlDP#toDF calls done at the same time - // (e.g. nestedEditable#getData called during downcasting some widget) - // mark every toDataFormat event chain with the downcasting session id. - var id = CKEDITOR.tools.getNextNumber(), - toBeDowncasted = []; - evt.data.downcastingSessionId = id; - downcastingSessions[ id ] = toBeDowncasted; - - evt.data.dataValue.forEach( function( element ) { - var attrs = element.attributes, - widget, widgetElement; - - // Wrapper. - // Perform first part of downcasting (cleanup) and cache widgets, - // because after applying DP's filter all data-cke-* attributes will be gone. - if ( 'data-cke-widget-id' in attrs ) { - widget = widgetsRepo.instances[ attrs[ 'data-cke-widget-id' ] ]; - if ( widget ) { - widgetElement = element.getFirst( isParserWidgetElement ); - toBeDowncasted.push( { - wrapper: element, - element: widgetElement, - widget: widget, - editables: {} - } ); - - // If widget did not have data-cke-widget attribute before upcasting remove it. - if ( widgetElement.attributes[ 'data-cke-widget-keep-attr' ] != '1' ) - delete widgetElement.attributes[ 'data-widget' ]; - } - } - // Nested editable. - else if ( 'data-cke-widget-editable' in attrs ) { - // Save the reference to this nested editable in the closest widget to be downcasted. - // Nested editables are downcasted in the successive toDataFormat to create an opportunity - // for dataFilter's "excludeNestedEditable" option to do its job (that option relies on - // contenteditable="true" attribute) (#11372). - toBeDowncasted[ toBeDowncasted.length - 1 ].editables[ attrs[ 'data-cke-widget-editable' ] ] = element; - - // Don't check children - there won't be next wrapper or nested editable which we - // should process in this session. - return false; - } - }, CKEDITOR.NODE_ELEMENT, true ); - }, null, null, 8 ); - - // Listen after dataProcessor.htmlFilter and ACF were applied - // so wrappers securing widgets' contents are removed after all filtering was done. - editor.on( 'toDataFormat', function( evt ) { - // Ignore some unmarked sessions. - if ( !evt.data.downcastingSessionId ) - return; - - var toBeDowncasted = downcastingSessions[ evt.data.downcastingSessionId ], - toBe, widget, widgetElement, retElement, editableElement, e; - - while ( ( toBe = toBeDowncasted.shift() ) ) { - widget = toBe.widget; - widgetElement = toBe.element; - retElement = widget._.downcastFn && widget._.downcastFn.call( widget, widgetElement ); - - // Replace nested editables' content with their output data. - for ( e in toBe.editables ) { - editableElement = toBe.editables[ e ]; - - delete editableElement.attributes.contenteditable; - editableElement.setHtml( widget.editables[ e ].getData() ); - } - - // Returned element always defaults to widgetElement. - if ( !retElement ) - retElement = widgetElement; - - toBe.wrapper.replaceWith( retElement ); - } - }, null, null, 13 ); - - - editor.on( 'contentDomUnload', function() { - widgetsRepo.destroyAll( true ); - } ); - } - - function setupWidgetsLifecycleStart( widgetsRepo ) { - var editor = widgetsRepo.editor, - processedWidgetOnly, - snapshotLoaded; - - // Listen after ACF (so data are filtered), - // but before dataProcessor.dataFilter was applied (so we can secure widgets' internals). - editor.on( 'toHtml', function( evt ) { - var upcastIterator = createUpcastIterator( widgetsRepo ), - toBeWrapped; - - evt.data.dataValue.forEach( upcastIterator.iterator, CKEDITOR.NODE_ELEMENT, true ); - - // Clean up and wrap all queued elements. - while ( ( toBeWrapped = upcastIterator.toBeWrapped.pop() ) ) { - cleanUpWidgetElement( toBeWrapped[ 0 ] ); - widgetsRepo.wrapElement( toBeWrapped[ 0 ], toBeWrapped[ 1 ] ); - } - - // Used to determine whether only widget was pasted. - processedWidgetOnly = evt.data.dataValue.children.length == 1 && - isParserWidgetWrapper( evt.data.dataValue.children[ 0 ] ); - }, null, null, 8 ); - - editor.on( 'dataReady', function() { - // Clean up all widgets loaded from snapshot. - if ( snapshotLoaded ) - cleanUpAllWidgetElements( widgetsRepo, editor.editable() ); - snapshotLoaded = 0; - - // Some widgets were destroyed on contentDomUnload, - // some on loadSnapshot, but that does not include - // e.g. setHtml on inline editor or widgets removed just - // before setting data. - widgetsRepo.destroyAll( true ); - widgetsRepo.initOnAll(); - } ); - - // Set flag so dataReady will know that additional - // cleanup is needed, because snapshot containing widgets was loaded. - editor.on( 'loadSnapshot', function( evt ) { - // Primitive but sufficient check which will prevent from executing - // heavier cleanUpAllWidgetElements if not needed. - if ( ( /data-cke-widget/ ).test( evt.data ) ) - snapshotLoaded = 1; - - widgetsRepo.destroyAll( true ); - }, null, null, 9 ); - - // Handle pasted single widget. - editor.on( 'paste', function( evt ) { - evt.data.dataValue = evt.data.dataValue.replace( pasteReplaceRegex, pasteReplaceFn ); - } ); - - // Listen with high priority to check widgets after data was inserted. - editor.on( 'insertText', checkNewWidgets, null, null, 999 ); - editor.on( 'insertHtml', checkNewWidgets, null, null, 999 ); - - function checkNewWidgets() { - editor.fire( 'lockSnapshot' ); - - // Init only new for performance reason. - // Focus inited if only widget was processed. - widgetsRepo.checkWidgets( { initOnlyNew: true, focusInited: processedWidgetOnly } ); - - editor.fire( 'unlockSnapshot' ); - } - } - - // Helper for coordinating which widgets should be - // selected/deselected and which one should be focused/blurred. - function stateUpdater( widgetsRepo ) { - var currentlySelected = widgetsRepo.selected, - toBeSelected = [], - toBeDeselected = currentlySelected.slice( 0 ), - focused = null; - - return { - select: function( widget ) { - if ( CKEDITOR.tools.indexOf( currentlySelected, widget ) < 0 ) - toBeSelected.push( widget ); - - var index = CKEDITOR.tools.indexOf( toBeDeselected, widget ); - if ( index >= 0 ) - toBeDeselected.splice( index, 1 ); - - return this; - }, - - focus: function( widget ) { - focused = widget; - return this; - }, - - commit: function() { - var focusedChanged = widgetsRepo.focused !== focused, - widget, isDirty; - - widgetsRepo.editor.fire( 'lockSnapshot' ); - - if ( focusedChanged && ( widget = widgetsRepo.focused ) ) - blurWidget( widgetsRepo, widget ); - - while ( ( widget = toBeDeselected.pop() ) ) { - currentlySelected.splice( CKEDITOR.tools.indexOf( currentlySelected, widget ), 1 ); - // Widget could be destroyed in the meantime - e.g. data could be set. - if ( widget.isInited() ) { - isDirty = widget.editor.checkDirty(); - - widget.setSelected( false ); - - !isDirty && widget.editor.resetDirty(); - } - } - - if ( focusedChanged && focused ) { - isDirty = widgetsRepo.editor.checkDirty(); - - widgetsRepo.focused = focused; - widgetsRepo.fire( 'widgetFocused', { widget: focused } ); - focused.setFocused( true ); - - !isDirty && widgetsRepo.editor.resetDirty(); - } - - while ( ( widget = toBeSelected.pop() ) ) { - currentlySelected.push( widget ); - widget.setSelected( true ); - } - - widgetsRepo.editor.fire( 'unlockSnapshot' ); - } - }; - } - - - // - // WIDGET helpers --------------------------------------------------------- - // - - // LEFT, RIGHT, UP, DOWN, DEL, BACKSPACE - unblock default fake sel handlers. - var keystrokesNotBlockedByWidget = { 37: 1, 38: 1, 39: 1, 40: 1, 8: 1, 46: 1 }; - - // Applies or removes style's classes from widget. - // @param {CKEDITOR.style} style Custom widget style. - // @param {Boolean} apply Whether to apply or remove style. - function applyRemoveStyle( widget, style, apply ) { - var changed = 0, - classes = getStyleClasses( style ), - updatedClasses = widget.data.classes || {}, - cl; - - // Ee... Something is wrong with this style. - if ( !classes ) - return; - - // Clone, because we need to break reference. - updatedClasses = CKEDITOR.tools.clone( updatedClasses ); - - while ( ( cl = classes.pop() ) ) { - if ( apply ) { - if ( !updatedClasses[ cl ] ) - changed = updatedClasses[ cl ] = 1; - } else { - if ( updatedClasses[ cl ] ) { - delete updatedClasses[ cl ]; - changed = 1; - } - } - } - if ( changed ) - widget.setData( 'classes', updatedClasses ); - } - - function cancel( evt ) { - evt.cancel(); - } - - function copySingleWidget( widget, isCut ) { - var editor = widget.editor, - doc = editor.document; - - // We're still handling previous copy/cut. - // When keystroke is used to copy/cut this will also prevent - // conflict with copySingleWidget called again for native copy/cut event. - if ( doc.getById( 'cke_copybin' ) ) - return; - - // [IE] Use span for copybin and its container to avoid bug with expanding editable height by - // absolutely positioned element. - var copybinName = ( editor.blockless || CKEDITOR.env.ie ) ? 'span' : 'div', - copybin = doc.createElement( copybinName ), - copybinContainer = doc.createElement( copybinName ), - // IE8 always jumps to the end of document. - needsScrollHack = CKEDITOR.env.ie && CKEDITOR.env.version < 9; - - copybinContainer.setAttributes( { - id: 'cke_copybin', - 'data-cke-temp': '1' - } ); - - // Position copybin element outside current viewport. - copybin.setStyles( { - position: 'absolute', - width: '1px', - height: '1px', - overflow: 'hidden' - } ); - - copybin.setStyle( editor.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-5000px' ); - - copybin.setHtml( '\u200b' + widget.wrapper.getOuterHtml() + '\u200b' ); - - // Save snapshot with the current state. - editor.fire( 'saveSnapshot' ); - - // Ignore copybin. - editor.fire( 'lockSnapshot' ); - - copybinContainer.append( copybin ); - editor.editable().append( copybinContainer ); - - var listener1 = editor.on( 'selectionChange', cancel, null, null, 0 ), - listener2 = widget.repository.on( 'checkSelection', cancel, null, null, 0 ); - - if ( needsScrollHack ) { - var docElement = doc.getDocumentElement().$, - scrollTop = docElement.scrollTop; - } - - // Once the clone of the widget is inside of copybin, select - // the entire contents. This selection will be copied by the - // native browser's clipboard system. - var range = editor.createRange(); - range.selectNodeContents( copybin ); - range.select(); - - if ( needsScrollHack ) - docElement.scrollTop = scrollTop; - - setTimeout( function() { - // [IE] Focus widget before removing copybin to avoid scroll jump. - if ( !isCut ) - widget.focus(); - - copybinContainer.remove(); - - listener1.removeListener(); - listener2.removeListener(); - - editor.fire( 'unlockSnapshot' ); - - if ( isCut ) { - widget.repository.del( widget ); - editor.fire( 'saveSnapshot' ); - } - }, 100 ); // Use 100ms, so Chrome (@Mac) will be able to grab the content. - } - - // Extracts classes array from style instance. - function getStyleClasses( style ) { - var attrs = style.getDefinition().attributes, - classes = attrs && attrs[ 'class' ]; - - return classes ? classes.split( /\s+/ ) : null; - } - - // [IE] Force keeping focus because IE sometimes forgets to fire focus on main editable - // when blurring nested editable. - // @context widget - function onEditableBlur() { - var active = CKEDITOR.document.getActive(), - editor = this.editor, - editable = editor.editable(); - - // If focus stays within editor override blur and set currentActive because it should be - // automatically changed to editable on editable#focus but it is not fired. - if ( ( editable.isInline() ? editable : editor.document.getWindow().getFrame() ).equals( active ) ) - editor.focusManager.focus( editable ); - } - - // Force selectionChange when editable was focused. - // Similar to hack in selection.js#~620. - // @context widget - function onEditableFocus() { - // Gecko does not support 'DOMFocusIn' event on which we unlock selection - // in selection.js to prevent selection locking when entering nested editables. - if ( CKEDITOR.env.gecko ) - this.editor.unlockSelection(); - - // We don't need to force selectionCheck on Webkit, because on Webkit - // we do that on DOMFocusIn in selection.js. - if ( !CKEDITOR.env.webkit ) { - this.editor.forceNextSelectionCheck(); - this.editor.selectionChange( 1 ); - } - } - - // Setup listener on widget#data which will update (remove/add) classes - // by comparing newly set classes with the old ones. - function setupDataClassesListener( widget ) { - // Note: previousClasses and newClasses may be null! - // Tip: for ( cl in null ) is correct. - var previousClasses = null; - - widget.on( 'data', function() { - var newClasses = this.data.classes, - cl; - - // When setting new classes one need to remember - // that he must break reference. - if ( previousClasses == newClasses ) - return; - - for ( cl in previousClasses ) { - // Avoid removing and adding classes again. - if ( !( newClasses && newClasses[ cl ] ) ) - this.removeClass( cl ); - } - for ( cl in newClasses ) - this.addClass( cl ); - - previousClasses = newClasses; - } ); - } - - function setupDragHandler( widget ) { - if ( !widget.draggable ) - return; - - var editor = widget.editor, - // Use getLast to find wrapper's direct descendant (#12022). - container = widget.wrapper.getLast( isDomDragHandlerContainer ), - img; - - // Reuse drag handler if already exists (#11281). - if ( container ) - img = container.findOne( 'img' ); - else { - container = new CKEDITOR.dom.element( 'span', editor.document ); - container.setAttributes( { - 'class': 'cke_reset cke_widget_drag_handler_container', - // Split background and background-image for IE8 which will break on rgba(). - style: 'background:rgba(220,220,220,0.5);background-image:url(' + editor.plugins.widget.path + 'images/handle.png)' - } ); - - img = new CKEDITOR.dom.element( 'img', editor.document ); - img.setAttributes( { - 'class': 'cke_reset cke_widget_drag_handler', - 'data-cke-widget-drag-handler': '1', - src: CKEDITOR.tools.transparentImageData, - width: DRAG_HANDLER_SIZE, - title: editor.lang.widget.move, - height: DRAG_HANDLER_SIZE - } ); - widget.inline && img.setAttribute( 'draggable', 'true' ); - - container.append( img ); - widget.wrapper.append( container ); - } - - widget.wrapper.on( 'mouseenter', widget.updateDragHandlerPosition, widget ); - setTimeout( function() { - widget.on( 'data', widget.updateDragHandlerPosition, widget ); - }, 50 ); - - if ( widget.inline ) { - img.on( 'dragstart', function( evt ) { - evt.data.$.dataTransfer.setData( 'text', JSON.stringify( { type: 'cke-widget', editor: editor.name, id: widget.id } ) ); - } ); - } else { - img.on( 'mousedown', onBlockWidgetDrag, widget ); - } - - widget.dragHandlerContainer = container; - } - - function onBlockWidgetDrag() { - var finder = this.repository.finder, - locator = this.repository.locator, - liner = this.repository.liner, - editor = this.editor, - editable = editor.editable(), - listeners = [], - sorted = [], - - // Harvest all possible relations and display some closest. - relations = finder.greedySearch(), - - buffer = CKEDITOR.tools.eventsBuffer( 50, function() { - locations = locator.locate( relations ); - - // There's only a single line displayed for D&D. - sorted = locator.sort( y, 1 ); - - if ( sorted.length ) { - liner.prepare( relations, locations ); - liner.placeLine( sorted[ 0 ] ); - liner.cleanup(); - } - } ), - - locations, y; - - // Let's have the "dragging cursor" over entire editable. - editable.addClass( 'cke_widget_dragging' ); - - // Cache mouse position so it is re-used in events buffer. - listeners.push( editable.on( 'mousemove', function( evt ) { - y = evt.data.$.clientY; - buffer.input(); - } ) ); - - function onMouseUp() { - var l; - - buffer.reset(); - - // Stop observing events. - while ( ( l = listeners.pop() ) ) - l.removeListener(); - - onBlockWidgetDrop.call( this, sorted ); - } - - // Mouseup means "drop". This is when the widget is being detached - // from DOM and placed at range determined by the line (location). - listeners.push( editor.document.once( 'mouseup', onMouseUp, this ) ); - - // Mouseup may occur when user hovers the line, which belongs to - // the outer document. This is, of course, a valid listener too. - listeners.push( CKEDITOR.document.once( 'mouseup', onMouseUp, this ) ); - } - - function onBlockWidgetDrop( sorted ) { - var finder = this.repository.finder, - liner = this.repository.liner, - editor = this.editor, - editable = this.editor.editable(); - - if ( !CKEDITOR.tools.isEmpty( liner.visible ) ) { - // Retrieve range for the closest location. - var range = finder.getRange( sorted[ 0 ] ); - - // Focus widget (it could lost focus after mousedown+mouseup) - // and save this state as the one where we want to be taken back when undoing. - this.focus(); - editor.fire( 'saveSnapshot' ); - // Group all following operations in one snapshot. - editor.fire( 'lockSnapshot', { dontUpdate: 1 } ); - - // Reset the fake selection, which will be invalidated by insertElementIntoRange. - // This avoids a situation when getSelection() still returns a fake selection made - // on widget which in the meantime has been moved to other place. That could cause - // an error thrown e.g. by saveSnapshot or stateUpdater. - editor.getSelection().reset(); - - // Attach widget at the place determined by range. - editable.insertElementIntoRange( this.wrapper, range ); - - // Focus again the dropped widget. - this.focus(); - - // Unlock snapshot and save new one, which will contain all changes done - // in this method. - editor.fire( 'unlockSnapshot' ); - editor.fire( 'saveSnapshot' ); - } - - // Clean-up custom cursor for editable. - editable.removeClass( 'cke_widget_dragging' ); - - // Clean-up all remaining lines. - liner.hideVisible(); - } - - function setupEditables( widget ) { - var editableName, - editableDef, - definedEditables = widget.editables; - - widget.editables = {}; - - if ( !widget.editables ) - return; - - for ( editableName in definedEditables ) { - editableDef = definedEditables[ editableName ]; - widget.initEditable( editableName, typeof editableDef == 'string' ? { selector: editableDef } : editableDef ); - } - } - - function setupMask( widget ) { - if ( !widget.mask ) - return; - - // Reuse mask if already exists (#11281). - var img = widget.wrapper.findOne( '.cke_widget_mask' ); - - if ( !img ) { - img = new CKEDITOR.dom.element( 'img', widget.editor.document ); - img.setAttributes( { - src: CKEDITOR.tools.transparentImageData, - 'class': 'cke_reset cke_widget_mask' - } ); - widget.wrapper.append( img ); - } - - widget.mask = img; - } - - // Replace parts object containing: - // partName => selector pairs - // with: - // partName => element pairs - function setupParts( widget ) { - if ( widget.parts ) { - var parts = {}, - el, partName; - - for ( partName in widget.parts ) { - el = widget.wrapper.findOne( widget.parts[ partName ] ); - parts[ partName ] = el; - } - widget.parts = parts; - } - } - - function setupWidget( widget, widgetDef ) { - setupWrapper( widget ); - setupParts( widget ); - setupEditables( widget ); - setupMask( widget ); - setupDragHandler( widget ); - setupDataClassesListener( widget ); - - // #11145: [IE8] Non-editable content of widget is draggable. - if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) { - widget.wrapper.on( 'dragstart', function( evt ) { - var target = evt.data.getTarget(); - - // Allow text dragging inside nested editables or dragging inline widget's drag handler. - if ( !getNestedEditable( widget, target ) && !( widget.inline && isDomDragHandler( target ) ) ) - evt.data.preventDefault(); - } ); - } - - widget.wrapper.removeClass( 'cke_widget_new' ); - widget.element.addClass( 'cke_widget_element' ); - - widget.on( 'key', function( evt ) { - var keyCode = evt.data.keyCode; - - // ENTER. - if ( keyCode == 13 ) { - widget.edit(); - // CTRL+C or CTRL+X. - } else if ( keyCode == CKEDITOR.CTRL + 67 || keyCode == CKEDITOR.CTRL + 88 ) { - copySingleWidget( widget, keyCode == CKEDITOR.CTRL + 88 ); - return; // Do not preventDefault. - } else if ( keyCode in keystrokesNotBlockedByWidget || ( CKEDITOR.CTRL & keyCode ) || ( CKEDITOR.ALT & keyCode ) ) { - // Pass chosen keystrokes to other plugins or default fake sel handlers. - // Pass all CTRL/ALT keystrokes. - return; - } - - return false; - }, null, null, 999 ); - // Listen with high priority so it's possible - // to overwrite this callback. - - widget.on( 'doubleclick', function( evt ) { - if ( widget.edit() ) { - // We have to cancel event if edit method opens a dialog, otherwise - // link plugin may open extra dialog (#12140). - evt.cancel(); - } - } ); - - if ( widgetDef.data ) - widget.on( 'data', widgetDef.data ); - - if ( widgetDef.edit ) - widget.on( 'edit', widgetDef.edit ); - } - - function setupWidgetData( widget, startupData ) { - var widgetDataAttr = widget.element.data( 'cke-widget-data' ); - - if ( widgetDataAttr ) - widget.setData( JSON.parse( decodeURIComponent( widgetDataAttr ) ) ); - if ( startupData ) - widget.setData( startupData ); - - // Populate classes if they are not preset. - if ( !widget.data.classes ) - widget.setData( 'classes', widget.getClasses() ); - - // Unblock data and... - widget.dataReady = true; - - // Write data to element because this was blocked when data wasn't ready. - writeDataToElement( widget ); - - // Fire data event first time, because this was blocked when data wasn't ready. - widget.fire( 'data', widget.data ); - } - - function setupWrapper( widget ) { - // Retrieve widget wrapper. Assign an id to it. - var wrapper = widget.wrapper = widget.element.getParent(); - wrapper.setAttribute( 'data-cke-widget-id', widget.id ); - } - - function writeDataToElement( widget ) { - widget.element.data( 'cke-widget-data', encodeURIComponent( JSON.stringify( widget.data ) ) ); - } - - // - // WIDGET STYLE HANDLER --------------------------------------------------- - // - - ( function() { - - /** - * The class representing a widget style. It is an {@link CKEDITOR#STYLE_OBJECT object} like - * the styles handler for widgets. - * - * **Note:** This custom style handler does not support all methods of the {@link CKEDITOR.style} class. - * Not supported methods: {@link #applyToRange}, {@link #removeFromRange}, {@link #applyToObject}. - * - * @since 4.4 - * @class CKEDITOR.style.customHandlers.widget - * @extends CKEDITOR.style - */ - CKEDITOR.style.addCustomHandler( { - type: 'widget', - - setup: function( styleDefinition ) { - /** - * The name of widget to which this style can be applied. - * It is extracted from style definition's `widget` property. - * - * @property {String} widget - */ - this.widget = styleDefinition.widget; - }, - - apply: function( editor ) { - // Before CKEditor 4.4 wasn't a required argument, so we need to - // handle a case when it wasn't provided. - if ( !( editor instanceof CKEDITOR.editor ) ) - return; - - // Theoretically we could bypass checkApplicable, get widget from - // widgets.focused and check its name, what would be faster, but then - // this custom style would work differently than the default style - // which checks if it's applicable before applying or removeing itself. - if ( this.checkApplicable( editor.elementPath(), editor ) ) - editor.widgets.focused.applyStyle( this ); - }, - - remove: function( editor ) { - // Before CKEditor 4.4 wasn't a required argument, so we need to - // handle a case when it wasn't provided. - if ( !( editor instanceof CKEDITOR.editor ) ) - return; - - if ( this.checkApplicable( editor.elementPath(), editor ) ) - editor.widgets.focused.removeStyle( this ); - }, - - checkActive: function( elementPath, editor ) { - return this.checkElementMatch( elementPath.lastElement, 0, editor ); - }, - - checkApplicable: function( elementPath, editor ) { - // Before CKEditor 4.4 wasn't a required argument, so we need to - // handle a case when it wasn't provided. - if ( !( editor instanceof CKEDITOR.editor ) ) - return false; - - return this.checkElement( elementPath.lastElement ); - }, - - checkElementMatch: checkElementMatch, - - checkElementRemovable: checkElementMatch, - - /** - * Checks if an element is a {@link CKEDITOR.plugins.widget#wrapper wrapper} of a - * widget whose name matches the {@link #widget widget name} specified in the style definition. - * - * @param {CKEDITOR.dom.element} element - * @returns {Boolean} - */ - checkElement: function( element ) { - if ( !isDomWidgetWrapper( element ) ) - return false; - - var widgetElement = element.getFirst( isDomWidgetElement ); - return widgetElement && widgetElement.data( 'widget' ) == this.widget; - }, - - buildPreview: function( label ) { - return label || this._.definition.name; - }, - - /** - * Returns allowed content rules which should be registered for this style. - * Uses widget's {@link CKEDITOR.plugins.widget.definition#styleableElements} to make a rule - * allowing classes on specified elements or use widget's - * {@link CKEDITOR.plugins.widget.definition#styleToAllowedContentRules} method to transform a style - * into allowed content rules. - * - * @param {CKEDITOR.editor} The editor instance. - * @returns {CKEDITOR.filter.allowedContentRules} - */ - toAllowedContentRules: function( editor ) { - if ( !editor ) - return null; - - var widgetDef = editor.widgets.registered[ this.widget ], - classes, - rule = {}; - - if ( !widgetDef ) - return null; - - if ( widgetDef.styleableElements ) { - classes = this.getClassesArray(); - if ( !classes ) - return null; - - rule[ widgetDef.styleableElements ] = { - classes: classes, - propertiesOnly: true - }; - return rule; - } - if ( widgetDef.styleToAllowedContentRules ) - return widgetDef.styleToAllowedContentRules( this ); - return null; - }, - - /** - * Returns classes defined in the style in form of an array. - * - * @returns {String[]} - */ - getClassesArray: function() { - var classes = this._.definition.attributes && this._.definition.attributes[ 'class' ]; - - return classes ? CKEDITOR.tools.trim( classes ).split( /\s+/ ) : null; - }, - - /** - * Not implemented. - * - * @method applyToRange - */ - applyToRange: notImplemented, - - /** - * Not implemented. - * - * @method removeFromRange - */ - removeFromRange: notImplemented, - - /** - * Not implemented. - * - * @method applyToObject - */ - applyToObject: notImplemented - } ); - - function notImplemented() {} - - // @context style - function checkElementMatch( element, fullMatch, editor ) { - // Before CKEditor 4.4 wasn't a required argument, so we need to - // handle a case when it wasn't provided. - if ( !editor ) - return false; - - if ( !this.checkElement( element ) ) - return false; - - var widget = editor.widgets.getByElement( element, true ); - return widget && widget.checkStyleActive( this ); - } - - } )(); - - // - // EXPOSE PUBLIC API ------------------------------------------------------ - // - - CKEDITOR.plugins.widget = Widget; - Widget.repository = Repository; - Widget.nestedEditable = NestedEditable; -} )(); - -/** - * An event fired when a widget definition is registered by the {@link CKEDITOR.plugins.widget.repository#add} method. - * It is possible to modify the definition being registered. - * - * @event widgetDefinition - * @member CKEDITOR.editor - * @param {CKEDITOR.plugins.widget.definition} data Widget definition. - */ - -/** - * This is an abstract class that describes the definition of a widget. - * It is a type of {@link CKEDITOR.plugins.widget.repository#add} method's second argument. - * - * Widget instances inherit from registered widget definitions, although not in a prototypal way. - * They are simply extended with corresponding widget definitions. Note that not all properties of - * the widget definition become properties of a widget. Some, like {@link #data} or {@link #edit}, become - * widget's events listeners. - * - * @class CKEDITOR.plugins.widget.definition - * @abstract - * @mixins CKEDITOR.feature - */ - -/** - * Widget definition name. It is automatically set when the definition is - * {@link CKEDITOR.plugins.widget.repository#add registered}. - * - * @property {String} name - */ - -/** - * The method executed while initializing a widget, after a widget instance - * is created, but before it is ready. It is executed before the first - * {@link CKEDITOR.plugins.widget#event-data} is fired so it is common to - * use the `init` method to populate widget data with information loaded from - * the DOM, like for exmaple: - * - * init: function() { - * this.setData( 'width', this.element.getStyle( 'width' ) ); - * - * if ( this.parts.caption.getStyle( 'display' ) != 'none' ) - * this.setData( 'showCaption', true ); - * } - * - * @property {Function} init - */ - -/** - * The function to be used to upcast an element to this widget or a - * comma-separated list of upcast methods from the {@link #upcasts} object. - * - * The upcast function **is not** executed in the widget context (because the widget - * does not exist yet) and two arguments are passed: - * - * * `element` ({@link CKEDITOR.htmlParser.element}) – The element to be checked. - * * `data` (`Object`) – The object which can be extended with data which will then be passed to the widget. - * - * An element will be upcasted if a function returned `true` or an instance of - * a {@link CKEDITOR.htmlParser.element} if upcasting meant DOM structure changes - * (in this case the widget will be initialized on the returned element). - * - * @property {String/Function} upcast - */ - -/** - * The object containing functions which can be used to upcast this widget. - * Only those pointed by the {@link #upcast} property will be used. - * - * In most cases it is appropriate to use {@link #upcast} directly, - * because majority of widgets need just one method. - * However, in some cases the widget author may want to expose more than one variant - * and then this property may be used. - * - * upcasts: { - * // This function may upcast only figure elements. - * figure: function() { - * // ... - * }, - * // This function may upcast only image elements. - * image: function() { - * // ... - * }, - * // More variants... - * } - * - * // Then, widget user may choose which upcast methods will be enabled. - * editor.on( 'widgetDefinition', function( evt ) { - * if ( evt.data.name == 'image' ) - * evt.data.upcast = 'figure,image'; // Use both methods. - * } ); - * - * @property {Object} upcasts - */ - -/** - * The function to be used to downcast this widget or - * a name of the downcast option from the {@link #downcasts} object. - * - * The downcast funciton will be executed in the {@link CKEDITOR.plugins.widget} context - * and with `widgetElement` ({@link CKEDITOR.htmlParser.element}) argument which is - * the widget's main element. - * - * The function may return an instance of the {@link CKEDITOR.htmlParser.node} class if the widget - * needs to be downcasted to a different node than the widget's main element. - * - * @property {String/Function} downcast - */ - -/** - * The object containing functions which can be used to downcast this widget. - * Only the one pointed by the {@link #downcast} property will be used. - * - * In most cases it is appropriate to use {@link #downcast} directly, - * because majority of widgets have just one variant of downcasting (or none at all). - * However, in some cases the widget author may want to expose more than one variant - * and then this property may be used. - * - * downcasts: { - * // This downcast may transform the widget into the figure element. - * figure: function() { - * // ... - * }, - * // This downcast may transform the widget into the image element with data-* attributes. - * image: function() { - * // ... - * } - * } - * - * // Then, the widget user may choose one of the downcast options when setting up his editor. - * editor.on( 'widgetDefinition', function( evt ) { - * if ( evt.data.name == 'image' ) - * evt.data.downcast = 'figure'; - * } ); - * - * @property downcasts - */ - -/** - * If set, it will be added as the {@link CKEDITOR.plugins.widget#event-edit} event listener. - * This means that it will be executed when a widget is being edited. - * See the {@link CKEDITOR.plugins.widget#method-edit} method. - * - * @property {Function} edit - */ - -/** - * If set, it will be added as the {@link CKEDITOR.plugins.widget#event-data} event listener. - * This means that it will be executed every time the {@link CKEDITOR.plugins.widget#property-data widget data} changes. - * - * @property {Function} data - */ - -/** - * The method to be executed when the widget's command is executed in order to insert a new widget - * (widget of this type is not focused). If not defined, then the default action will be - * performed which means that: - * - * * An instance of the widget will be created in a detached {@link CKEDITOR.dom.documentFragment document fragment}, - * * The {@link CKEDITOR.plugins.widget#method-edit} method will be called to trigger widget editing, - * * The widget element will be inserted into DOM. - * - * @property {Function} insert - */ - -/** - * The name of a dialog window which will be opened on {@link CKEDITOR.plugins.widget#method-edit}. - * If not defined, then the {@link CKEDITOR.plugins.widget#method-edit} method will not perform any action and - * widget's command will insert a new widget without opening a dialog window first. - * - * @property {String} dialog - */ - -/** - * The template which will be used to create a new widget element (when the widget's command is executed). - * This string is populated with {@link #defaults default values} by using the {@link CKEDITOR.template} format. - * Therefore it has to be a valid {@link CKEDITOR.template} argument. - * - * @property {String} template - */ - -/** - * The data object which will be used to populate the data of a newly created widget. - * See {@link CKEDITOR.plugins.widget#property-data}. - * - * defaults: { - * showCaption: true, - * align: 'none' - * } - * - * @property defaults - */ - -/** - * An object containing definitions of widget components (part name => CSS selector). - * - * parts: { - * image: 'img', - * caption: 'div.caption' - * } - * - * @property parts - */ - -/** - * An object containing definitions of nested editables (editable name => {@link CKEDITOR.plugins.widget.nestedEditable.definition}). - * - * editables: { - * header: 'h1', - * content: { - * selector: 'div.content', - * allowedContent: 'p strong em; a[!href]' - * } - * } - * - * @property editables - */ - -/** - * Widget name displayed in elements path. - * - * @property {String} pathName - */ - -/** - * If set to `true`, the widget's element will be covered with a transparent mask. - * This will prevent its content from being clickable, which matters in case - * of special elements like embedded Flash or iframes that generate a separate "context". - * - * @property {Boolean} mask - */ - -/** - * If set to `true/false`, it will force the widget to be either an inline or a block widget. - * If not set, the widget type will be determined from the widget element. - * - * Widget type influences whether a block (`div`) or an inline (`span`) element is used - * for the wrapper. - * - * @property {Boolean} inline - */ - -/** - * The label for the widget toolbar button. - * - * editor.widgets.add( 'simplebox', { - * button: 'Create a simple box' - * } ); - * - * editor.widgets.add( 'simplebox', { - * button: editor.lang.simplebox.title - * } ); - * - * @property {String} button - */ - -/** - * Whether widget should be draggable. Defaults to `true`. - * If set to `false` drag handler will not be displayed when hovering widget. - * - * @property {Boolean} draggable - */ - -/** - * Names of element(s) (separated by spaces) for which the {@link CKEDITOR.filter} should allow classes - * defined in the widget styles. For example if your widget is upcasted from a simple `
    ` - * element, then in order to make it styleable you can set: - * - * editor.widgets.add( 'customWidget', { - * upcast: function( element ) { - * return element.name == 'div'; - * }, - * - * // ... - * - * styleableElements: 'div' - * } ); - * - * Then, when the following style is defined: - * - * { - * name: 'Thick border', type: 'widget', widget: 'customWidget', - * attributes: { 'class': 'thickBorder' } - * } - * - * a rule allowing the `thickBorder` class for `div` elements will be registered in the {@link CKEDITOR.filter}. - * - * If you need to have more freedom when transforming widget style to allowed content rules, - * you can use the {@link #styleToAllowedContentRules} callback. - * - * @since 4.4 - * @property {String} styleableElements - */ - -/** - * Function transforming custom widget's {@link CKEDITOR.style} instance into - * {@link CKEDITOR.filter.allowedContentRules}. It may be used when a static - * {@link #styleableElements} property is not enough to inform the {@link CKEDITOR.filter} - * what HTML features should be enabled when allowing the given style. - * - * In most cases, when style's classes just have to be added to element name(s) used by - * the widget element, it is recommended to use simpler {@link #styleableElements} property. - * - * In order to get parsed classes from the style definition you can use - * {@link CKEDITOR.style.customHandlers.widget#getClassesArray}. - * - * For example, if you want to use the [object format of allowed content rules](#!/guide/dev_allowed_content_rules-section-object-format), - * to specify `match` validator, your implementation could look like this: - * - * editor.widgets.add( 'customWidget', { - * // ... - * - * styleToAllowedContentRules: funciton( style ) { - * // Retrieve classes defined in the style. - * var classes = style.getClassesArray(); - * - * // Do something crazy - for example return allowed content rules in object format, - * // with custom match property and propertiesOnly flag. - * return { - * h1: { - * match: isWidgetElement, - * propertiesOnly: true, - * classes: classes - * } - * }; - * } - * } ); - * - * @since 4.4 - * @property {Function} styleToAllowedContentRules - * @param {CKEDITOR.style.customHandlers.widget} style The style to be transformed. - * @returns {CKEDITOR.filter.allowedContentRules} - */ - -/** - * This is an abstract class that describes the definition of a widget's nested editable. - * It is a type of values in the {@link CKEDITOR.plugins.widget.definition#editables} object. - * - * In the simplest case the definition is a string which is a CSS selector used to - * find an element that will become a nested editable inside the widget. Note that - * the widget element can be a nested editable, too. - * - * In the more advanced case a definition is an object with a required `selector` property. - * - * editables: { - * header: 'h1', - * content: { - * selector: 'div.content', - * allowedContent: 'p strong em; a[!href]' - * } - * } - * - * @class CKEDITOR.plugins.widget.nestedEditable.definition - * @abstract - */ - -/** - * The CSS selector used to find an element which will become a nested editable. - * - * @property {String} selector - */ - -/** - * The [Advanced Content Filter](#!/guide/dev_advanced_content_filter) rules - * which will be used to limit the content allowed in this nested editable. - * This option is similar to {@link CKEDITOR.config#allowedContent} and one can - * use it to limit the editor features available in the nested editable. - * - * @property {CKEDITOR.filter.allowedContentRules} allowedContent - */ - -/** - * Nested editable name displayed in elements path. - * - * @property {String} pathName - */ diff --git a/eperusteet/eperusteet-app/yo/app/globals.ts b/eperusteet/eperusteet-app/yo/app/globals.ts deleted file mode 100644 index 0dbb090519..0000000000 --- a/eperusteet/eperusteet-app/yo/app/globals.ts +++ /dev/null @@ -1,10 +0,0 @@ -// Temporary workaraund -declare var angular: any; -declare var _: any; -declare var CKEDITOR: any; -declare var XLSX: any; -declare var $q: any; -declare var global: any; -declare var moment: any; -declare var $: any; -declare var window: Window; diff --git a/eperusteet/eperusteet-app/yo/app/images/expander.png b/eperusteet/eperusteet-app/yo/app/images/expander.png deleted file mode 100644 index 774ea61a20..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/expander.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/notify-alert.png b/eperusteet/eperusteet-app/yo/app/images/notify-alert.png deleted file mode 100644 index f770c326c4..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/notify-alert.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/notify-info.png b/eperusteet/eperusteet-app/yo/app/images/notify-info.png deleted file mode 100644 index 44c2b29513..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/notify-info.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/notify-success.png b/eperusteet/eperusteet-app/yo/app/images/notify-success.png deleted file mode 100644 index 6e12febc2d..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/notify-success.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/pdf-file-24.png b/eperusteet/eperusteet-app/yo/app/images/pdf-file-24.png deleted file mode 100644 index fa4ea90264..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/pdf-file-24.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/rakenne-16x16.png b/eperusteet/eperusteet-app/yo/app/images/rakenne-16x16.png deleted file mode 100644 index 31b53d486f..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/rakenne-16x16.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/ryhma.png b/eperusteet/eperusteet-app/yo/app/images/ryhma.png deleted file mode 100644 index 1fe51b574a..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/ryhma.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/spinner-small.gif b/eperusteet/eperusteet-app/yo/app/images/spinner-small.gif deleted file mode 100644 index 3463d98cd8..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/spinner-small.gif and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/tekstikappale-16x16.png b/eperusteet/eperusteet-app/yo/app/images/tekstikappale-16x16.png deleted file mode 100644 index 62a96f9045..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/tekstikappale-16x16.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/tekstikappalekloonaa-16x16.png b/eperusteet/eperusteet-app/yo/app/images/tekstikappalekloonaa-16x16.png deleted file mode 100644 index 61acec09da..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/tekstikappalekloonaa-16x16.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/tekstikappalelisaa-16x16.png b/eperusteet/eperusteet-app/yo/app/images/tekstikappalelisaa-16x16.png deleted file mode 100644 index c7a67c495c..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/tekstikappalelisaa-16x16.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/tekstikappaletuo-16x16.png b/eperusteet/eperusteet-app/yo/app/images/tekstikappaletuo-16x16.png deleted file mode 100644 index f2b4a4e553..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/tekstikappaletuo-16x16.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/tuotutkinnonosa-16x16.png b/eperusteet/eperusteet-app/yo/app/images/tuotutkinnonosa-16x16.png deleted file mode 100644 index d972e4d296..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/tuotutkinnonosa-16x16.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/tutkinnonosa-eikaytetty.png b/eperusteet/eperusteet-app/yo/app/images/tutkinnonosa-eikaytetty.png deleted file mode 100644 index 0fdfff665d..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/tutkinnonosa-eikaytetty.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/tutkinnonosa.png b/eperusteet/eperusteet-app/yo/app/images/tutkinnonosa.png deleted file mode 100644 index 289a8ee0a6..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/tutkinnonosa.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/tutkinnonosa_pakollinen.png b/eperusteet/eperusteet-app/yo/app/images/tutkinnonosa_pakollinen.png deleted file mode 100644 index 94e2c5ae7b..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/tutkinnonosa_pakollinen.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/images/tutkinnonosat-16x16.png b/eperusteet/eperusteet-app/yo/app/images/tutkinnonosat-16x16.png deleted file mode 100644 index f23958b765..0000000000 Binary files a/eperusteet/eperusteet-app/yo/app/images/tutkinnonosat-16x16.png and /dev/null differ diff --git a/eperusteet/eperusteet-app/yo/app/index.html b/eperusteet/eperusteet-app/yo/app/index.html deleted file mode 100644 index b12dc3bad9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - ePerusteet - - - -
    -
    -
    - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - diff --git a/eperusteet/eperusteet-app/yo/app/index.test.ts b/eperusteet/eperusteet-app/yo/app/index.test.ts deleted file mode 100644 index 8044d69b7d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/index.test.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { getDirectives, getComponent, inject, getOfType, testModule, mockApp } from "app/testutils"; -import _ from "lodash"; - - -describe("app", () => { - beforeEach(mockApp); - - test("Injecting services", () => { - expect(true).toBeTruthy(); - }); - - test("Injecting services", () => { - getOfType("service").forEach(testModule); - }); - - test("Injecting factories", () => { - getOfType("factory").forEach(testModule); - }); - - test("Injecting filters", () => { - getOfType("filter").forEach(testModule); - }); - - test("All states use require as template", async () => { - const $state: any = await getComponent("$state"); - _.each($state.get(), state => { - if (state.templateUrl) { - console.error("You should use 'template: require(...)' with state:", state.name); - } - expect(state.templateUrl).toBeFalsy(); - expect(!state.template && !state.abstract && _.isEmpty(state.views)).toBeFalsy(); - - if (!_.isEmpty(state.views)) { - _.each(state.views, view => { - expect(_.isString(view.template)).toBeTruthy(); - }); - } - }); - }); - - test.skip("Komponentit on nimetty oikein", async () => { - getOfType("service") - .forEach(comp => { - expect(comp).toEqual(expect.stringMatching(/^.+Service$/)); - }) - }); - - test("Komponentit on nimetty oikein", async () => { - getOfType("controller") - .forEach(comp => { - expect(comp).toEqual(expect.stringMatching(/^.+(Controller|Ctrl)$/)); - }) - }); - - test("Modules can be injected with getComponent", async () => { - const $rootScope = await getComponent("$rootScope"); - const $timeout: any = await getComponent("$timeout"); - expect($rootScope).toBeTruthy(); - $timeout.flush(); - }); - - test("All modules can be injected with inject", () => { - inject($rootScope => expect($rootScope).toBeTruthy()); - }); - -}); - - -describe("locale-x", () => { - const locales = [ - ["fi", require("app/localisation/locale-fi.json")], - ["sv", require("app/localisation/locale-sv.json")], - ["en", require("app/localisation/locale-en.json")], - ]; - - test("Ei tyhjiä käännöksiä", () => { - for (const locale of _.map(locales, l => l[1])) { - for (const key of _.keys(locale)) { - expect(locale).toHaveMemberMatching(key, (value) => _.isString(value) && !_.isEmpty(value)); - } - } - }); - - test.skip("Käännökset lisätty kaikilla kielillä", () => { - const fails = []; - for (const key of _.keys(locales[0][1])) { - for (const locale of _.tail(locales)) { - if (!_.isString(locale[1][key]) || _.isEmpty(locale[1][key])) { - fails.push({ - kieli: locale[0], - avain: key, - }); - } - } - } - expect(fails.length).toEqual(0); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/app/index.ts b/eperusteet/eperusteet-app/yo/app/index.ts deleted file mode 100644 index c50656a377..0000000000 --- a/eperusteet/eperusteet-app/yo/app/index.ts +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - - - -import $ from "jquery"; -import "jquery-ui"; -import "angular"; -import _ from "lodash"; -import "jquery-sticky"; - -import "bootstrap"; -import "angular-ui-router"; -import "angular-sanitize"; -import "angular-resource"; -import "angular-translate"; -import "angular-animate"; -import "angular-i18n/angular-locale_fi-fi"; -import "angular-cache"; -import "angular-local-storage"; -import "angular-translate-loader-static-files"; -import "angular-ui-sortable"; -import "angular-ui-tree"; -import "angular-elastic"; -import "angular-ui-bootstrap"; -import "angular-loading-bar"; -import "ui-select"; -import "restangular"; -import "ng-file-upload"; -// import "es6-promise"; - -import "eperusteet-frontend-utils/mathdisplay"; - -import "styles/eperusteet.scss"; - -import "moment/locale/fi.js"; -import "moment/locale/sv.js"; - -import "./lmixins"; - -import "scripts/app"; -import "scripts/api"; -import "scripts/misc"; -import "scripts/directives/valmiskaannos"; -import "scripts/directives/sortabletable"; -import "scripts/directives/generictree"; -import "scripts/directives/epfooter"; -import "scripts/controllers/virhe"; -import "scripts/controllers/tuotekstikappale"; -import "scripts/directives/pagination"; -import "scripts/directives/muokkaus/tutke2osa"; -import "scripts/directives/readmore"; -import "scripts/directives/contenttree"; -import "scripts/directives/perusteprojekti/murupolku"; -import "scripts/services/utils"; -import "scripts/services/kieli"; -import "scripts/services/kuvat"; -import "scripts/services/leikelauta"; -import "scripts/services/koulutuksenosamap"; -import "scripts/services/ulkopuoliset"; -import "scripts/services/algoritmit"; -import "scripts/services/tyoryhmat"; -import "scripts/services/projektiryhma"; -import "scripts/services/pagination"; -import "scripts/services/pdf"; -import "scripts/services/excel"; -import "scripts/services/muodostumissaannot"; -import "scripts/services/lokalisointi"; -import "scripts/services/versionhelper"; -import "scripts/services/automaattitallennus"; -import "scripts/services/proxyservice"; -import "scripts/directives/iconrole"; -import "scripts/directives/tagcloud"; -import "scripts/directives/rajaus"; -import "scripts/directives/ohje"; -import "scripts/directives/muokkaus/versiotiedot"; -import "scripts/directives/multiinput"; -import "scripts/directives/kommentit"; -import "scripts/directives/kommenttiviesti"; -import "scripts/directives/osalistaus"; -import "scripts/directives/muokkaus/leikelauta"; -import "scripts/directives/osallinenosa"; -import "scripts/directives/muokattavaosio"; -import "scripts/directives/perusopetus/tavoitteet"; -import "scripts/directives/perusopetus/sisaltoalueet"; -import "scripts/directives/perusopetus/arviointi"; -import "scripts/controllers/perusteprojekti/osanmuokkaus"; -import "scripts/directives/muokkaus/vuosiluokkakokonaisuus"; -import "scripts/directives/muokkaus/oppiaine"; -import "scripts/directives/muokkaus/perusopetusosaaminen"; -import "scripts/directives/muokkaus/osaaminen"; -import "scripts/controllers/excel"; -import "scripts/controllers/tiedotteet"; -import "scripts/directives/spinner"; -import "scripts/controllers/modals/uudelleenohjaus"; -import "scripts/controllers/modals/muodostumisryhma"; -import "scripts/controllers/modals/validointi"; -import "scripts/directives/fileselect"; -import "scripts/directives/formfield"; -import "scripts/directives/followscroll"; -import "scripts/services/perusteet"; -import "scripts/services/lukko"; -import "scripts/services/perusteenosat"; -import "scripts/services/varihyrra"; -import "scripts/services/colorcalculator"; -import "scripts/controllers/haku"; -import "scripts/controllers/perusteprojekti/projektinTila"; -import "scripts/filters/kaanna"; -import "scripts/filters/tutkintokoodi"; -import "scripts/filters/koulutusalakoodi"; -import "scripts/filters/customfilters"; -import "scripts/directives/koodisto"; -import "scripts/directives/tree"; -import "scripts/controllers/modals/aikakatko"; -import "scripts/directives/sivunavigaatio"; -import "scripts/services/notifikaatiot"; -import "scripts/directives/statusbadge"; -import "scripts/directives/sticky"; -import "scripts/services/suosikit"; -import "scripts/services/haku"; -import "scripts/services/kayttajaprofiilit"; -import "scripts/services/koulutusalat"; -import "scripts/controllers/suosikit"; -import "scripts/services/yleinenData"; -import "scripts/services/arviointi" -import "scripts/services/navigaatiopolku" -import "scripts/services/editointikontrollit" -import "scripts/directives/editointikontrollit" -import "scripts/directives/editointiKontrolli" -import "scripts/directives/tuotutkinnonosa" -import "scripts/controllers/muokkaus" -import "scripts/directives/muokkaus/lukko" -import "scripts/directives/muokkaus/revertnote" -import "scripts/controllers/perusteprojekti/tutkinnonosa" -import "scripts/controllers/perusteprojekti/koulutuksenosa" -import "scripts/controllers/perusteprojekti/tekstikappale" -import "scripts/directives/pikamenu" -import "scripts/directives/editinplace" -import "scripts/directives/termistoviitteet" -import "scripts/services/lukiokoulutus" -import "scripts/services/lops2019" -import "scripts/services/perusteprojekti" -import "scripts/controllers/perusteprojekti/projektinTiedot" -import "scripts/controllers/perusteprojekti/muodostumissaannot" -import "scripts/controllers/perusteprojekti/tutkinnonosat" -import "scripts/controllers/perusteprojekti/projektiryhma" -import "scripts/controllers/perusteprojekti/projektinperustiedot" -import "scripts/controllers/perusteprojekti/termisto" -import "scripts/controllers/omatperusteprojektit" -import "scripts/services/perusopetus" -import "scripts/controllers/perusopetus" -import "scripts/controllers/lukiokoulutus" -import "scripts/controllers/kurssit" -import "scripts/controllers/lops2019" -import "scripts/directives/datecomparisonvalidator" -import "scripts/directives/muokkaus/muokattavakentta" -import "scripts/directives/arviointi" -import "scripts/directives/ammattitaitovaatimukset" -import "scripts/directives/valmaarviointi" -import "scripts/controllers/modals/ilmoitusdialogi" -import "scripts/controllers/perusteprojekti/perusteenTiedot" -import "scripts/services/opintoalat" -import "scripts/services/kommentit" -import "scripts/directives/muokkaus/kenttalistaus" -import "scripts/directives/dateformatvalidator" -import "scripts/controllers/aloitussivu" -import "scripts/controllers/perusteprojekti/perusteprojekti" -import "scripts/services/perusteprojekti/sivunavi" -import "scripts/controllers/perusteprojekti/sisalto" -import "scripts/controllers/perusteprojekti/kommentit" -import "scripts/controllers/perusteprojekti/toimikausi" -import "scripts/services/varmistusdialogi" -import "scripts/controllers/admin" -import "scripts/directives/numberinput" -import "scripts/directives/dateformatter" -import "scripts/services/koulutusalat" -import "scripts/controllers/modals/tilanvaihtovirhe" -import "scripts/directives/diaarinumerouniikki" -import "scripts/directives/oikeustarkastelu" -import "scripts/controllers/modals/rakenneosamodal" -import "scripts/controllers/perusteprojekti/tutkinnonosaosaalue" -import "scripts/controllers/perusteprojekti/esiopetus" -import "scripts/controllers/perusteprojekti/tpoopetus" -import "scripts/directives/hallintalinkki" -import "scripts/directives/muokkaus/aihekokonaisuudet" -import "scripts/directives/muokkaus/lukiokoulutusyleisettavoitteet" -import "scripts/states/opas/state" -import "scripts/states/perusteprojekti/suoritustapa/aipesisalto/state" -import "scripts/states/perusteprojekti/suoritustapa/aipeosalistaus/state" -import "scripts/states/perusteprojekti/suoritustapa/aipeosaalue/state" -import "scripts/states/perusteprojekti/suoritustapa/aipeosaalue/oppiaine/state" -import "scripts/states/perusteprojekti/suoritustapa/aipeosaalue/oppiaine/kurssi/state" -import "scripts/services/aipe" -import "scripts/directives/muokkaus/vaihe" -import "scripts/directives/perustetoisetprojektit" -import "scripts/components/tavoitteet/tavoitteet" -import "scripts/directives/ckeditor"; -import "scripts/directives/tutkinnonosangeneerisetammattitaitovaatimukset"; -import "scripts/directives/tutkinnonosanammattitaitovaatimukset2019"; diff --git a/eperusteet/eperusteet-app/yo/app/lmixins.ts b/eperusteet/eperusteet-app/yo/app/lmixins.ts deleted file mode 100644 index 9f485bdaea..0000000000 --- a/eperusteet/eperusteet-app/yo/app/lmixins.ts +++ /dev/null @@ -1,23 +0,0 @@ -declare namespace _ { - interface OwnMixins { - callAndGive(x: F, ...args: any[]): F; - print(x: any): any; - spy(x: T): T; - print(): any; - matchStrings(search: string, target: string): boolean; - fromPairs(x: Array): any; - append(x: Array, el: T): Array; - overwrite(to: Object, from: Object): void; - overwriteData(to: Object, from: Object): void; - setRemove(from: Object, what: Object): void; - cset(o: O, p: P): (v: V) => void; - fromPairs(): any; - flattenBy(root: T, field: string): T[]; - flattenTree(root: any, extractor: Function): any; - zipBy(root: T[], field: any): any[]; - } - - interface LoDashStatic extends OwnMixins {} - interface LoDashImplicitArrayWrapper extends OwnMixins {} - interface LoDashImplicitObjectWrapper extends OwnMixins {} -} diff --git a/eperusteet/eperusteet-app/yo/app/localisation/locale-en.json b/eperusteet/eperusteet-app/yo/app/localisation/locale-en.json deleted file mode 100644 index 6919afdc0f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/localisation/locale-en.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "arvosana-asteikko": "Grading scale/Pass requirements", - "haku-otsikko": "Topic search", - "jatkoopinto-kelpoisuus": "Access to the next level of education/training", - "kansainvaliset-sopimukset": "International agreements", - "kielen-vaihto": "Change language", - "kvliiteen-yksiportainen-arviointiasteikko": "pass / fail", - "lisatietoja": "Additional information", - "pohjakoulutusvaatimukset": "Entry requirements", - "saadosperusta": "Legal basis", - "suorittaneen-osaaminen": "Vocational skills and competences required for completion of the qualification", - "tutkinnon-muodostuminen": "Composition of the qualification", - "tutkinnon-suorittaneen-ammatillinen-osaaminen": "Profile of skills and competences", - "tutkinnon-taso": "Level of the certificate (national or international)", - "tutkinnon-virallinen-asema": "Official basis of the certificate", - "tutkinnosta-paattava-viranomainen": "Name and status of the national/regional authority providing accreditation/recognition of the certificate", - "tutkintotodistuksen-antaja": "Name and status of the body awarding the certificate", - "tutkintotodistuksen-saaminen": "Officially recognised ways of obtaining the certificate", - "tyotehtavat-joissa-voi-toimia": "Range of occupations accessible to the holder of the certificate" -} diff --git a/eperusteet/eperusteet-app/yo/app/localisation/locale-fi.json b/eperusteet/eperusteet-app/yo/app/localisation/locale-fi.json deleted file mode 100644 index 45585c5d96..0000000000 --- a/eperusteet/eperusteet-app/yo/app/localisation/locale-fi.json +++ /dev/null @@ -1,1427 +0,0 @@ -{ - "aihekokonaisuudet": "Aihekokonaisuudet", - "aihekokonaisuudet-ei-otsikkoa": "Aihekokonaisuuksien yleiskuvausta ei ole vielä määritelty", - "aihekokonaisuudet-palautettu": "Valittu versio palautettu onnistuneesti", - "aihekokonaisuudet-yleiskuvaus-placeholder": "Kirjoita aihekokonaisuuksien yleiskuvaus", - "aihekokonaisuus-palautettu": "Valittu versio palautettu onnistuneesti", - "aihekokonaisuus-yleiskuvaus-placeholder": "Kirjoita aihekokonaisuuden yleiskuvaus", - "aikuistenperusopetus": "Aikuistenperusopetus", - "aipe-opetuksen-sisalto-puuttuu": "Aikuisten perusopetuksen sisältö puuttuu", - "aipe-oppiaine-palautettu": "AIPE oppiaine palautettu", - "aipe-vaihe-palautettu": "AIPE vaihe palautettu", - "ajo-kaynnistetty": "Ajo käynnistetty", - "alkuun": "Alkuun", - "aloita-raahaamalla-puuhun": "Tuo ryhmiä tai tutkinnon osia tähän.", - "aloitus-ennen-lopetusta": "Toimikauden aloituspäivämäärän täytyy olla ennen päättymisajankohtaa.", - "ammatillinen-aikuiskoulutus": "Ammatillinen aikuiskoulutus", - "ammatillinen-peruskoulutus": "Ammatillinen peruskoulutus", - "ammatillinenaikuiskoulutus": "Ammatillinen aikuiskoulutus", - "ammatillinenperuskoulutus": "Ammatillinen peruskoulutus", - "ammattitaidonOsoittamistavat": "Ammattitaidon osoittaminen", - "ammattitaito-ammattitaitovaatimuskoodi-placeholder": "Ammattitaitovaatimuskoodi", - "ammattitaito-kohdealueet": "Kohdealueet", - "ammattitaito-uusi-kohde": "Lisää kohdealue", - "ammattitaito-uusi-kohde-placeholder": "Kohteen nimi (ei pakollinen)", - "ammattitaito-uusi-kohdealue": "Lisää kohdealue", - "ammattitaito-uusi-kohdealue-placeholder": "Kohdealueen nimi", - "ammattitaito-uusi-vaatimus-placeholder": "Ammattitaitovaatimuksen teksti", - "ammattitaitovaatimukset": "Ammattitaitovaatimukset", - "ammattitaitovaatimukset-koodistoon": "Ammattitaitovaatimukset koodistoon", - "ammattitaitovaatimukset-muualla": "Ammattitaitovaatimukset jotka käytössä muualla", - "ammattitaitovaatimuksetLista": "Ammattitaitovaatimukset", - "ammattitaitovaatimusten-hallinta": "Ammattitaitovaatimusten hallinta", - "ammattitaitovaatimus-koodisto-puute": "Syötetty ammattitaitovaatimus löytyy jo koodistosta.", - "ammattitutkinto": "Ammattitutkinto", - "anna-diaarinumero-placeholder": "Syötä diaarinumero", - "anna-oppaan-nimi-placeholder": "Anna oppaan nimi", - "anna-paatos-pvm": "Anna päätöspäivämäärä", - "anna-projektin-nimi-placeholder": "Syötä projektin nimi", - "anna-päätöspäivämäärä": "Syötä päätöspäivämäärä", - "anna-siirtyman-paattymis-pvm": "Anna siirtymän päättymispäivä", - "anna-toimikausi_alku": "Syötä toimikauden aloituspäivämäärä", - "anna-toimikausi_loppu": "Syötä toimikauden päättymispäivämäärä", - "anna-voimaantulo-loppu-pvm": "Anna voimassaolon päättymispäivämäärä", - "anna-voimaantulo-pvm": "Anna voimaantulopäivämäärä", - "anna-yhteistyotaho-placeholder": "Syötä sopimusosapuoli", - "annettu-arvo": "Annettu arvo", - "arvio-itse": "Arvioi itse.", - "arvioinnin-kohde": "Arvioinnin kohde", - "arvioinnin-kohdealue": "Arvioinnin kohdealue", - "arvioinnin-kuvaus": "Arvioinnin kuvaus", - "arvioinnin-otsikko": "Arvioinnin otsikko", - "arviointi": "Osaamisen arviointi", - "arviointi-asteikon-valinta": "Valitse arviointiasteikko", - "arviointi-kohdealueet": "Arvioinnin tavoitealueet", - "arviointi-paallekkaisia-osaamisia": "Tallennus epäonnistui: päällekkäisiä osaamisen kuvauksia.", - "arviointi-poista-kriteeri": "Poista rivi", - "arviointi-uusi-kohde": "Lisää arvioinnin kohde", - "arviointi-uusi-kohde-placeholder": "Kohteen nimi (ei pakollinen)", - "arviointi-uusi-kohde-selite-placeholder": "Kohteen selite", - "arviointi-uusi-kohdealue": "Lisää ammattitaitovaatimus tekemisenä", - "arviointi-uusi-kohdealue-placeholder": "Tavoitealueen nimi", - "arviointi-uusi-kriteeri": "Lisää rivi", - "arviointi-uusi-kriteeri-placeholder": "Kriteerin teksti", - "arviointi-vuosiluokan-paatteeksi": "Arviointikriteerit vuosiluokkakokonaisuuden päätteeksi", - "arviointiasteikko": "Arviointiasteikko", - "arviointiasteikkojen-päivitys-onnistui": "Arviointiasteikkojen päivitys onnistui", - "arviointiasteikot": "Arviointiasteikot", - "arviointiasteikot-ohje": "Täältä voi muuta arviointiasteikkojen osaamisalojen tekstejä ja järjestyksiä.", - "arvion-hyva-osaaminen": "Hyvä / arvosanan kahdeksan osaaminen", - "arvion-kuvaus": "Arvion kuvaus", - "arvo-askelvirhe": "Arvon hyväksytty askelväli on {{step}}", - "arvo-ei-desimaaliluku": "Arvon täytyy olla desimaaliluku", - "arvo-ei-kokonaisluku": "Arvon täytyy olla kokonaisluku", - "arvo-ei-numero": "Arvon täytyy olla numero", - "arvo-rajojen-ulkopuolella": "Arvon pitää olla välillä {{min}} - {{max}}", - "arvosana-asteikko": "Arvosana-asteikko/hyväksymisvaatimukset", - "arvosana-asteikkoa-ei-valittu": "Arvosana-asteikkoa ei asetettu", - "arvosanat": "Arvosanat", - "aseta-tila": "Aseta tila", - "asteikon-nimi": "Asteikon nimi", - "avaa": "Avaa", - "avaa-leikelauta": "Avaa leikelauta", - "avaa-sulje-kaikki": "Avaa/sulje kaikki", - "avaa-sulje-rakenne": "Avaa / sulje rakenne", - "copyright-opetushallitus": "Copyright © Opetushallitus 2016", - "diaari-jo-listalla": "Diaarinumero on jo valittu", - "diaarinumero-ei-validi": "Diaarinumero ei ole validi. Diarinumeron pitää olla muotoa XXX/XXX/XXXX tai OPH-XXXXX-XXXX", - "diaarinumero-kaytossa": "Diaarinumero on jo käytössä", - "diaarinumero-label": "Diaarinumero", - "diaarinumerolla-jyraa-vanhan": "Valitsemalla saman diaarinumeron vanha peruste korvaantuu julkaisun yhteydessä", - "dokumentin-luonti-epaonnistui": "PDF-dokumentin luonti epäonnistui", - "dokumentin-tila": "PDF-dokumentin tila", - "dokumentti-luotu": "PDF-dokumentin luonti onnistui", - "edellinen": "Edellinen", - "editoimasi-sisältö-on-muuttunut": "Muokkaamasi sisältö on muuttunut", - "ei": "Ei", - "ei-asetettu": "Ei asetettu", - "ei-korvattavia-perusteita": "Yhtään korvattavaa perustetta ei ole valittu", - "ei-koulutuksia": "Ei koulutuskoodeja", - "ei-kuvausta": "[Ei kuvausta]", - "ei-kuvia": "Ei kuvia", - "ei-oppimaaria": "Oppimääriä ei ole lisätty", - "ei-osa-alueita": "Ei osa-alueita.", - "ei-osaamisalan-kuvausta": "Ei osaamisalan kuvausta", - "ei-projekteja": "Sinulla ei ole käynnissä olevia perusteprojekteja.", - "ei-päättymis-päivämäärää": "Ei määritetty", - "ei-sallittuja-toimintoja": "Ei sallittuja toimintoja", - "ei-suosikkeja": "Et ole lisännyt vielä suosikkeja.", - "ei-tekstikappaleita": "Yhtään tekstikappaletta ei löytynyt.", - "ei-termeja": "Yhtään käsitettä ei ole määritelty.", - "ei-tiedotteita": "Ei tiedotteita.", - "ei-tiivistelmaa": "Ei tiivistelmää", - "ei-tuloksia": "Ei tuloksia rajauksellasi", - "ei-tutkintonimikkeita ": "Ei tutkintonimikkeitä", - "ei-tutkintonimikkeita": "Ei tutkintonimikkeitä", - "ei-valintaa": "Ei valintaa", - "ei_ole": "Dokumenttia ei ole luotu.", - "email": "Email", - "en": "Englanti", - "eperusteet": "ePerusteet", - "eperusteet-otsikko": "ePerusteet", - "eperusteet-virkailija-linkki": "Virkailijanäkymään", - "epimage-plugin-button-label": "Kuva", - "epimage-plugin-hylatty": "Voit ladata vain jpg- tai png-tyyppisiä kuvia.", - "epimage-plugin-label": "Kuva", - "epimage-plugin-label-epimage": "Kuva", - "epimage-plugin-lisaa-uusi": "Lataa uusi kuva", - "epimage-plugin-menu-muokkaa": "Muokkaa kuvaa", - "epimage-plugin-menu-poista": "Poista kuva", - "epimage-plugin-select-placeholder": "Valitse kuva...", - "epimage-plugin-tallennettu": "Kuva tallennettu.", - "epimage-plugin-title": "Lisää kuva", - "epimage-plugin-valitse": "Valitse tiedosto...", - "epimage-plugin-virhe-kuva-tyhja": "Valitse kuva.", - "epimage-plugin-virhe-viite-tyhja": "Lisättävää kuvaa ei ole valittu.", - "eqf": "Eurooppalainen tutkintojen viitekehys", - "erikoisammattitutkinto": "Erikoisammattitutkinto", - "esikatselu-varoitus": "Opetussuunnitelma on vielä kesken.", - "esiopetus": "Esiopetus", - "esitys": "Esitys", - "et-ole-lisannyt-viela-tutkintonimikkeita": "Tutkintonimikkeitä ei ole vielä lisätty", - "et-ole-viela-tallentanut-koulutuksenosia": "Et ole vielä liittänyt kaikkia koulutuksen osia perusteeseen", - "et-ole-viela-tallentanut-tutkinnonosia": "Et ole vielä liittänyt kaikkia tutkinnon osia perusteeseen", - "et-ole-vielä-tallentanut-tekstikappaleita": "Et ole vielä liittänyt kaikkia tekstikappaleita perusteeseen", - "et-ole-vielä-tallentanut-tutkinnonosia": "Et ole vielä liittänyt kaikkia tutkinnon osia perusteeseen", - "etsi-oppaista": "Etsi oppaista", - "etsi-perusteprojekteista": "Etsi perusteprojekteista...", - "etsi-rakenteesta": "Etsi rakenteesta...", - "etsi-sisallosta": "Rajaa sisältöä...", - "etsi-tiedotteista": "Etsi tiedotteista", - "etusivu": "Etusivu", - "etusivu.ammatilliset": "Ammatillinen koulutus", - "etusivu.eperusteet": "ePerusteet", - "etusivu.eperusteet.kuvaus": "ePerusteet-palvelussa voit tutustua voimassa oleviin opetussuunnitelmien ja tutkintojen perusteisiin. Perusteita julkaistaan palvelussa vaiheittain.", - "etusivu.esiopetuksen-peruste": "Esiopetuksen peruste", - "etusivu.hae-muita-opseja": "Hae muita opetussuunnitelmia", - "etusivu.lukiokoulutuksen-peruste": "Lukiokoulutuksen peruste", - "etusivu.nayta-kaikki-uutiset": "Näytä kaikki uutiset", - "etusivu.paikalliset-opsit": "Paikalliset opetussuunnitelmat", - "etusivu.perusopetuksen-peruste": "Perusopetuksen peruste", - "etusivu.tiedotteet": "Tiedotteet", - "etusivu.uusimmat-ammatilliset": "Uusimmat ammatillisen koulutuksen perusteet", - "etusivu.uusimmat-perusteet": "Uusimmat ePerusteet", - "etusivu.uutisia": "Uutisia", - "etusivu.valtakunnalliset-perusteet": "Valtakunnalliset ePerusteet", - "etusivulle": "Etusivulle", - "excel": "Excel", - "excel-avataan-tiedostoa": "Avataan tiedostoa", - "excel-ei-kahta-samaa": "Tutkintokoodin täytyy olla uniikki", - "excel-luetaan-tekstikappaleita": "Luetaan tekstikappaleita", - "excel-luetaan-tutkinnonosia": "Luetaan tutkinnonosia", - "excel-parsitaan-perustietoja": "Luetaan perustietoja", - "excel-tiedostossasi-oli-virheita": "Excel-tiedostossasi oli virheitä", - "excel-tiedostossasi-oli-virheitä": "Excel-tiedostossasi oli virheitä", - "fi": "Suomi", - "geneerinenarviointi": "Geneerinen arviointi", - "hae-koodi": "Hae koodi", - "hae-koodistosta": "Hae koodistosta", - "hae-perusteita": "Hae perusteita", - "hae-perusteprojekteja": "Hae perusteprojekteja", - "hae-ryhma": "Hae ryhmä", - "hae-tutkinnon-osia": "Hae tutkinnon osia", - "haetaan-koodistosta": "Haetaan koodistosta...", - "haetaan-koulutuksen-osia": "Haetaan koulutuksen osia...", - "haetaan-ryhmia": "Haetaan ryhmiä...", - "haetaan-tutkinnon-osia": "Haetaan tutkinnon osia...", - "haetaan-tyoryhmia": "Haetaan työryhmiä", - "haku": "Haku", - "haku-hakuehdot": "Hakuehdot", - "haku-kaikki-alat": "Kaikki koulutusalat", - "haku-kaikki-opintoalat": "Kaikki opintoalat", - "haku-kaikki-tutkinnot": "Kaikki tutkinnot", - "haku-kieli": "Kieli", - "haku-koulutuksen-nimi-placeholder": "Koulutuksen nimi", - "haku-koulutusala": "Koulutusala", - "haku-nayta-siirtymaajalla-olevat": "Näytä siirtymäajalla olevat", - "haku-nimi": "Nimi", - "haku-opintoala": "Opintoala", - "haku-otsikko": "Perusteen haku", - "haku-tulosten-maara": "Löydettyjen perusteiden määrä:", - "haku-tutkinnon-nimi-placeholder": "Tutkinnon nimi", - "haku-tyyppi": "Tyyppi", - "haku-voimaantulopvm": "Voimaantulopvm.", - "hallinta": "Hallinta", - "hallintapaneeli": "Hallintapaneeli", - "haluatko-jatkaa": "Haluatko jatkaa?", - "haluatko-varmasti-avata": "Haluatko varmasti avata geneerisen arviointisteikon muokattavaksi? Tämän jälkeen arviointi ei tulee valittavaksi tutkinnon osiin.", - "haluatko-varmasti-julkaista": "Haluatko varmasti julkaista geneerisen arviointisteikon? Tämän jälkeen arviointi tulee valittavaksi tutkinnon osiin eikä sitä voi poistaa.", - "haluatko-varmasti-poistaa-osion": "Haluatko varmasti poistaa osion?", - "haluatko-varmasti-ottaa-arvioinnin-kayttoon": "Haluatko varmasti muuttaa arvioinnin valittavaksi? Tämän jälkeen arvioinnin voi valita tutkinnoille.", - "haluatko-varmasti-poistaa-arvioinnin-kaytosta": "Haluatko varmasti poistaa arvioinnin valittavuuden? Tämän jälkeen arviointia ei voi enää valita tutkinnoille.", - "huom": "Huom!", - "isced": "ISCED", - "jarjesta": "Järjestä", - "jarjestysnumero": "Järjestysnumero", - "jatkoopinto-kelpoisuus": "Jatko-opintokelpoisuus", - "jnro": "Järjestysnumero", - "joku-toinen-on-muokannut-dokumenttia": "Joku toinen henkilö on muokannut dokumenttia. Voit joko perua omat muutoksesi tai jatkaa dokumentin editointia ja ylikirjoittaa toisen muutokset.", - "jonossa": "Luonti on jonossa", - "julkaise": "Julkaise", - "julkaistua-ei-voi-poistaa": "Kertaalleen jo julkaistua ei voi poistaa.", - "julkaisu-korvaa-perusteet": "Peruste korvaa seuraavat käytössä olevat perusteet:", - "julkaisu-onnistui": "Julkaisu onnistui", - "julkinen-tiedote": "Julkinen tiedote", - "julkinen-tiedote-header": "Julkinen", - "järjestelmävirhe-alku": "Tapahtui järjestelmävirhe ", - "järjestelmävirhe-loppu": ". Ole hyvä ja yritä uudelleen. Jos ongelma toistuu ota yhteyttä palvelun ylläpitäjään.", - "kaannettava-ohje": "Perusteen osa on valmis käännettäväksi", - "kaannos": "Käännös", - "kaikki": "Kaikki", - "kaikki-ilman-arkistoituja": "Kaikki", - "kaikki-kommentit": "Projektin kommentit", - "kaikki-koulutustyypit": "Kaikki koulutustyypit", - "kansainvaliset-sopimukset": "Kansainväliset sopimukset", - "kasitteet": "Käsitteet", - "katselet-vanhaa-versiota": "Tarkastelet vanhaa versiota sivusta.", - "katso-uusin-versio": "Katso uusin versio", - "kaynnista": "Käynnistä", - "kayttaja": "Käyttäjä", - "kayta-koodistosta": "Käytä koodistosta", - "kelvoton-pvm": "Kelvoton päivämäärä", - "keskeiset-sisallot": "Keskeiset sisällöt", - "keskeiset-sisaltoalueet": "Keskeiset sisältöalueet", - "keskustelu": "Keskustelu", - "kieli": "Kieli", - "kielikasvatus": "Kielikasvatus", - "kielikasvatus-kuvaus-header": "Kielikasvatus", - "kirjanmerkilla-pitaa-olla-nimi": "Kirjanmerkillä pitää olla nimi", - "kohde": "Kohde", - "kohdealue": "Tavoitealue", - "kohdealueet": "Tavoitealueet", - "koko-tutkinnon-muodostuminen": "Tutkinnon koko ja laajuus", - "kommentoi-muutosta": "Kommentoi muutosta", - "kommentointi": "Kommentointi", - "kommentti": "Kommentti", - "kommentti-ei-saa-ylittaa": "Kommentti ei saa olla yli {{ maara }} merkkiä pitkä.", - "kommentti-poistettu": "Kommentti poistettiin onnistuneesti", - "koodi": "Koodi", - "koodi-ei-liitetty": "Tutkinnon osa", - "koodi-ei-loydy": "Yhtään valittavaa koodia ei löytynyt", - "koodi-lisays-varmistus": "Lisätäänkö tutkinnon osan nimi koodistoon?", - "koodi-puuttuu": "Koodi puuttuu", - "tiedosto-puuttuu": "Tiedostoa ei ole valittu", - "tiedosto-lahetys-epaonnistui": "Tiedoston lähetys epäonnistui", - "koodi-virhe-1": "Koodia ei ole asetettu.", - "koodi-virhe-2": "Käyttämälläsi koodilla löytyi jo tutkinnon osa.", - "koodi-virhe-3": "Seuraavat kentät ovat vaadittuja: ", - "koodien-lisays-onnistui": "Koodien lisääminen onnistui", - "koodittomia-koulutuksen-osia": "Projektissa on koodittomia koulutuksen osia", - "koodittomia-tutkinnon-osia": "Kaikilla tutkinnon osilla ei koodia", - "kopio-leikelaudalle": "Kopioi leikelaudalle", - "kopioi": "Kopioi", - "kopioi-leikelaudalle": "Kopioi leikelaudalle", - "kopioi-muokattavaksi": "Kopioi muokattavaksi", - "kopioidaanko-asteikko-varmasti": "Haluatko varmasti kopioida arviointiasteikon?", - "kopioidaanko-tekstikappale": "Haluatko varmasti kopioida sisällön?", - "kopioidaanko-tutkinnonosa": "Haluatko varmasti kopioida sisällön?", - "kopiointi-onnistui": "Kopiointi onnistui", - "korjaa-virheet": "Korjaa seuraavat virheet", - "korosta": "Korosta", - "korvattava-diaari-on-oma-diaari": "Korvattavien perusteiden listalla oma diaarinumero", - "korvattava-peruste-on-eri-koulutustyyppia": "Korvattava peruste on eri koulutustyyppiä", - "korvattavaa-ei-loydy-jarjestelmasta": "Korvattavaa perustetta ei löydy järjestelmästä.", - "korvattavat-perusteet": "Korvattavat perusteet", - "koulutuksen-koodi": "Koulutuksen koodi", - "koulutuksen-muodostuminen": "Koulutuksen muodostuminen", - "koulutuksen-muodostuminen-muokkaus": "Koulutuksen muodostumisen muokkaus", - "koulutuksen-nimi": "Koulutuksen nimi", - "koulutuksen-osa-ei-sisaltoa": "Koulutuksen osalla ei ole sisältöä.", - "koulutuksen-osa-haku-placeholder": "Rajaa koulutuksen osia...", - "koulutuksen-osa-rakenteessa-ei-voi-poistaa": "Koulutuksen osaa ei voi poistaa, koska se on käytössä tutkinnon rakenteessa. Poista viite puusta ensin.", - "koulutuksen-osa-rakenteesta-poistettu": "Koulutuksen osa poistettu onnistuneesti.", - "koulutuksen-osan-arviointi-teksti": "Osaamisen arviointi tekstinä", - "koulutuksen-osan-asetettua-koodia-ei-koodistossa": "Koodistosta ei löytynyt koulutuksen osalle määritettyä koodia", - "koulutuksen-osan-koodi-kaytossa": "Valittu koulutuksen osan koodi on jo käytössä", - "koulutuksen-osia-ei-loytynyt": "Koulutuksen osia ei löytynyt.", - "koulutuksen-osien-koodit-kaytossa-muissa-koulutuksen-osissa": "Koulutuksen osan koodit jo käytössä perusteen muissa osissa", - "koulutuksen-rakenne": "Koulutuksen rakenne", - "koulutuksen-rakenteen-kuvaus": "Koulutuksen rakenteen kuvaus", - "koulutuksen-tyyppi": "Koulutuksen tyyppi", - "koulutuksenosa": "Koulutuksen osa", - "koulutuksenosa-koko": "Koko", - "koulutuksenosa-kopioitu-onnistuneesti": "Koulutuksen osa kopioitu onnistuneesti", - "koulutuksenosa-laajuus": "Koulutuksen osan laajuus", - "koulutuksenosa-nimi": "Nimi", - "koulutuksenosa-save-fail": "Seuraavia koulutuksen osia ei pystytty tallentamaan onnistuneesti:", - "koulutuksenosat": "Koulutuksen osat", - "koulutukset": "Koulutukset", - "koulutus": "Koulutus", - "koulutus-tyyppi": "Koulutus tyyppi", - "koulutusalakoodi": "Koulutusalakoodi", - "koulutuskoodi-ongelmat": "Koulutuskoodi ongelmat", - "koulutuskoodi-puuttuu": "Perusteelta puuttuu koulutuskoodi", - "koulutustyypit": "Koulutustyypit", - "koulutustyyppi": "Koulutustyyppi", - "koulutustyyppi-label": "Koulutus/tutkintotyyppi", - "koulutustyyppi_1": "Ammatillinen perustutkinto", - "koulutustyyppi_11": "Ammattitutkinto", - "koulutustyyppi_12": "Erikoisammattitutkinto", - "koulutustyyppi_14": "Aikuisten lukiokoulutus", - "koulutustyyppi_15": "Esiopetus", - "koulutustyyppi_16": "Perusopetus", - "koulutustyyppi_17": "Aikuisten perusopetus", - "koulutustyyppi_18": "Valma", - "koulutustyyppi_2": "Lukiokoulutus", - "koulutustyyppi_20": "Varhaiskasvatus", - "koulutustyyppi_22": "Perusopetukseen valmistava", - "koulutustyyppi_23": "Valmistava lukiokoulutus", - "koulutustyyppi_5": "Telma", - "koulutustyyppi_6": "Lisäopetus", - "koulutustyyppi_999907": "Taiteen perusopetus", - "koulutusvienti": "Koulutusvienti", - "kpl": "kpl", - "kriteereita-ei-lisatty": "Kriteereitä ei ole lisätty osaamistasolle", - "kriteerit": "Kriteerit", - "kunnat": "Kunnat", - "kurssi-action": "luo kurssi", - "kurssi-koodi": "Koodistokoodi", - "kurssi-koodi-header": "Koodistokoodi", - "kurssi-kuvaus-header": "Kuvaus", - "kurssi-lokalisoitu-koodi": "Koodi", - "kurssi-lokalisoitu-koodi-header": "Koodi", - "kurssi-nimi-header": "Nimi", - "kurssi-osa-arviointi": "Arviointi", - "kurssi-osa-keskeinenSisalto": "Keskeiset sisällöt", - "kurssi-osa-tavoitteet": "Tavoitteet", - "kurssi-osa-tavoitteetJaKeskeinenSisalto": "Tavoitteet ja keskeiset sisällöt", - "kurssi-peruuta": "Peruuta", - "kurssi-sisallot-header": "Sisällöt", - "kurssi-tavoitteet-header": "Tavoitteet", - "kurssi-title": "Kurssi", - "kurssi-tyypin-kuvaus": "Kuvaus", - "kurssi-tyyppi": "Tyyppi", - "kurssi-tyyppi-header": "Tyyppi", - "kurssi-tyyppi-selite-paikallinen": "Paikallinen", - "kurssi-tyyppi-selite-pakollinen": "Pakollinen", - "kurssi-tyyppi-selite-soveltava": "Soveltava", - "kurssi-tyyppi-selite-syventava": "Syventävä", - "kurssi-tyyppi-selite-valtakunnallinen": "Valtakunnallinen", - "kurssi-tyyppi-selite-valtakunnallinen_soveltava": "Soveltava", - "kurssi-tyyppi-selite-valtakunnallinen_syventava": "Syventävä", - "kurssin-sisalto": "Kurssin sisältö", - "kurssit": "Kurssit", - "kuvaus": "Kuvaus", - "kvliite": "kv-liite", - "kvliite-validointi-arvosana-asteikko": "Arvosana-asteikko/hyväksymisvaatimukset ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-jatkoopinto-kelpoisuus": "Jatko-opintokelpoisuus ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-kansainvaliset-sopimukset": "Kansainväliset sopimukset", - "kvliite-validointi-lisatietoja": "Lisätietoja ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-muodostumisen-kuvaus-naytto": "Tutkinnon muodostuminen (naytto) ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-muodostumisen-kuvaus-ops": "Tutkinnon muodostuminen (ops) ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-muodostumisen-kuvaus-reformi": "Tutkinnon muodostuminen (reformi) ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-nimi": "Perusteen nimeä ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-pohjakoulutusvaatimukset": "Pohjakoulutusvaatimukset ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-saados-perusta": "Säädösperusta ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-suorittaneen-osaaminen": "Tutkinnon suorittaneen osaaminen ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-taso-koodi-puute": "Koulutuskoodirelaatioista puuttuu tasot.", - "kvliite-validointi-tasot": "Tutkinnon taso ei ole määritelty kv-liitettä varten", - "kvliite-validointi-tutkinnon-virallinen-asema": "Tutkinnon virallinen asema ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-tutkinnosta-paattava-viranomainen": "Tutkinnosta päättävän kansallisen/alueellisen viranomaisen nimi ja asema ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-tutkintotodistuksen-saaminen": "Tutkintotodistuksen voi säädösten mukaan saada seuraavilla tavoilla ei ole lokalisoitu kv-liitettä varten", - "kvliite-validointi-tyotehtavat-joissa-voi-toimia": "Työtehtäviä, joissa tutkinnon suorittanut voi toimia ei ole lokalisoitu kv-liitettä varten", - "kvliiteen-yksiportainen-arviointiasteikko": "Hyväksytty / Hylätty", - "kyllä": "Kyllä", - "kysy-neuvoa-anna-palautetta": "Kysy neuvoa - Anna palautetta", - "laadinnan-esikatselu-info": "Tämä on kesken olevan perusteprojektin esikatselu. Kaikki sisältö ei välttämättä näy oikein.", - "laaja-alainen-osaaminen": "Laaja-alainen osaaminen", - "laaja-alainen-osaaminen-kuvaus": "Laaja-alaisen osaamisen kuvaus", - "laaja-alaisen-osaamisen-alueet": "Laaja-alaisen osaamisen alueet", - "laaja-alaiset-osaamiset": "Laaja-alaiset osaamiset", - "laajuuden-maksimi-ei-voi-olla-pienempi-tai-sama-kuin-minimi": "Laajuuden maksimi ei voi olla pienempi tai sama kuin minimi", - "laajuuden-yksikkö": "Laajuuden yksikkö", - "laajuus": "Laajuus", - "laajuus-maarita-alueella": "Määritä koulutuksen laajuus", - "ladataan-tyoryhman-tietoja": "Haetaan työryhmien tietoja", - "laheta-peruste": "Lähetä peruste", - "lajittelu-jarjestysnumero": "No.", - "lataa": "Lataa", - "lataa-dokumentti": "Lataa dokumentti", - "lataa-peruste-pdf-muodossa": "Lataa peruste pdf-muodossa", - "lataa-perusteprojekti": "Lataa perusteprojekti", - "lataa-uusi-liitetiedosto": "Lataa uusi liitetiedosto", - "leikelauta": "Leikelauta", - "leikelauta-varoitus": "Leikelaudalle on sijoitettu rakenteen osia. Jos poistut rakenteen muokkaustilasta, leikelauta tyhjennetään ja sen sisältö menetetään.", - "liita-leikelaudalta": "Liitä leikelaudalta", - "liita-perusteeseen": "Liitä perusteeseen", - "liita-perusteprojekti-tiedotteeseen": "Liitä perusteprojekti tiedotteeseen", - "liite-tekstikappale": "Tekstikappale on liite", - "liitetiedosto": "Liitetiedosto", - "liitetiedosto-pdf-hylatty": "Voit ladata vain PDF-tyyppisiä liitteitä.", - "liitetiedosto-tallennettu": "Liitetiedosto tallennettu", - "liitetiedosto-tallennusvirhe": "Liitetiedoston tallennus epäonnistui", - "liitetiedosto-valitse": "Valitse liitetiedosto...", - "liitetyt-tavoitteet": "Liitetyt tavoitteet", - "liittamattomia-koulutuksen-osia": "Projektissa on rakenteeseen liittämättömiä koulutuksen osia.", - "liittamattomia-tutkinnon-osia": "Liittämättömiä tutkinnon osia", - "liitteet": "Liitteet", - "liitteet-kuvaus":"Tästä voidaan lisätä liitetiedosto (PDF) perusteeseen. Liitteet eivät siirry suoraan perusteen näkyviin tietoihin, vaan ne täytyy liittää myös joko määräyskirjeeseen tai muutosmääräykseen.", - "liitä-suoritustapaan": "Liitettävä suoritustapa", - "lisaa": "Lisää", - "lisaa-aihekokonaisuus": "Lisää aihekokonaisuus", - "lisaa-aihekokonaisuus-action": "Lisää aihekokonaisuus", - "lisaa-aihekokonaisuus-otsikko-header": "Aihekokonaisuuden otsikko", - "lisaa-aihekokonaisuus-title": "Lisää aihekokonaisuus", - "lisaa-aihekokonaisuus-yleiskuvaus-header": "Aihekokonaisuuden kuvaus", - "lisaa-ainakin-yksi-kieli": "Perusteella on oltava vähintään yksi kieli.", - "lisaa-aliotsikko": "Lisää aliotsikko", - "lisaa-arviointi": "Lisää arviointi", - "lisaa-diaari": "Lisää diaarinumero", - "lisaa-geneerinen-arviointi": "Lisää geneerinen arviointi", - "lisaa-kieli": "Lisää kieli", - "lisaa-kohdealue": "Lisää kohdealue", - "lisaa-kommentti": "Lisää kommentti", - "lisaa-koodi": "Lisää koodi", - "lisaa-koodistoon": "Lisää koodistoon", - "lisaa-koodittomat-koodistoon": "Lisää koodittomat koodistoon", - "lisaa-koulutuksenosa": "Lisää koulutuksen osa", - "lisaa-koulutus": "Lisää koulutuskoodi", - "lisaa-kriteeri": "Lisää kriteeri", - "lisaa-kurssi": "Lisää kurssi", - "lisaa-kurssi-action": "Lisää kurssi", - "lisaa-kurssi-title": "Lisää lukiokurssi", - "lisaa-laaja-alainen-osaaminen": "Lisää laaja-alainen osaaminen", - "lisaa-laajaalainen": "Lisää laaja-alainen", - "lisaa-liitetiedosto": "Lisää liitetiedosto", - "lisaa-moduuli": "Lisää moduuli", - "lisaa-muutosmaarays": "Lisää muutosmääräys", - "lisaa-nimike": "Lisää nimike", - "lisaa-opetuksen-tavoite": "Lisää opetuksen tavoite", - "lisaa-opetuksen-yleinen-tavoite": "Lisää opetuksen yleinen tavoite", - "lisaa-oppiaine": "Lisää oppiaine", - "lisaa-oppimaara": "Lisää oppimäärä", - "lisaa-osa-alue": "Lisää osa-alue", - "lisaa-osaamiskokonaisuus": "Lisää osaamiskokonaisuus", - "lisaa-osaamistavoite": "Lisää osaamistavoite", - "lisaa-painopiste": "Lisää painopiste", - "lisaa-sisalto": "Lisää sisältöä", - "lisaa-sisalto-osa": "Lisää osa", - "lisaa-sisaltoalue": "Lisää sisältöalue", - "lisaa-taiteenala": "Lisää taiteenala", - "lisaa-tavoite": "Lisää tavoite", - "lisaa-tavoitealue": "Lisää tavoitealue", - "lisaa-tiedote": "Lisää tiedote", - "lisaa-tutkinnonosa": "Lisää tutkinnon osa", - "lisaa-tutkintokohtainen-osa": "Lisää tekstikappale", - "lisaa-tutkintonimike": "Lisää tutkintonimike", - "lisaa-tyoryhma": "Lisää työryhmä", - "lisaa-vaatimus": "Lisää ammattitaitovaatimus", - "lisaa-vaatimus-ilman-kohdealuetta": "Lisää ammattitaitovaatimus ilman kohdealuetta", - "lisaa-vaihe": "Lisää vaihe", - "lisaa-valittavaksi": "Lisää valittavaksi", - "lisaa-vapaa-teksti": "Lisää tekstikappale", - "lisaa-vuosiluokkakokonaisuus": "Lisää vuosiluokkakokonaisuus", - "lisaa-yleisettavoitteet-kuvaus-header": "Opetuksen yleisten tavoitteiden kuvaus", - "lisaa-yleisettavoitteet-otsikko-header": "Opetuksen yleisten tavoitteiden otsikko", - "lisaopetus": "Lisäopetus", - "lisatieto": "Lisätieto", - "lisatietoja": "Lisätietoja", - "lista": "Lista", - "lopetus-aloituksen-jälkeen": "Toimikauden päättymispäivämäärä täytyy olla aloitusajankohdan jälkeen.", - "lops": "Lukiokoulutus 2015", - "lops2019": "Lukiokoulutus 2019", - "loydetty-termien-maara": "Löydettyjen käsitteiden määrä:", - "loydettyjen-opsien-maara": "Löydettyjen opetussuunnitelmien määrä", - "lue-lisaa": "Näytä lisää...", - "lukio-etsi-kursseista": "Etsi kursseista...", - "lukio-etsi-liitetyista-kursseista": "Etsi liitetyistä kursseista...", - "lukio-etsi-liittamattomista-kursseista": "Etsi liittämättömistä kursseista...", - "lukio-etsi-oppiaineista": "Etsi oppiaineista...", - "lukio-etsi-oppiaineista-ja-kursseista": "Etsi...", - "lukio-kurssi-tyyppi-otsikko-paikallinen_soveltava": "Paikallinen soveltava", - "lukio-kurssi-tyyppi-otsikko-paikallinen_syventava": "Paikallinen syventävä", - "lukio-kurssi-tyyppi-otsikko-valtakunnallinen_pakollinen": "Pakollinen", - "lukio-kurssi-tyyppi-otsikko-valtakunnallinen_soveltava": "Valtakunnallinen soveltava", - "lukio-kurssi-tyyppi-otsikko-valtakunnallinen_syventava": "Valtakunnallinen syventävä", - "lukio-kurssi-tyyppi-placeholder-paikallinen_soveltava": "Oppiaineen paikallisten soveltavien kurssien kuvaus...", - "lukio-kurssi-tyyppi-placeholder-paikallinen_syventava": "Oppiaineen paikallisten syventävien kurssien kuvaus...", - "lukio-kurssi-tyyppi-placeholder-valtakunnallinen_pakollinen": "Oppiaineen pakollisten kurssien kuvauksen paikallinen tarkenne...", - "lukio-kurssi-tyyppi-placeholder-valtakunnallinen_soveltava": "Oppiaineen valtakunnallisten soveltavien kurssien kuvauksen paikallinen tarkenne...", - "lukio-kurssi-tyyppi-placeholder-valtakunnallinen_syventava": "Oppiaineen valtakunnallisten syventävien kurssien kuvauksen paikallinen tarkenne...", - "lukio-liitamattomat-kurssit": "Liittämättömät kurssit", - "lukio-liitetyt-kurssit": "Liitetyt kurssit", - "lukio-liitetyt-kurssit-ohje": "Voit lisätä saman kurssin toisen oppiaineen/oppimäärän alle toiminnon 'Muokkaa rakennetta' kautta", - "lukio-peruste-esikatseltavissa": "Lukion peruste esikatseltavissa", - "lukiokoulutus": "Lukiokoulutus", - "lukiokoulutus2019": "Lukiokoulutus 2019", - "lukiokoulutusyleisettavoitteet-palautettu": "Valittu versio palautettu onnistuneesti", - "lukiokurssi-palautettu": "Valittu versio palautettu onnistuneesti", - "lukiokurssit": "Kurssit", - "lukiooppiaine-palautettu": "Valittu versio palautettu onnistuneesti", - "lukiooppiaine-poistettu": "Oppiaine poistettu onnistuneesti", - "lukiooppiaineet-kurssit-tab-header": "Kurssit", - "lukiooppiaineet-oppiaineet-tab-header": "Oppiaineet", - "lukiooppiaineet-puu-tab-header": "Opetussuunnitelma", - "lukiorakenne-palautettu": "Valittu versio palautettu onnistuneesti", - "lukitus-kayttajalla": "Sivu on lukittu. Käyttäjä {{user}} muokkaa sivua.", - "luo": "Luo", - "luo-kooste": "Luo kooste excel", - "luo-kv-liite": "Luo KV-liite", - "luo-opas": "Luo opas", - "luo-opas-nappi": "Luo opas", - "luo-pdf": "Luo PDF", - "luo-pdf-dokumentti": "Luo PDF-dokumentti", - "luo-pdf-dokumentti-oppaasta": "Luo dokumentti oppaasta", - "luo-pdf-dokumentti-perusteesta": "Luo PDF-dokumentti perusteesta", - "luo-perustepohja-nappi": "Luo perustepohja", - "luo-perusteprojekti-nappi": "Luo projekti", - "luo-tyoryhma": "Luo työryhmä", - "luo-uusi": "Luo uusi", - "luo-uusi-opas": "Luo uusi opas", - "luo-uusi-perustepohja": "Luo uusi perustepohja", - "luo-uusi-ryhma": "Luo uusi ryhmä", - "luodaan": "Luonti käynnissä", - "luoja": "Luoja", - "luonnos": "Luonnos", - "luonti-diaarinumero-ohje": "Lisää perustetyöryhmän asettamispäätöksen diaarinumero.", - "luonti-koulutuksen-osa": "Koulutuksen osan luonti", - "luonti-opas-nimi-ohje": "Oppaan nimi", - "luonti-paatospaivamaara-ohje": "Lisää perustetyöryhmän asettamisen päätöspäivämäärä.", - "luonti-projektin-nimi-ohje": "Anna projektin nimi muodossa '[Nimi] tutkinnon perusteprojekti' (esim. 'Rakennustuotannon ammattitutkinnon perusteprojekti').", - "luonti-tekstikappale": "Uusi tekstikappale", - "luonti-tutkinnon-osa": "Uusi tutkinnon osa", - "luotu": "Luotu", - "maarayksen-diaarinumero": "Määräyksen diaarinumero", - "maarayksen-paatospaivamaara": "Määräyksen päätöspäivämäärä", - "maarayskirje": "Määräyskirje", - "maksimi": "Maksimi", - "mandatory-odottamaton-virhe": "Kaikkia pakollisia kenttiä ei ole täytetty", - "mandatory-otsikkoa-ei-asetettu": "Otsikko on pakollinen", - "merkitse-suosikiksi": "Merkitse suosikiksi", - "minimi": "Minimi", - "moduuli-koodi-moneen-kertaan": "Moduulin koodi käytetty moneen kertaan", - "moduuli-laajuus-puuttuu": "Moduulin laajuus puuttuu tai ei ole välillä 1-4", - "moduuli-puuttuva-koodi": "Moduulilta puuttuu koodi", - "moduulin-kuvaus-placeholder": "Moduulin kuvaus", - "moduulit": "Moduulit", - "muissa-tutkinnon-osissa": "Muissa tutkinnon osissa", - "muodostuminen": "Muodostuminen", - "muodostumis-rakenne-validointi-laajuus": "Ryhmän osien yhteenlaskettu laajuus ei riitä kattamaan tarvittavaa laajuutta", - "muodostumis-rakenne-validointi-maara": "Ryhmän osien yhteenlaskettu määrä ei riitä kattamaan tarvittavaa määrää", - "muodostumis-rakenne-validointi-uniikit": "Ryhmä sisältää samoja tutkinnon osia", - "muodostumissaannot": "Tutkinnon rakenne", - "muokattavana": "Muokattavana", - "muokattu": "Muokattu", - "muokattu-viimeksi": "Muokattu viimeksi", - "muokkaa": "Muokkaa", - "muokkaa-aihekokonaisuus-action": "Tallenna", - "muokkaa-aihekokonaisuus-title": "Muokkaa aihekokonaisuutta", - "muokkaa-kohdealueita": "Muokkaa tavoitealueita", - "muokkaa-koulutuksen-osaa": "Muokkaa koulutuksen osaa", - "muokkaa-kurssia": "Muokkaa kurssia", - "muokkaa-kurssia-action": "Tallenna muutokset", - "muokkaa-lisaa-vapaa-teksti": "Lisää tekstikappale", - "muokkaa-muodostumissääntöjä": "Muokkaa", - "muokkaa-oppiainetta": "Muokkaa oppiainetta", - "muokkaa-oppimaaraa": "Muokkaa oppimäärää", - "muokkaa-osa-aluetta": "Muokkaa osa-aluetta", - "muokkaa-osaaminen": "Laaja-alainen osaaminen - muokkaa osaamiskokonaisuutta", - "muokkaa-rakennetta": "Muokkaa rakennetta", - "muokkaa-ryhmaa": "Muokkaa ryhmää", - "muokkaa-tekstikappaleiden-rakennetta": "Muokkaa tekstikappaleiden rakennetta", - "muokkaa-termia": "Muokkaa käsitettä", - "muokkaa-tiedotetta": "Muokkaa tiedotetta", - "muokkaa-tutkinnon-osaa": "Muokkaa tutkinnon osaa", - "muokkaa-tyoryhmaa": "Muokkaa työryhmää", - "muokkaa-vaihe": "Muokkaa vaihetta", - "muokkaa-vuosiluokkakokonaisuutta": "Muokkaa vuosiluokkakokonaisuutta", - "muokkaaja": "Muokkaaja", - "muokkaus": "Muokkaus", - "muokkaus-kohdealueet": "Muokkaa tavoitealueita", - "muokkaus-koulutuksen-osa": "Koulutuksen osan muokkaus", - "muokkaus-koulutuksen-osa-tallennettu": "Koulutuksen osa tallennettu onnistuneesti.", - "muokkaus-koulutuksen-osan-ammattitaidon-osoittamistavat-header": "Osaamisen arviointi tekstinä", - "muokkaus-koulutuksen-osan-ammattitaidon-osoittamistavat-placeholder": "Ammattitaidon osoittamistavat", - "muokkaus-koulutuksen-osan-ammattitaitovaatimukset-header": "Ammattitaitovaatimukset", - "muokkaus-koulutuksen-osan-ammattitaitovaatimukset-placeholder": "Listaa tähän koulutuksen osan ammattitaitovaatimukset", - "muokkaus-koulutuksen-osan-arviointi-taulukko-header": "Osaamisen arviointi taulukkona", - "muokkaus-koulutuksen-osan-arviointi-teksti-header": "Osaamisen arviointi tekstinä", - "muokkaus-koulutuksen-osan-arviointi-teksti-placeholder": "Kirjoita tähän arviointikriteerit", - "muokkaus-koulutuksen-osan-osaamisen-arviointi-header": "Osaamisen arviointi", - "muokkaus-koulutuksen-osan-osaamisen-arviointi-tekstina-header": "Osaamisen arviointi tekstinä", - "muokkaus-koulutuksen-osan-osaamisentavoitteet-header": "Osaamisentavoitteet", - "muokkaus-koulutuksen-osan-tavoitteet-header": "Tavoitteet", - "muokkaus-koulutuksen-osan-tavoitteet-placeholder": "Kirjoita tähän koulutuksen osan tavoitteet", - "muokkaus-laaja-alainen-osaaminen-header": "Laaja-alainen osaaminen", - "muokkaus-lisaa-osio": "Lisää osio", - "muokkaus-lisaa-sisalto": "Lisää sisältö", - "muokkaus-paikallisesti-paatettavat-asiat-header": "Paikallisesti päätettävät asiat", - "muokkaus-paikallisesti-paatettavat-asiat-placeholder": "Kirjoita tähän paikallisesti päätettävät asiat", - "muokkaus-rakenne": "Muokkaa tutkinnon rakennetta", - "muokkaus-siirtyma-edellisesta-header": "Siirtymä edellisestä vaiheesta", - "muokkaus-siirtyma-edellisesta-placeholder": "Kirjoita tähän siirtymän sisältö", - "muokkaus-siirtyma-seuraavaan-header": "Siirtymä seuraavaan vaiheeseen", - "muokkaus-siirtyma-seuraavaan-placeholder": "Kirjoita tähän siirtymän sisältö", - "muokkaus-teksikappaleen-nimi-header": "Otsikko", - "muokkaus-teksikappaleen-nimi-placeholder": "Kirjoita tähän otsikko", - "muokkaus-tekstikappale": "Muokkaa tekstikappaletta", - "muokkaus-tekstikappale-tallennettu": "Tekstikappale tallennettu onnistuneesti", - "muokkaus-tekstikappaleen-teksti-header": "Kappaleen teksti", - "muokkaus-tekstikappaleen-teksti-placeholder": "Kirjoita tähän kappaleen teksti", - "muokkaus-tutkinnon-jarjestysnumero": "Järjestysnumero", - "muokkaus-tutkinnon-osa": "Muokkaa tutkinnon osaa", - "muokkaus-tutkinnon-osa-tallennettu": "Tutkinnon osa tallennettu onnistuneesti", - "muokkaus-tutkinnon-osan-ammattitaidon-osoittamistavat-header": "Ammattitaidon osoittaminen", - "muokkaus-tutkinnon-osan-ammattitaidon-osoittamistavat-placeholder": "Listaa tähän ammattitaidon osoittamistavat", - "muokkaus-tutkinnon-osan-ammattitaitovaatimukset-2019-header": "Ammattitaitovaatimukset", - "muokkaus-tutkinnon-osan-ammattitaitovaatimukset-header": "Ammattitaitovaatimukset", - "muokkaus-tutkinnon-osan-ammattitaitovaatimukset-placeholder": "Listaa tähän tutkinnon osan ammattitaitovaatimukset", - "muokkaus-tutkinnon-osan-ammattitaitovaatimukset-taulukko-header": "Ammattitaitovaatimukset taulukkona", - "muokkaus-tutkinnon-osan-ammattitaitovaatimukset-teksti-header": "Ammattitaitovaatimukset tekstinä", - "muokkaus-tutkinnon-osan-arviointi-taulukko-header": "Arviointi taulukkona", - "muokkaus-tutkinnon-osan-arviointi-teksti-header": "Osaamisen arviointi", - "muokkaus-tutkinnon-osan-arviointi-teksti-placeholder": "Kirjoita tähän arviointikriteerit", - "muokkaus-tutkinnon-osan-geneerinen-arviointi-header": "Geneerinen arviointi", - "muokkaus-tutkinnon-osan-koodi-header": "Koodi", - "muokkaus-tutkinnon-osan-nimi-header": "Nimi", - "muokkaus-tutkinnon-osan-tavoitteet-header": "Tavoitteet", - "muokkaus-tutkinnon-osan-tavoitteet-placeholder": "Kirjoita tähän tutkinnon osan tavoitteet", - "muokkaus-vuosiluokkakokonaisuuden-osa": "Muokkaa vuosiluokkakokonaisuuden osaa", - "muokkaus-vuosiluokkakokonaisuuden-tehtava-header": "Vuosiluokkakokonaisuuden tehtävä", - "muokkaus-vuosiluokkakokonaisuuden-tehtava-placeholder": "Kirjoita tähän vuosiluokkakokonaisuuden tehtävä", - "muutosmaaraykset": "Muutosmääräykset", - "myos-luonnokset": "Myös luonnokset", - "määritelty": "Perusteessa määriteltävä", - "määrittelemätön": "Tutkinnossa määriteltävä", - "navi.ammatillinenaikuiskoulutus": "Ammatillinen aikuiskoulutus", - "navi.ammatillinenperuskoulutus": "Ammatillinen peruskoulutus", - "navi.esiopetus": "Esiopetus", - "navi.etusivu": "Etusivu", - "navi.lisaopetus": "Lisäopetus", - "navi.lukio": "Lukio", - "navi.lukiokoulutus": "Lukiokoulutus", - "navi.opetussuunnitelmat": "Opetussuunnitelmat", - "navi.perusopetus": "Perusopetus", - "navi.peruste": "Peruste", - "navi.tiedote": "Tiedote", - "navi.valikkon-otsikko": "ePerusteet valikko", - "navi.valmentavakoulutus": "Valmentava koulutus", - "navi.varhaiskasvatus": "Varhaiskasvatus", - "nayta": "Näytä", - "nayta-aliviestit": "Näytä vastaukset", - "nayta-kaannosvirheet": "Näytä puuttuvat käännökset", - "nayta-kuvaukset": "Näytä kuvaukset", - "nayta-myos-vanhentuneet": "Näytä myös vanhentuneet", - "nayta-osaamiskokonaisuuden-kuvaus": "Näytä osaamiskokonaisuuden yleiskuvaus", - "nayta-perusteen-teksti": "Näytä tukiteksti", - "nayta-ryhman-kuvaus": "Näytä ryhmän kuvaus", - "nayta-versiohistoria": "Historia", - "nayta-virheet": "Tarkista rakenne", - "naytto": "Tutkinto", - "nimeton": "", - "nimeton-kurssi": "Nimetön kurssi", - "nimeton-oppiaine": "Nimetön oppiaine", - "nimeton-oppimaara": "Nimetön oppimäärä", - "nimeton-tavoite": "Nimetön tavoite", - "nimeton-vierastutkinto": "Nimetön vieras tutkinnon osa", - "nimi": "Nimi", - "nimi-on-jo-kaytossa": "Työryhmä on jo olemassa. Valitse toinen nimi.", - "nimi-on-pakollinen": "Otsikko on pakollinen.", - "nqf": "Kansallinen tutkintojen viitekehys", - "näytä": "Näytä", - "näytä-kaikki": "Näytä kaikki", - "odotettu-arvo": "Odotettu arvo", - "odottamaton-virhe": "Tapahtui odottamaton virhe", - "ohje": "Ohje", - "ohje-hallintapaneeli": "Hallintapaneeli on tarkoitettu koko palvelun laajuisten toimintojen saavuttamiseksi.", - "ohje-julkinen-tiedote": "Julkinen tiedote näkyy julkisesti opintopolku palvelun puolella", - "ohje-koulutuksenosa-tyyppi": "

    Koulutuksen osan tyyppi määrittää osalle täytettävät sisällöt.

    koulutuskohtainen: Koulutuksen osalle määritetään sisältö ja arviointikriteerit.

    Yhteinen: koulutuksen osalle määritetään osakohtaiset osa-alueet, joille kullekin määritellään oma sisältö ja arviointikriteerit.

    ", - "ohje-moduuli-pakollinen": "Pakollinen moduuli täytyy kuulua johonkin opintojaksoon paikallisessa opetussuunnitelmassa.", - "ohje-muodostuminen-koulutuksenosa": "Valitse koulutuksen osa ja vie haluttuun kohtaan rakenteessa.", - "ohje-muodostuminen-ryhma": "Luo ryhmä ja vie haluttuun kohtaan rakenteessa.", - "ohje-muodostuminen-tutkinnonosat": "Valitse tutkinnon osa ja vie haluttuun kohtaan rakenteessa.", - "ohje-oppaat": "Oppaat", - "ohje-perusteprojekti": "Tämän näkymän kautta voi hallinnoida perusteprojekteja ja pohjia.", - "ohje-perusteprojektiliitos-tiedote": "Linkittää perusteprojektin osaksi tiedotetta", - "ohje-ryhma-koko": "Koko määrittää montako osaa ryhmä voi sisältää", - "ohje-ryhma-laajuus": "Laajuus määrittää kuinka monen yksikön edestä ryhmä voi sisältää osia", - "ohje-ryhma-rooli": "

    Perusteessa määriteltävä: Ryhmän sisältö määritellään perustepuun luonnin yhteydessä.

    Tutkinnossa määriteltävä: Ryhmälle annetaan vain muodostumissäännöt ja sen sisältö määritellään paikallisen laadinnan puolella.

    ", - "ohje-tiedotteet": "Tämän näkymän kautta voi hallinnoida tiedotteita.", - "ohje-tutkinnon-osan-tuonti": "Vain julkaistuista ja esikatselussa olevista perusteista voi tuoda tutkinnon osia.", - "ohje-tutkinnonosa-tyyppi": "

    Tutkinnon osan tyyppi määrittää osalle täytettävät sisällöt.

    Tutkintokohtainen: Tutkinnon osalle määritetään sisältö ja arviointikriteerit.

    Yhteinen: Tutkinnon osalle määritetään osakohtaiset osa-alueet, joille kullekin määritellään oma sisältö ja arviointikriteerit.

    ", - "ohje-tyoryhma-luonti": "

    Projektin perustetyöryhmä voidaan jakaa työryhmiin. Perusteen sisältö voidaan merkata luoduille työryhmille.

    Kun työryhmä on luotu, perusteen sisältö voidaan merkata luodulle työryhmälle sisällön yhteydessä.

    ", - "ohje-yleinen-tiedote": "Yleinen tiedote näkyy julkisella puolella myös etusivulla", - "ok": "OK", - "oletus": "Oletus", - "oma-diaarinumero": "Peruste ei voi korvata itseään", - "omat-suosikit": "Omat suosikit", - "ominaisuus-ei-tuettu": "Ominaisuus ei ole tuettu käyttämälläsi selaimella.", - "ongelma": "Ongelma", - "ongelmalliset-kuvaus": "Tähän näkymään kertyvät ne perusteprojektit, joissa on tutkinnon osia, joilla on koodeja, jotka eivät ole liitetty koulutuskoodeihin.", - "ongelmalliset-otsikko": "Ongelmalliset koodit", - "opetuksen-kohdealueet": "Opetuksen tavoitealueet", - "opetuksen-sisallot": "Oppiaineet", - "opetuksen-tavoitteet": "Opetuksen tavoitteet", - "opetuksen-yleiset-tavoitteet": "Opetuksen yleiset tavoitteet", - "opetus": "Opetus", - "opetussuunnitelma": "Opetussuunnitelma", - "opetussuunnitelman-nimi": "Opetussuunnitelman nimi", - "opetussuunnitelman-tiedot": "Opetussuunnitelman tiedot", - "opintoluokitus": "Opintoluokitus", - "opintopolku": "Opintopolku", - "OPINTOVIIKKO": "ov", - "opiskelija": "Opiskelija", - "opiskelija-tai-tutkinnon-suorittaja": "Opiskelija tai tutkinnon suorittaja", - "opiskeluymparisto-ja-tyotavat": "Opiskelijaympäristö ja työtavat", - "oppaan-kielet": "Oppaan kielet", - "oppaan-nimea-ei-ole-kaikilla-kielilla": "Oppaalle ei ole määritelty nimeä kaikilla kielillä.", - "oppaan-nimi-label": "Oppaan nimi", - "oppaan-oid-label": "Opastyöryhmä", - "oppaan-tiedot": "Oppaan tiedot", - "oppaat": "Oppaat", - "oppiaine": "Oppiaine", - "oppiaine-ja-tehtava": "Oppiaine ja tehtävä", - "oppiaine-koodi-moneen-kertaan": "Sama oppiainekoodi usealla oppiaineella", - "oppiaine-kurssit": "Kurssit", - "oppiaine-osio-arviointi": "Oppilaan oppimisen arviointi", - "oppiaine-osio-lukio-arviointi": "Arviointi", - "oppiaine-osio-ohjaus": "Ohjaus ja tuki", - "oppiaine-osio-osaalue": "Osa-alue", - "oppiaine-osio-sisaltoalueinfo": "Oppiaineen sisältöalueinfo", - "oppiaine-osio-tavoitteet": "Opetuksen tavoitteet", - "oppiaine-osio-tehtava": "Oppiaineen tehtävä", - "oppiaine-osio-tyotavat": "Oppimisympäristöt ja työtavat", - "oppiaine-puuttuva-koodi": "Oppiaineelta puuttuu koodi", - "oppiaine-virheellinen-koodi": "Oppiaineella virheellinen koodi", - "oppiaine-virheellinen-koodisto": "Oppiaineella virheellinen koodisto", - "oppiaineella-ei-vuosiluokkasisaltoja": "Oppiaineelle ei ole määritetty vuosiluokkakohtaisia sisältöjä.", - "oppiaineen-arviointi-kuvaus-placeholder": "Syötä oppiaineen arviointi", - "oppiaineen-opiskeluymparisto-ja-tyotavat-kuvaus-placeholder": "Syötä oppiaineen opiskelijaympäristö ja työtavat", - "oppiaineen-sisallot": "Oppiaineen sisällöt", - "oppiaineen-sisalto": "Oppiaineen sisältö", - "oppiaineen-tavoitealue-kohde-placeholder": "Tavoitealueen kohde", - "oppiaineen-tavoitealue-nimi-placeholder": "Tavoitealueen nimi", - "oppiaineen-tavoitteet-kuvaus-placeholder": "Syötä oppiaineen tavoitteiden kuvaus", - "oppiaineen-tehtava-kuvaus-placeholder": "Syötä oppiaineen tehtävä", - "oppiaineet": "Oppiaineet", - "oppiaineet-ja-oppimaarat": "Oppiaineet ja oppimäärät", - "oppiaineet-oppimaarat": "Oppiaineet", - "oppiaineet-oppimaarat-header": "Oppiaineet", - "oppiaineetyleissivistava": "Oppiaineet, yleissivistävä", - "oppiaineetyleissivistava2": "Oppiaineet, yleissivistävä", - "oppilaitos-organisaatio-paikkakunta": "Oppilaitos / Organisaatio / Paikkakunta", - "oppimaara": "Oppimäärä", - "oppimaarat": "Oppimäärät", - "ops": "Peruskoulutus", - "ops-esikatselu": "Opetussuunnitelman esikatselu", - "ops-ja-tutkintojen-perusteet": "Opetussuunnitelmien ja tutkintojen perusteet", - "organisaatiot": "Organisaatiot", - "osa": "Osa", - "osa-alueet": "Osa-alueet:", - "osaa-ei-voi-tyhjentaa": "Rakenteen osaa ei voi tyhjentää", - "osaamisala": "Osaamisala", - "osaamisala-liitetty-virheelliseti-tutkinnon-osiin": "Saman osaamisalan eri ryhmien sisältö ei voi olla jaettua keskenään", - "osaamisalan-kuvauksia-puuttuu-sisallosta": "Kaikilla osaamisaloilla ei ole kuvausta", - "osaamisalan-kuvaus": "Osaamisalan kuvaus", - "osaamisalaryhma-varoitus": "Osaamisalaryhmän alla ei voi olla toista osaamisalaryhmää.", - "osaamisalat": "Osaamisalat", - "osaamisen-arviointi": "Osaamisen arviointi", - "osaamisen-arviointi-tekstina": "Osaamisen arviointi tekstinä", - "osaamisen-kuvaus": "Osaamisen kuvaus", - "osaamisen-kuvaus-arvosanalle_0": "Osaamisen kuvaus arvosanalle 0", - "osaamisen-kuvaus-arvosanalle_5": "Osaamisen kuvaus arvosanalle 5", - "osaamisen-kuvaus-arvosanalle_6": "Osaamisen kuvaus arvosanalle 6", - "osaamisen-kuvaus-arvosanalle_7": "Osaamisen kuvaus arvosanalle 7", - "osaamisen-kuvaus-arvosanalle_8": "Osaamisen kuvaus arvosanalle 8", - "osaamisen-kuvaus-arvosanalle_9": "Osaamisen kuvaus arvosanalle 9", - "osaamisen-kuvaus-arvosanalle_10": "Osaamisen kuvaus arvosanalle 10", - "OSAAMISPISTE": "osp", - "osaamistaso": "Osaamistaso", - "osaamistaso-1": "alkuperäinen Hyväksytyn suorituksen kriteerit", - "osaamistaso-2": "alkuperäinen Tyydyttävä T1", - "osaamistaso-3": "alkuperäinen Hyvä H2", - "osaamistaso-4": "alkuperäinen Kiitettävä K3", - "osaamistaso-5": "alkuperäinen Tyydyttävä T1", - "osaamistaso-6": "alkuperäinen Tyydyttävä T2", - "osaamistaso-7": "alkuperäinen Hyvä H3", - "osaamistaso-8": "alkuperäinen Hyvä H4", - "osaamistaso-9": "alkuperäinen Kiitettävä K5", - "osaamistavoitteet": "Osaamistavoitteet", - "osaamistavoitteet-nimi": "Osaamistavoite", - "osaamistavoitteet-selite": "Kuvaus", - "osaan-kuvaus": "Näyttötutkinnot ja ammatillinen peruskoulutus", - "osaan-linkki": "Osaan.fi", - "osaatko-jo": "Osaatko jo?", - "osia-valittava-vahintaan": "Valittava vähintään", - "osia-valittava-vahintaan-ja-enintaan-koko": "Osia valittava vähintään {{ kokoMinimi }} ja enintään {{ kokoMaksimi }} kappaletta.", - "osia-valittava-vahintaan-ja-enintaan-laajuus": "Osia valittava vähintään {{ laajuusMinimi }} ja enintään {{ laajuusMaksimi }} {{ laajuusYksikko }} edestä.", - "osia-valittava-vahintaan-koko": "Osia valittava vähintään {{ kokoMinimi }} kappaletta.", - "osia-valittava-vahintaan-laajuus": "Osia valittava vähintään {{ laajuusMinimi }} {{ laajuusYksikko }} edestä.", - "osien-rakenteen-päivitys-onnistui": " Osien rakenteen päivitys onnistui", - "osiot": "Osiot", - "ota-versio-kayttoon": "Ota tämä versio käyttöön", - "otsikko": "Otsikko", - "paatos-pvm": "Päätöspäivämäärä", - "paatospaivamaara": "Päätöspäivämäärä", - "paattymisaikaa-ei-ole-maaritetty": "Määrittelemätön", - "paikallinen": "Paikallinen", - "paikallisessa-laadinnassa-maariteltava": "Paikallisessa laadinnassa määriteltävä", - "paikallisesti-paatettavat-asiat": "Paikallisesti päätettävät asiat", - "paikalliset-opetussuunnitelmat": "Paikalliset opetussuunnitelmat", - "paikalliset-pakolliset-kurssit": "Paikalliset pakolliset kurssit", - "paikalliset-soveltavat-kurssit": "Paikalliset soveltavat kurssit", - "paikalliset-syventavat-kurssit": "Paikalliset syventävät kurssit", - "painopisteet": "Painopisteet", - "paivita": "Päivitä", - "paivitys-onnistui": "Päivitys onnistui", - "pakollinen": "Pakollinen", - "pakollinen-kurssi-kuvaus-header": "Pakollisten kurssien yleinen kuvaus", - "pakollinen-kurssi-kuvaus-placeholder": "Kirjoita vapaahetoinen kuvaus koskien pakollisia kursseja", - "pakolliset-kurssit": "Pakolliset kurssit", - "pakolliset-moduulit": "Pakolliset moduulit", - "pakolliset-moduulit-kuvaus-placeholder": "Pakollisten moduulien kuvaus", - "pakolliset-osaamistavoitteet": "Pakolliset osaamistavoitteet", - "pakollisuus": "Pakollinen", - "palata-ops-tyokaluun": "Siirry laadintaan", - "palauta": "Palauta", - "palautetaanko-vanha-versio": "Palautetaanko vanha versio sisällöstä?", - "peru": "Peruuta", - "peru-omat-muutokset": "Peru omat muutokset", - "perusopetus": "Perusopetus", - "perusopetus-arviointi": "Oppimisen arviointi", - "perusopetus-ohjaus": "Ohjaus ja tuki", - "perusopetus-perusteet": "Perusopetuksen opetussuunnitelman perusteet", - "perusopetus-sisaltoalueet": "Sisältöalueet", - "perusopetus-tavoitteet": "Oppiaineen tavoitteet", - "perusopetus-tehtava": "Oppiaineen tehtävä", - "perusopetus-tyotavat": "Oppimisympäristöt ja työtavat", - "peruste": "Peruste", - "peruste-ei-diaarinumeroa": "Perusteelta puuttuu määräyksen diaarinumero", - "peruste-ei-ole-katseltavissa": "Peruste ei ole katseltavissa", - "peruste-ei-sisaltoa": "Perusteeseen ei ole vielä luotu sisältöä.", - "peruste-ei-voimassaolon-alkamisaikaa": "Perusteelle ei ole annettu voimassaolon alkamisaikaa", - "peruste-koulutukset": "Koulutuskoodit", - "peruste-lukio-ei-aihekokonaisuuksia": "Perusteessa ei ole aihekokonaisuuksia", - "peruste-lukio-ei-opetuksen-yleisia-tavoitteita": "Perusteessa ei ole opetuksen yleisiä tavoitteita.", - "peruste-lukio-ei-oppiaineita": "Perusteessa ei ole yhtään oppiainetta", - "peruste-lukio-kooodi-puuttuu": "Koodi puuttuu", - "peruste-lukio-liittamaton-kurssi": "Peruste sisältää liittämättömän kurssin", - "peruste-lukio-oppiaineessa-ei-kursseja": "Peruste sisältää oppiaineen/määrän, jolla ei ole kursseja", - "peruste-lukio-oppiaineessa-ei-oppimaaria": "Oppiaineessa ei yhtään oppimäärää", - "peruste-lukio-sama-koodi": "Samaa koodia on käytetty useamman kerran", - "peruste-validointi-koulutuksenosa-ammattitaidon-osoittamistavat": "Perusteen koulutuksen osien ammattitaitojen osoittamistapoja ei ole lokalisoitu", - "peruste-validointi-koulutuksenosa-ammattitaitovaatimukset": "Perusteen koulutuksen osien kaikkia ammattitaitovaatimuksia ei ole lokalisoitu", - "peruste-validointi-koulutuksenosa-kuvaus": "Kaikkien koulutuksen osien kuvauksia ei ole lokalisoitu", - "peruste-validointi-koulutuksenosa-nimi": "Kaikkien koulutuksen osien nimiä ei ole lokalisoitu", - "peruste-validointi-koulutuksenosa-tavoitteet": "Kaikkien koulutuksen osien tavoitteita ei ole lokalisoitu", - "peruste-validointi-koulutus-nimi": "Perusteen koulutuksien nimiä ei ole lokalisoitu", - "peruste-validointi-kuvaus": "Perusteen kuvausta ei ole lokalisoitu", - "peruste-validointi-laajaalainen-osaaminen-kuvaus": "Kaikkien laaja-alaisten osaamisten kuvauksia ei ole lokalisoitu", - "peruste-validointi-laajaalainen-osaaminen-nimi": "Kaikkien laaja-alaisten osaamisten nimiä ei ole lokalisoitu", - "peruste-validointi-nimi": "Perusteen nimeä ei ole lokalisoitu", - "peruste-validointi-oppiaine-kohdealue": "Kaikkien oppiaineiden tavoitealueita ei ole lokalisoitu", - "peruste-validointi-oppiaine-nimi": "Kaikkien oppiaineiden nimiä ei ole lokalisoitu", - "peruste-validointi-oppiaine-sisalto": "Kaikkien oppiaineiden sisältöä ei ole lokalisoitu", - "peruste-validointi-oppiaine-sisaltoalue": "Kaikkien oppiaineiden sisältöalueita ei ole lokalisoitu", - "peruste-validointi-oppiaine-vlk-sisalto": "Kaikkien oppiaineiden vuosiluokkakokonaisuuksien sisältöjä ei ole lokalisoitu", - "peruste-validointi-oppiaine-vlk-tavoite-tavoite-teksti": "Kaikkia tavoitteita ei ole lokalisoitu", - "peruste-validointi-rakenneosa-kuvaus": "Perusteen muodostumisryhmän kaikkia kuvauksia ei ole lokalisoitu", - "peruste-validointi-tekstikappale-nimi": "Perusteen kaikkien tekstikappaleiden nimiä ei ole lokalisoitu", - "peruste-validointi-tekstikappale-teksti": "Perusteen kaikkien tekstikappaleiden sisältöjä ei ole lokalisoitu", - "peruste-validointi-tutkinnonosa-ammattitaidon-osoittamistavat": "Perusteen tutkinnon osien ammattitaitojen osoittamistapoja ei ole lokalisoitu", - "peruste-validointi-tutkinnonosa-ammattitaitovaatimukset": "Perusteen tutkinnon osien kaikkia ammattitaitovaatimuksia ei ole lokalisoitu", - "peruste-validointi-tutkinnonosa-kuvaus": "Kaikkien tutkinnon osien kuvauksia ei ole lokalisoitu", - "peruste-validointi-tutkinnonosa-nimi": "Kaikkien tutkinnon osien nimiä ei ole lokalisoitu", - "peruste-validointi-tutkinnonosa-tavoitteet": "Kaikkien tutkinnon osien tavoitteita ei ole lokalisoitu", - "peruste-validointi-vlk-lo": "Kaikkien vuosiluokkakokonaisuuksien laaja-alaisien osaamisien kuvauksia ei ole lokalisoitu", - "peruste-validointi-vlk-nimi": "Kaikkien vuosiluokkakokonaisuuksien nimiä ei ole lokalisoitu", - "peruste-validointi-vlk-sisalto": "Kaikkien vuosiluokkakokonaisuuksien sisältöjä ei ole lokalisoitu", - "peruste-validointi-vlk-tehtava-otsikko": "Kaikkien vuosiluokkakokonaisuuksien tehtävien otsikoita ei ole lokalisoitu", - "peruste-validointi-vlk-tehtava-teksti": "Kaikkien vuosiluokkakokonaisuuksien tehtävien sisältötekstejä ei ole lokalisoitu", - "perusteella-ei-viela-koulutuksenosia": "Perusteella ei ole koulutuksen osia", - "perusteella-ei-viela-tutkinnonosia": "Perusteella ei ole vielä tutkinnon osia", - "perusteen-esikatselu": "Perusteen esikatselu", - "perusteen-kielet": "Perusteen kielet", - "perusteen-koodi": "Tutkinnon koodi", - "perusteen-nimea-ei-ole-kaikilla-kielilla": "Perusteelle ei ole määritelty nimeä kaikilla kielillä.", - "perusteen-nimi": "Perusteen nimi", - "perusteen-osa-kaytossa-myos-seuraavissa": "Perusteen osa käytössä myös seuraavissa projekteissa", - "perusteen-sisalto": "Perusteen sisältö", - "perusteen-termisto": "Käsitteet", - "perusteen-termisto-ohje": "Tekstikappaleissa voidaan viitata käsitteeseen ja näyttää sen selitys. Käsitteet ovat perustekohtaisia.", - "perusteen-tiedot": "Perusteen tiedot", - "perusteen-tiivistelma": "Perusteen tiivistelmä", - "perusteenosa-kaytossa-muissa-osissa": "Perusteen osa on käytössä myös muissa projekteissa", - "perusteenosa-kaytossa-muissa-osissa-ohje": "Muutokset tulevat voimaan useaan perusteeseen. Voit halutessasi kopioida osan \"Kopioi muokattavaksi\"-painikkeella.", - "perusteiden-sisalto": "Perusteiden sisältö", - "perustepohja": "Pohja", - "perusteprojekti": "Perusteprojekti", - "perusteprojekti-koulutusala-placeholder": "", - "perusteprojekti-koulutustyyppi-placeholder": "", - "perusteprojekti-nimi-placeholder": "", - "perusteprojekti-tila-aseta": "Aseta perusteprojektin tila", - "perusteprojektin-pohjaksi-otetaan-peruste": "Perusteprojektin pohjaksi otetaan peruste", - "perusteprojektin-tuonti": "Perusteprojektin tuonti", - "perusteprojektit": "Perusteprojektit", - "perusteprojektit-otsikko": "Omat perusteprojektit", - "perustetyoryhman-tietojen-hakeminen-epaonnistui": "Perustetyöryhmän tietojen hakeminen epäonnistui.", - "perustiedot": "Perustiedot", - "perustutkinto": "Ammatillinen perustutkinto", - "peruttu-versio-loytyi": "Tallentamaton versio sisällöstä löydetty. Voit ottaa sen muokattavaksi.", - "peruuta": "Peruuta", - "piilota": "Piilota", - "piilota-aliviestit": "Piilota vastaukset", - "piilota-kaannosvirheet": "Piilota puuttuvat käännökset", - "piilota-kuvaukset": "Piilota kuvaukset", - "piilota-osaamiskokonaisuuden-kuvaus": "Piilota osaamiskokonaisuuden yleiskuvaus", - "piilota-perusteen-teksti": "Piilota perusteen teksti", - "piilota-ryhman-kuvaus": "Piilota ryhmän kuvaus", - "piilota-virheet": "Piilota virheet", - "pohja": "Pohja", - "pohjakoulutusvaatimukset": "Pohjakoulutusvaatimukset", - "poista": "Poista", - "poista-kohdealue": "Poista", - "poista-korostus": "Poista korostus", - "poista-koulutuksenosa": "Poista koulutuksen osa", - "poista-kurssi": "Poista kurssi", - "poista-laaja-alainen-osaaminen": "Poista laaja-alainen osaaminen", - "poista-moduuli": "Poista moduuli", - "poista-oppiaine": "Poista oppiaine", - "poista-oppimaara": "Poista oppimäärä", - "poista-osa-alue": "Poista osa-alue", - "poista-osaamiskokonaisuus": "Poista osaamiskokonaisuus", - "poista-osio": "Poista osio", - "poista-projektista": "Poista projektista", - "poista-sisalto": "Poista sisältö", - "poista-suosikeista": "Poista suosikeista", - "poista-tekstikappale-otsikko": "Poista tekstikappale", - "poista-tekstikappale-teksti": "Tekstikappale \"{{nimi}}\" poistetaan. Oletko varma?", - "poista-tutkinnonosa": "Poista tutkinnon osa", - "poista-tyoryhma-perusteenosasta": "Poista työryhmä perusteenosasta", - "poista-tyoryhma-teksti": "Työryhmä \"{{nimi}}\" poistetaan. Oletko varma?", - "poista-vaihe": "Poista vaihe", - "poista-valittavista": "Poista valittavista", - "poista-vuosiluokkakokonaisuus": "Poista vuosiluokkakokonaisuus", - "poistetaanko-aihekokonaisuus": "Poistetaanko valittu aihekokonaisuus?", - "poistetaanko-julkaisematon-arviointiasteikko": "Poistetaanko julkaisematon geneerinen arviointiasteikko?", - "poistetaanko-kohdealue": "Poistetaanko kohdealue?", - "poistetaanko-kommentti": "Poistetaanko kommentti?", - "poistetaanko-koulutuksenosa": "Poistetaanko koulutuksen osa?", - "poistetaanko-koulutus": "Poistetaanko koulutuskoodi?", - "poistetaanko-kurssi": "Haluatko varmasti poistaa kurssin?", - "poistetaanko-moduuli": "Poistetaanko moduuli?", - "poistetaanko-oppiaine": "Poistetaanko oppiaine?", - "poistetaanko-oppiaineen-osio": "Poistetaanko osio? Kaikki osion sisältö poistetaan.", - "poistetaanko-oppimaara": "Poistetaanko oppimäärä?", - "poistetaanko-osaamiskokonaisuus": "Poistetaanko osaamiskokonaisuus?", - "poistetaanko-osio": "Poistetaanko osio?", - "poistetaanko-ryhma": "Poistetaanko ryhmä?", - "poistetaanko-termi": "Poistetaanko käsite?", - "poistetaanko-tiedote": "Poistetaanko tiedote?", - "poistetaanko-tutkinnonosa": "Poistetaanko tutkinnon osa?", - "poistetaanko-tyoryhma": "Poistetaanko työryhmä?", - "poistetaanko-vaatimus": "Poistetaanko ammattitaitovaatimus?", - "poistetaanko-vaihe": "Poistetaanko vaihe?", - "poistetaanko-vuosiluokkakokonaisuus": "Poistetaanko vuosiluokkakokonaisuus?", - "poisto-onnistui": "Poisto onnistui", - "poistu": "Poistu", - "poistu-sivulta": "Poistu sivulta", - "projekti-header-koulutusala": "Koulutusala", - "projekti-header-koulutustyyppi": "Koulutus/tutkintotyyppi", - "projekti-header-paatosPvm": "Työryhmän asettamispäivämäärä", - "projekti-opas": "Projektin tiedot", - "projekti-opastyoryhma": "Opastyöryhmä", - "projekti-peruste": "Perusteen tiedot", - "projekti-perustiedot": "Perustiedot", - "projekti-projektiryhma": "Perustetyöryhmä", - "projekti-toimikausi": "Toimikausi", - "projektin-diaarinumero": "Projektin diaarinumero", - "projektin-nimi-label": "Projektin nimi", - "projektin-oid-label": "Perustetyöryhmä", - "projektin-ryhma": "Projektin työryhmä", - "projektin-tiedot": "Projektin tiedot", - "projektin-tuonti": "Projektin lataus", - "projektiryhma": "Projektiryhmä", - "puhelin": "Puh.", - "puuttuvat-kaannokset-kielilla": "Puuttuvat käännökset kielillä:", - "puuttuvat-kieliversiot": "Puuttuvat kieliversiot", - "päätöspvm-label": "Päätöspäivämäärä", - "rajaa": "Rajaa", - "rajaa-koulutuksenosia": "Rajaa koulutuksen osia...", - "rajaa-ryhmia": "Rajaa ryhmiä", - "rajaa-tila": "Rajaa tila:", - "rajaa-tuloksia": "Rajaa...", - "rajaa-tutkinnonosia": "Rajaa tutkinnon osia...", - "rajauksellasi-ei-löytynyt-vaihtoehtoa": "Rajaus ei tuottanut tuloksia", - "rakenne-validointi-laajuus": "Osien yhteenlaskettu laajuus ei riitä kattamaan vaadittua laajuutta", - "rakenne-validointi-maara": "Osien määrä on pienempi kuin ryhmän maksimi", - "rakenne-validointi-maara-laajuus-maksimi": "Maksimikoon kattavat osat eivät riitä kattamaan vaadittua maksimilaajuutta", - "rakenne-validointi-maara-laajuus-minimi": "Minimikoon kattavat osat eivät riitä kattamaan vaadittua minimilaajuutta", - "rakenne-validointi-uniikit": "Ryhmässä on samoja tutkinnon osia", - "rakennetta-ei-ole": "Suoritustavalle ei ole määritetty rakennetta", - "rakennetta-ei-vielä-muodostettu": "Tutkinnon rakennetta ei ole vielä muodostettu tai se on tyhjä. Luo uusi rakenne muokkaamalla sivua.", - "rakenteen-roolia-ei-voi-vaihtaa": "Rakenteen roolia ei voi vaihtaa", - "rakenteen-validointi-virhe": "Rakenteessa validointivirhe", - "reformi": "Näyttötutkinto", - "reformin-mukainen": "Reformin mukainen", - "rooli": "Rooli", - "ru": "Venäjä", - "ruotsi": "Svenska", - "ruudukko": "Ruudukko", - "ryhmalla-lapsia-ei-voi-muuttaa": "Ryhmän lapsisolmut poistettava ensin", - "ryhman-erikoisuustietoa-ei-voi-vaihtaa": "Ryhmän ei voi muokata", - "ryhman-juuren-muodostumista-ei-voi-muuttaa": "Tutkinnon muodostumissääntöä ei voi muuttaa", - "ryhman-kuvausta-ei-voi-muuttaa": "Ryhmän kuvausta ei voi muuttaa", - "ryhman-muodostumissaantoa-ei-voi-muuttaa": "Ryhmän muodostumissääntöä ei voi muuttaa", - "ryhman-nimea-ei-voi-muuttaa": "Ryhmän nimeä ei voi muuttaa", - "ryhman-osaamisala-tutkintonimike-jo-kaytossa": "Ryhmän osaamisala on jo käytössä", - "ryhman-osaamisalaa-ei-perusteella": "Ryhmän osaamisalaa ei ole määritelty perusteelle", - "ryhman-osaamisalaa-ei-voi-muuttaa": "Ryhmän osaamisalaa ei voi muuttaa", - "ryhman-osaamisalalta-puuttuu-vaaditut-tutkintonimikekuvaukset": "Osaamisalalta puuttuu määritetyt tutkintonimikeryhmät", - "ryhman-osia-ei-voi-muuttaa": "Ryhmän osia ei voi muuttaa", - "ryhman-osien-maaraa-ei-voi-muuttaa": "Ryhmän osien määrää ei voi muuttaa", - "ryhman-pakollisuutta-ei-voi-muuttaa": "Ryhmän pakollisuutta ei voi muuttaa", - "ryhman-rooli-ei-salli-sisaltoa": "Ryhmän rooli ei salli sisältöä", - "ryhman-roolia-ei-voi-vaihtaa": "Ryhmän roolia ei voi vaihtaa", - "ryhman-tunnistetta-ei-voi-muuttaa": "Ryhmän rakennetta ei voi muuttaa", - "ryhman-tutkintonimike-ja-osaamisala-ei-voi-olla-samanaikaisesti": "Ryhmällä ei voi olla osaamisalaa ja tutkintonimikettä", - "ryhman-tutkintonimike-jo-kaytossa": "Ryhmän tutkintonimike on jo käytössä", - "ryhman-tutkintonimiketta-ei-voi-vaihtaa": "Ryhmän tutkintonimikettä ei voi muuttaa", - "ryhmien-hakeminen-epaonnistui": "Ryhmien hakeminen epäonnistui.", - "saadosperusta": "Säädösperusta", - "salli-lukio-peruste-esikatseltavissa": "salli esikatselu", - "salli-perusteen-esikatselu": "Salli perusteen esikatselu", - "se": "Saame", - "selaa": "Selaa...", - "selaa-perusteita": "Selaa perusteita", - "selaa-perustetta": "Selaa perustetta", - "selain-ei-tue": "Selaimesta puuttuu tuki ominaisuudelle", - "selitys": "Selitys", - "siirry": "Siirry", - "siirtyma-edellisesta": "Siirtymä edellisestä vaiheesta", - "siirtyma-seuraavaan": "Siirtymä seuraavaan vaiheeseen", - "siirtymaAlkaa": "Siirtymäaika alkaa", - "siirtyman-kuvaus": "Tämän perusteen mukaan aloitettu tutkinnon suorittaminen voidaan saattaa loppuun siirtymäajalla.", - "siirtyman-paattyminen": "Siirtymäajan päättymisaika", - "siirtymavaiheet": "Siirtymävaiheet", - "sijainti": "Sijainti", - "sisallon-kieli": "Sisällön kieli", - "sisallon-muotoilu-saattaa-sisaltaa-virheita": "Sisältö saattaa sisältää muotoiluvirheitä", - "sisallot": "Sisallöt", - "sisalto": "Sisältö", - "sisalto-kaannettavaksi": "Sisältö valmis käännettäväksi", - "sisalto-muotoiluvirheet-ohita": "Oletko varma, että sisältö on muotoiltu oikein? Jos on, paina OK.", - "sisaltoalueen-nimi": "Sisältöalueen nimi", - "sisaltoalueet": "Sisältöalueet", - "sisaltoalueiden-kuvaus": "Sisältöalueiden kuvaus", - "sivunavigointi-avaa-menu": "Avaa navigointimenu", - "sivunavigointi-sulje-menu": "Sulje navigointimenu", - "sivupalkki-näytä-kaikki": "Näytä enemmän", - "sivupalkki-piilota": "Näytä vähemmän", - "solu": "Solu", - "soveltava": "Soveltava", - "soveltava-kurssi-kuvaus-header": "Valtakunnallisten soveltavien kurssien yleinen kuvaus", - "soveltava-kurssi-kuvaus-placeholder": "Kirjoita vapaahetoinen kuvaus koskien valtakunnallisia soveltavia kursseja", - "soveltavat-kurssit": "Soveltavat kurssit", - "sulje": "Sulje", - "sulje-kaikki": "Sulje kaikki", - "sulje-leikelauta": "Sulje leikelauta", - "suomi": "Suomi", - "suorittaneen-osaaminen": "Tutkinnon suorittaneen osaaminen", - "suoritustapa": "Suoritustapa", - "suoritustavalle-ei-ole-viela-sisaltoa": "Perusteelle ei ole luotu vielä tähän suoritustapaan liittyvää sisältöä", - "suoritustavat": "Suoritustavat", - "suosikin-nimi": "Suosikin nimi", - "suosikit-otsikko": "Suosikit", - "suosikki": "Lisää suosikiksi", - "sv": "Ruotsi", - "syventava": "Syventävä", - "syventava-kurssi-kuvaus-header": "Valtakunnallisten syventävien kurssien yleinen kuvaus", - "syventava-kurssi-kuvaus-placeholder": "Kirjoita vapaahetoinen kuvaus koskien valtakunnallisia syventäviä kursseja", - "syventavat-kurssit": "Syventävät kurssit", - "tahdella-pakolliset": "Tähdellä(*) merkityt kentät ovat pakollisia", - "taiteenala-aikuisten-opetus": "Aikuisten opetus", - "taiteenala-kasvatus": "Kasvatus", - "taiteenala-koodi": "Taiteenala koodi", - "taiteenala-oppimisen-arvionti": "Oppimisen arviointi opetuksessa", - "taiteenala-teemaopinnot": "Teemaopinnot", - "taiteenala-tyotavat": "Työtavat opetuksessa", - "taiteenala-yhteisetOpinnot": "Yhteiset opinnot", - "takaisin": "Takaisin", - "takaisin-aineeseen": "Takaisin oppiaineeseen / oppimäärään", - "takaisin-hakuun": "Takaisin hakuun", - "takaisin-laadintaan": "Takaisin laadintaan", - "takaisin-oppiaineeseen": "Takaisin oppiaineeseen", - "takaisin-oppiaineet": "Takaisin oppiainelistaukseen", - "takaisin-paanakymaan": "Projektin päänäkymä", - "takaisin-tiedotteiden-hallintaan": "Takaisin tiedotteiden hallintaan", - "takaisin-ylos": "Takaisin ylös", - "tallenna": "Tallenna", - "tallenna-haku": "Tallenna haku", - "tallenna-muutokset": "Tallenna muutokset", - "tallenna-tyoryhma": "Tallenna työryhmä", - "tallennettiin-onnistuneesti": "tallennettiin onnistuneesti", - "tallennettu": "Tallennettu", - "tallennus-onnistui": "Tallennus onnistui", - "tallentamattomia-muutoksia": "Sinulla on tallentamattomia muutoksia. Jos poistut sivulta muutokset menetetään.", - "tallentaminen-epaonnistui": "Tallentaminen epäonnistui", - "tarkastele-esitysta": "Tarkastele esitystilassa", - "tarkastele-versiota": "Tarkastele versiota", - "tarkennettu-haku": "Tarkennettu haku", - "tarkista-ammattitaitovaatimukset": "Tarkista ammattitaitovaatimukset", - "tarkista-virheet": "Tarkista virheet", - "tavoitealueet": "Tavoitealueet", - "tavoitteen-kuvaus-placeholder": "Lisää tavoitteen kuvaus", - "tavoitteen-nimi-placeholder": "Lisää tavoitteen nimi", - "tavoitteet": "Tavoitteet", - "tavoitteet-ja-keskeiset-sisallot": "Tavoitteet ja keskeiset sisällöt", - "tavoitteet-ja-sisallot": "Tavoitteet ja sisallöt", - "tavoitteiden-osaamiset": "Laaja-alainen osaaminen", - "tavoitteista-johdetut-oppimisen-tavoitteet": "Tavoitteista johdetut oppimisen tavoitteet", - "tehtäväluokka-label": "Tehtäväluokka", - "tekstikappale": "Tekstikappale", - "tekstikappale-kopioitu-onnistuneesti": "Tekstikappale kopioitu onnistuneesti", - "tekstikappale-tallennettiin-onnistuneesti": "Tekstikappale tallennettiin onnistuneesti", - "tekstikappaleet": "Tekstikappaleet", - "tekstikappaleiden-tuonti-onnistui": "Tekstikappaleiden tuonti onnistui", - "tekstisisalto": "Sisaltö", - "tekstisisällön-tuonti": "Tekstisisällön tuonti", - "termi": "Käsite", - "termi-plugin-button-label": "Viittaus käsitteeseen", - "termi-plugin-label": "Viittaus käsitteeseen", - "termi-plugin-label-teksti": "Teksti johon viittaus liitetään", - "termi-plugin-label-termi": "Käsite johon viitataan", - "termi-plugin-lisaa-uusi": "Lisää uusi käsite", - "termi-plugin-menu-muokkaa": "Muokkaa viittausta käsitteeseen", - "termi-plugin-menu-poista": "Poista viittaus käsitteeseen", - "termi-plugin-select-placeholder": "Valitse käsite...", - "termi-plugin-tallennettu": "Käsite tallennettu. Voit muokata sitä Käsitteet-näkymässä.", - "termi-plugin-title": "Lisää viittaus tai muokkaa viittausta käsitteeseen", - "termi-plugin-virhe-teksti-tyhja": "Teksti johon viittaus liitetään ei voi olla tyhjä.", - "termi-plugin-virhe-viite-tyhja": "Valitse käsite johon viitataan.", - "termia-ei-loytynyt": "Viitattua käsitettä ei löytynyt", - "termin-selitys": "Käsitteen selitys", - "termin-selitys-placeholder": "Kirjoita käsitteen selitys", - "tiedosto": "Tiedosto", - "tiedostossa-ongelmia": "Tiedostossa oli huomion arvoisia ongelmia, mutta voit halutessasi yrittää jatkaa.", - "tiedot": "Tiedot", - "tiedote": "Tiedote", - "tiedote-julkinen": "julkinen", - "tiedote-liittyy-perusteprojektiin": "Tiedote liittyy perusteprojektiin", - "tiedote-otsikko-placeholder": "Kirjoita tiedotteen otsikko", - "tiedote-teksti-placeholder": "Kirjoita tiedotteen teksti", - "tiedoteteksti": "Tiedoteteksti", - "tiedotteet": "Tiedotteet", - "tietosuojaseloste": "Tietosuojaseloste", - "tiivistelma": "Tutkinnon suorittaneen osaaminen", - "tila": "Tila", - "tila-julkaistu": "Julkaistu", - "tila-kommentointi": "Kommentointi", - "tila-laadinta": "Laadinta", - "tila-poistettu": "Arkistoitu", - "tila-valmis": "Valmis", - "tila-viimeistely": "Viimeistely", - "tilakuvaus-julkaistu": "Kuvaus tilalle julkaistu.", - "tilakuvaus-kaannos": "Kuvaus tilalle käännös.", - "tilakuvaus-kommentointi": "Perusteet asetetaan kommentointi-tilaan kun ne ovat palvelun ulkopuolella kommentointi- tai lausuntokierroksella. Perusteita ei voi muokata kommentointi-tilassa. Kun kommentointi tai lausuntokierros on ohi perusteet palautetaan Laadinta-tilaan muokattavaksi.", - "tilakuvaus-laadinta": "Perusteen laadinta ja muokkaus on mahdollista.", - "tilakuvaus-poistettu": "Perusteen versio ei ole enää tarpeellinen perusteen laadinnassa. Poistettu -tilaan siirretty versio voidaan tarvittaessa palauttaa Laadinta-tilaan.", - "tilakuvaus-valmis": "Perusteluonnos on valmis Opetushallituksen hyväksymisprosessia varten. Valmis -tilaan siirretty luonnos voidaan tarvittaessa palauttaa Viimeistely-tilan kautta Laadinta-tilaan. Tila muutoksen voi tehdä vain perusteprosessin omistajan käyttöoikeuksilla.", - "tilakuvaus-viimeistely": "Perusteiden -luonnos on valmis viimeisteltäväksi Opetushallituksessa. Tila mahdollistaa perusteen kielenhuollon ja kääntämisen. Viimeistely -tilaan siirretty perusteluonnos voidaan tarvittaessa vielä palauttaa Laadinta-tilaan perusteprosessin omistajan käyttöoikeuksilla. ", - "tilan-vaihto-epaonnistui": "Tilan vaihto epäonnistui", - "tilanvaihdos-aiheuttaa": "Tämä tilanvaihdos aiheuttaa seuraavaa:", - "tilanvaihdos-julkaistu-laadinta": "Kuvaus tilasiirtymälle julkaistu-laadinta.", - "tilanvaihdos-kommentointi-laadinta": "Kuvaus tilasiirtymälle kommentointi-laadinta.", - "tilanvaihdos-kommentointi-poistettu": "Kuvaus tilasiirtymälle kommentointi-poistettu.", - "tilanvaihdos-laadinta-kommentointi": "Kuvaus tilasiirtymälle laadinta-kommentointi.", - "tilanvaihdos-laadinta-poistettu": "Kuvaus tilasiirtymälle laadinta-arkistointi.", - "tilanvaihdos-laadinta-viimeistely": "Kuvaus tilasiirtymälle laadinta-viimeistely.", - "tilanvaihdos-poistettu-laadinta": "Kuvaus tilasiirtymälle poistettu-laadinta.", - "tilanvaihdos-valmis-julkaistu": "Kuvaus tilasiirtymälle valmis-julkaistu.", - "tilanvaihdos-valmis-poistettu": "Kuvaus tilasiirtymälle valmis-poistettu.", - "tilanvaihdos-valmis-viimeistely": "Kuvaus tilasiirtymälle valmis-viimeistely.", - "tilanvaihdos-viimeistely-laadinta": "Kuvaus tilasiirtymälle viimeistely-laadinta.", - "tilanvaihdos-viimeistely-poistettu": "Kuvaus tilasiirtymälle viimeistely-poistettu.", - "tilanvaihdos-viimeistely-valmis": "Kuvaus tilasiirtymälle viimeistely-valmis.", - "tilanvaihtovirhe-header": "Projektin tilan vaihtaminen ei onnistunut", - "toimikausi-alku-label": "Toimikauden aloitus", - "toimikausi-loppu-label": "Toimikauden päättyminen", - "toiminnot": "Toiminnot", - "toiminto": "Toiminto", - "toisesta-suoritustavasta": "Toisesta suoritustavasta", - "toteutus-label": "Koulutustyypin toteutus", - "toteutus-valmis": "Sisältö valmis", - "tpo": "Taiteen perusopetus", - "tulossa-kohta": "Tulossa kohta", - "tulosta-sivu": "Tulosta sivu", - "tuo": "Tuo", - "tuo-excel": "Tuo Excel", - "tuo-excel-tiedostosta": "Tuo Excel-tiedostosta...", - "tuo-koulutuksenosa": "Tuo koulutuksenosa", - "tuo-nykyisesta-perusteesta": "Tuo nykyisestä perusteesta", - "tuo-osaamistavoite": "Tuo osaamistavoite", - "tuo-peruste": "Tuo peruste", - "tuo-perustepohja": "Tuo perustepohja", - "tuo-toisesta-suoritustavasta": "Tuo toisesta suoritustavasta", - "tuo-tutkinnonosa": "Tuo tutkinnon osa", - "tuo-tutkintokohtainen-osa": "Tuo tekstikappale", - "tuo-valitut": "Tuo valitut", - "tutke2-osalta-puuttuu-osa-alue-koodi": "Tutkinnon osien osa-alueilta puuttuu koodi", - "tutkinnolle-ei-maaritetty-kokonaislaajuutta": "Tutkinnolle ei ole määritetty laajuutta", - "tutkinnon-koodi": "Tutkinnon koodi", - "tutkinnon-muodostuminen": "Tutkinnon muodostuminen", - "tutkinnon-muodostuminen-muokkaus": "Muokkaa tutkinnon muodostumista", - "tutkinnon-nimella": "Tutkinnon nimellä", - "tutkinnon-osa": "Tutkinnon osa", - "tutkinnon-osa-ei-sisaltoa": "Tutkinnon osalla ei ole sisältöä.", - "tutkinnon-osa-ei-sisaltoa-ohje": "Lisää osioita valitsemalla \"Lisää osio\".", - "tutkinnon-osa-haku-placeholder": "Rajaa tutkinnon osia...", - "tutkinnon-osa-rakenteessa-ei-voi-poistaa": "Tutkinnon osaa ei voi poistaa, koska se on käytössä tutkinnon rakenteessa. Poista viite puusta ensin.", - "tutkinnon-osa-rakenteesta-poistettu": "Tutkinnon osa poistettu onnistuneesti.", - "tutkinnon-osalla-ei-ole-koodia": "Valitun tutkinnon osalla ei ole koodia", - "tutkinnon-osan-ammattitaitovaatukset-tekstina": "Tutkinnon osien ammattitaitovaatimukset täytyy laatia rakenteisena", - "tutkinnon-osan-asetettua-koodia-ei-koodistossa": "Tutkinnon osan koodia ei koodistossa", - "tutkinnon-osan-koodi-kaytossa": "Valittu tutkinnon osan koodi on jo käytössä", - "tutkinnon-osan-kooditon-ammattitaitovaatimus": "Tutkinnon osalla kooditon ammattitaitovaatimus", - "tutkinnon-osia-ei-loytynyt": "Tutkinnon osia ei löytynyt.", - "tutkinnon-osien-kokonaismaara": "Löytyy {{kokonaismaara}} tutkinnon osaa", - "tutkinnon-osien-koodit-kaytossa-muissa-tutkinnon-osissa": "Tutkinnon osan koodit jo käytössä perusteen muissa osissa", - "tutkinnon-rakenne": "Tutkinnon rakenne", - "tutkinnon-rakenteen-kuvaus": "Tutkinnon rakenteen kuvaus", - "tutkinnon-suorittaja": "Opiskelija", - "tutkinnon-suorittaneen-ammatillinen-osaaminen": "Tutkinnon suorittaneen ammatillinen osaaminen", - "tutkinnon-taso": "Tutkinnon taso", - "tutkinnon-tyyppi": "Tutkinnon tyyppi", - "tutkinnon-virallinen-asema": "Tutkinnon virallinen asema", - "tutkinnonosa": "Tutkinnon osa", - "tutkinnonosa-ammattitaitovaatimukset": "Ammattitaitovaatimukset", - "tutkinnonosa-jarjestysnumero": "Järjestysnumero", - "tutkinnonosa-koko": "Koko", - "tutkinnonosa-kopioitu-onnistuneesti": "Tutkinnon osa kopioitu onnistuneesti", - "tutkinnonosa-laajuus": "Laajuus", - "tutkinnonosa-nimi": "Nimi", - "tutkinnonosa-save-fail": "Seuraavia tutkinnon osia ei pystytty tallentamaan onnistuneesti:", - "tutkinnonosa-tavoitteet": "Tavoitteet", - "tutkinnonosa-tunnustaminen": "Tunnustaminen", - "tutkinnonosat": "Tutkinnon osat", - "tutkinnosta-paattava-viranomainen": "Tutkinnosta päättävän kansallisen/alueellisen viranomaisen nimi ja asema", - "tutkintokoodi": "Tutkintokoodi", - "tutkintonimike": "Tutkintonimike", - "tutkintonimike-poistettu-onnistuneesti": "Tutkintonimike poistettiin onnistuneesti", - "tutkintonimikeryhmalle-maaritetty-tutkinnon-osa-useaan-kertaan": "Tutkinnon osan voi liittää vain yhteen tutkintonimikeryhmään", - "tutkintonimikkeen-lisays-epaonnistui": "Tutkintonimikkeen lisääminen epäonnistui", - "tutkintonimikkeen-lisays-onnistui": "Tutkintonimikkeen lisääminen onnistui", - "tutkintonimikkeen-osaamisala-puuttuu-perusteesta": "Tutkintonimikkeessä määritetty osaamisala puuttuu perusteesta", - "tutkintonimikkeen-vaatimaa-koulutuksenosakoodia-ei-loytynyt-koulutuksen-osilta": "Tutkintonimikkeen vaatimaa koulutuksen osan koodia ei löytynyt koulutuksen osilta", - "tutkintonimikkeen-vaatimaa-tutkinnonosakoodia-ei-loytynyt-tutkinnon-osilta": "Tutkintonimikkeen vaatimaa tutkinnon osan koodia ei löytynyt miltään tutkinnon osalta", - "tutkintonimikkeet": "Tutkintonimikkeet", - "tutkintotodistuksen-antaja": "Tutkintotodistuksen antaja", - "tutkintotodistuksen-saaminen": "Tutkintotodistuksen voi säädösten mukaan saada seuraavilla tavoilla", - "tyhja-placeholder-aihekokonaisuudet": "Aihekokonaisuuksia ei ole lisätty.", - "tyhja-placeholder-kurssit": "Kursseja ei ole lisätty", - "tyhja-placeholder-laaja-alainen-osaaminen": "Laaja-alaisia osaamisia ei ole lisätty.", - "tyhja-placeholder-opetuksen-yleiset-tavoitteet": "Opetuksen yleisiä tavoitteita ei ole lisätty.", - "tyhja-placeholder-oppiaineet": "Oppiaineita ei ole lisätty.", - "tyhja-placeholder-oppiaineet-oppimaarat": "Oppimääriä ei ole lisätty.", - "tyhja-placeholder-osaaminen": "Osaamiskokonaisuuksia ei ole lisätty.", - "tyhja-placeholder-vaiheet": "Vaiheita ei ole lisätty.", - "tyhja-placeholder-vuosiluokat": "Vuosiluokkakokonaisuuksia ei ole lisätty.", - "tyhjenna": "Tyhjennä", - "tyhjenna-koodin-arvo": "Poista valinta", - "tyhjenna-rajaus-tooltip": "Tyhjennä rajaus (Esc)", - "tyhjenna-valinnat": "Palauta valinnat alkutilaan", - "tyoryhma": "Työryhmä", - "tyoryhman-nimi": "Työryhmän nimi", - "tyotehtavat-joissa-voi-toimia": "Työtehtäviä, joissa tutkinnon suorittanut voi toimia", - "tyyppi": "Tyyppi", - "tyyppi-tutkintokohtainen": "Tutkintokohtainen", - "tyyppi-yhteinen": "Yhteinen", - "ui-kieli": "Käyttöliittymäkieli", - "url": "URL", - "useita-oppimaaria": "Useita oppimääriä", - "uusi": "Uusi", - "uusi-koulutuksenosa": "Uusi koulutuksen osa", - "uusi-kurssi": "Uusi kurssi", - "uusi-opas": "Uusi opas", - "uusi-oppiaine": "Uusi oppiaine", - "uusi-oppimaara": "Uusi oppimäärä", - "uusi-osaaminen": "Laaja-alainen osaaminen - uusi osaamiskokonaisuus", - "uusi-perustepohja": "Uusi perustepohja", - "uusi-perusteprojekti": "Luo uusi perusteprojekti", - "uusi-perusteprojekti-tuonti": "Tuo perusteprojekti", - "uusi-projekti": "Uusi projekti", - "uusi-projekti-otsikko": "Uusi perusteprojekti", - "uusi-tavoite-joukko": "Lisää osaamistavoite", - "uusi-termi": "Lisää uusi käsite", - "uusi-tiedote": "Lisää tiedote", - "uusi-tutkinnon-osa": "", - "uusi-tutkinnonosa": "", - "uusi-vaihe": "Uusi vaihe", - "uusi-vuosiluokkakokonaisuus": "Uusi vuosiluokkakokonaisuus", - "vahvista": "Vahvista", - "vahvista-avaus": "Vahvista avaus", - "vahvista-julkaisu": "Vahvista julkaisu", - "vahvista-kaytosta-poisto": "Vahvista toiminto", - "vahvista-kaytto": "Vahvista toiminto", - "vahvista-kopiointi": "Vahvista kopiointi", - "vahvista-liikkuminen": "Vahvista liikkuminen", - "vahvista-palautus": "Vahvista palautus", - "vahvista-palautus-sisältö": "Haluatko palauttaa perusteprojektin {{ nimi }}? Perusteprojektin sisältö palautetaan ja se asetetaan tilaan: {{ tila }}", - "vahvista-poisto": "Vahvista poisto", - "vahvista-version-palauttaminen": "Vahvista version palauttaminen", - "vahvista-version-palauttaminen-teksti": "Haluatko ottaa tämän version ({{versio}}) käyttöön? Versiosta luodaan kopio ja siitä luodaan uusi versio.", - "vaihda-arviointiasteikko": "Vaihda arviointiasteikko", - "vaihe-tehtava": "Vaiheen tehtävä", - "vaiheet": "Vaiheet", - "vain-korjaukset-sallittu": "Vain korjaukset sallittu", - "vain-koulutusvienti": "Vain koulutusvienti", - "vain-käyttämättömät": "Näytä käyttämättömät", - "vain-tekstimuutokset-sallittu": "Vain tekstimuutokset sallittuja", - "validointivirheet-header": "Validointivirheet", - "valinnainen": "Valinnainen", - "valinnaiset-moduulit": "Valinnaiset moduulit", - "valinnaiset-moduulit-kuvaus-placeholder": "Valinnaisten moduulien kuvaus", - "valinnaiset-osaamistavoitteet": "Valinnaiset osaamistavoitteet", - "valitse": "Valitse", - "valitse-diaarinumero": "Valitse diaarinumero", - "valitse-dokumenttin-versio": "Valitse dokumentin generaattori", - "valitse-jasenet": "Valitse jäsenet", - "valitse-kaikki": "Valitse kaikki", - "valitse-kieli": "Valitse kieli", - "valitse-koulutustyyppi": "Valitse koulutus/tutkintotyyppi", - "valitse-nimi": "Valitse nimi", - "valitse-tehtäväluokka": "Valitse tehtäväluokka", - "valitse-toteutus": "Valitse koulutustyypin toteutus", - "valitse-tyoryhmat": "Valitse työryhmat", - "valmaarviointi-arviointi-kuvaus": "Kuvaus", - "valmaarviointi-kuvaus-placeholder": "Osaamistavoite", - "valmaarviointi-uusi-arviointi-placeholder": "Kriteeri", - "valmaarviointi-uusi-kohde": "Kohde", - "valmaarviointi-uusi-kriteeri": "Uusi kriteeri", - "valmaarviointi-uusi-tavoite-placeholder": "Tavoite", - "valmis": "Valmis", - "valmis-ohje": "Perusteen osan sisältö on valmis", - "valtakunalliset-syventavat-kurssit": "Valtakunnalliset syventävät kurssit", - "valtakunnallinen": "Valtakunnallinen", - "valtakunnalliset-pakolliset-kurssit": "Pakolliset kurssit", - "valtakunnalliset-soveltavat-kurssit": "Valtakunnalliset syventävät kurssit", - "vanha": "Vanha", - "vapaa-tekstisisalto": "Vapaa tekstisisältö", - "varmista-lisays": "Varmista lisäys", - "varmista-osion-poisto-otsikko": "Varmista osion poisto", - "varmista-osion-poisto-teksti": "Haluatko poistaa osion? Kaikki osion sisältö menetetään.", - "varmista-poisto": "Varmista poisto", - "varmista-poisto-suosikki-teksti": "Haluatko varmasti poistaa suosikin?", - "varoitukset": "Varoitukset", - "vastaa": "Vastaa", - "versio": "Versio", - "versiohistoria": "Versiohistoria", - "vieras": "Vieras", - "vieraskoulutuksenosa": "Vieras koulutuksen osa", - "vierastutkinnonosa": "Vieras tutkinnon osa", - "vierastutkinto-ei-muita-ryhmia": "Vierastutkintoryhmä ei voi sisältää muita ryhmiä.", - "vierastutkinto-pitaa-olla-vierastutkintoryhmassa": "Vieras tutkinnon osa täytyy olla vierastutkintoryhmässä.", - "viesti": "Viesti", - "viesti-poistettu": "Viesti poistettu", - "virhe": "Virhe", - "virhe-koulutuksenonosaa-ei-löytynyt": "Hakemaasi koulutuksen osaa ei löytynyt", - "virhe-muu": "Virhe", - "virhe-perusteenosaa-ei-löytynyt": "Hakemaasi perusteen osaa ei löytynyt", - "virhe-sivua-ei-löytynyt": "Sivua ei löytynyt", - "virhe-tekstikappaletta-ei-löytynyt": "Hakemaasi tekstikappaletta ei löytynyt", - "virhe-tiedosto-epäonnistui": "Tiedoston avaaminen epäonnistui", - "virhe-tilan-vaihtamisessa": "Virhe tilan vaihtamisessa", - "virhe-tutkinnonosaa-ei-löytynyt": "Hakemaasi tutkinnon osaa ei löytynyt", - "virhe.jotain-meni-pieleen": "Oho! Jotain meni pieleen.", - "virheelliset": "Virheelliset", - "virheelliset-hae": "Hae virheitä", - "virheelliset-kuvaus": "Listaus perusteista mitkä eivät enää pääse läpi validoinnista.", - "virheelliset-otsikko": "Virheitä sisältävät julkiset perusteet", - "virheelliset-perusteet": "Virheelliset perusteet", - "voimaantulo-pvm": "Voimaantulo", - "voimassaolo": "Voimassaolo", - "voimassaolo-alkamispvm": "Voimassaolon alkaminen", - "voimassaolo-paattymispvm": "Voimassaolon päättyminen", - "voimassaoloAlkaa": "Voimassaolo alkaa", - "voimassaoloLoppuu": "Voimassaolo päättyy", - "vuosiluokat": "Vuosiluokat", - "vuosiluokka": "Vuosiluokka", - "vuosiluokka_1": "Vuosiluokka 1", - "vuosiluokka_2": "Vuosiluokka 2", - "vuosiluokka_3": "Vuosiluokka 3", - "vuosiluokka_4": "Vuosiluokka 4", - "vuosiluokka_5": "Vuosiluokka 5", - "vuosiluokka_6": "Vuosiluokka 6", - "vuosiluokka_7": "Vuosiluokka 7", - "vuosiluokka_8": "Vuosiluokka 8", - "vuosiluokka_9": "Vuosiluokka 9", - "vuosiluokkakokonaisuuden-osaamisalueet": "Vuosiluokkakokonaisuuden osaamisalueet", - "vuosiluokkakokonaisuuden-tehtava": "Vuosiluokkakokonaisuuden tehtävä", - "vuosiluokkakokonaisuudet": "Vuosiluokkakokonaisuudet", - "vuosiluokkakokonaisuus": "Vuosiluokkakokonaisuus", - "yhteiset-osuudet": "Yhteiset osuudet", - "yhteistyotaho-label": "Sopimusosapuoli", - "yhteys-palvelimeen-poikki": "Yhteys palveluun on katkennut.", - "yksi-oppimaara": "Yksi oppimäärä", - "yksikko": "Yksikkö", - "yksinkertainen": "Yksinkertainen", - "yleinen-tiedote": "Yleinen tiedote", - "yleinen-tiedote-header": "Yleinen", - "yleiset-osuudet": "Yleiset osuudet", - "yleiset-tavoitteet": "Yleiset tavoitteet", - "yleisettavoitteet-ei-otsikkoa": "Opetuksen yleisiä tavoitteita ei ole vielä määritelty", - "yleisettavoitteet-kuvaus-placeholder": "Kirjoita opetuksen yleisten tavoitteiden kuvaus", - "ylikirjoita-uusi-sisältö": "Jatka muokkaamista", - "ylikirjoittaessasi-voit-palauttaa": "Jatkaessasi voit ylikirjoittaa toisten muutokset. Ne säilyvät edelleen muutoshistoriassa ja voit palauttaa ne sieltä", - "yllapito": "Ylläpito" -} diff --git a/eperusteet/eperusteet-app/yo/app/localisation/locale-sv.json b/eperusteet/eperusteet-app/yo/app/localisation/locale-sv.json deleted file mode 100644 index 241a27040f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/localisation/locale-sv.json +++ /dev/null @@ -1,1050 +0,0 @@ -{ - "OPINTOVIIKKO": "sv", - "OSAAMISPISTE": "kp", - "aihekokonaisuudet": "Temaområden", - "aihekokonaisuudet-ei-otsikkoa": "Den allmänna beskrivningen för temaområdet har inte ännu definierats", - "aihekokonaisuudet-palautettu": "Den valda versionen är återställd", - "aihekokonaisuudet-yleiskuvaus-placeholder": "En allmän beskrivning av temaområdena", - "aihekokonaisuus-palautettu": "Den valda versionen är återställd.", - "aihekokonaisuus-yleiskuvaus-placeholder": "Skriv temaområdets allmänna beskrivning", - "alkuun": "Till början", - "aloita-raahaamalla-puuhun": "Hämta grupper eller examensdelar hit.", - "aloitus-ennen-lopetusta": "Periodens startdatum måste vara före slutdatumet.", - "ammatillinen-aikuiskoulutus": "Yrkesinriktad vuxenutbildning", - "ammatillinen-peruskoulutus": "Grundläggande yrkesutbildning", - "ammatillinenaikuiskoulutus": "Yrkesinriktad vuxenutbildning", - "ammatillinenperuskoulutus": "Grundläggande yrkesutbildning", - "ammattitaidonOsoittamistavat": "Sätt att påvisa yrkesskickligheten", - "ammattitaito-uusi-kohde-placeholder": "Föremålets namn (inte obligatoriskt)", - "ammattitaitovaatimukset": "Krav på yrkesskicklighet", - "ammattitutkinto": "Yrkesexamen", - "anna-diaarinumero-placeholder": "Mata in diarienummer", - "anna-paatos-pvm": "Ange datum för godkännande", - "anna-perusteen-nimi": "[Syötä perusteen nimi]", - "anna-projektin-nimi-placeholder": "Mata in projektets namn", - "anna-päätöspäivämäärä": "Mata in slutdatum", - "anna-toimikausi_alku": "Mata in verksamhetsperiodens startdatum", - "anna-toimikausi_loppu": "Mata in verksamhetsperiodens slutdatum", - "anna-voimaantulo-loppu-pvm": "Ge slutdatum för giltigheten", - "anna-voimaantulo-pvm": "Ge startdatum för giltigheten", - "anna-yhteistyotaho-placeholder": "Mata in avtalspart", - "annettu-arvo": "Givet värde", - "arvio-itse": "Bedöm själv.", - "arvioinnin-kohde": "Föremål för bedömningen", - "arvioinnin-otsikko": "Rubrik för bedömningen", - "arviointi": "Bedömning", - "arviointi-asteikon-valinta": "Välj bedömningsskala", - "arviointi-kohdealueet": "Målområden för bedömningen", - "arviointi-lisatiedot-placeholder": "[Arvioinnin sanallinen selitys tähän]", - "arviointi-muokkaa-taulukkona": "[Muokkaa taulukkona]", - "arviointi-paallekkaisia-osaamisia": "[Tallennus epäonnistui: päällekkäisiä osaamisen kuvauksia.]", - "arviointi-poista-kriteeri": "Radera raden", - "arviointi-uusi-kohde": "Lägg till föremål för bedömning", - "arviointi-uusi-kohde-placeholder": "Föremålets namn (inte obligatoriskt)", - "arviointi-uusi-kohdealue": "Lägg till målområde", - "arviointi-uusi-kohdealue-placeholder": "Målområdets namn", - "arviointi-uusi-kriteeri": "Lägg till en rad", - "arviointi-uusi-kriteeri-placeholder": "Kriteriets text", - "arviointi-vuosiluokan-paatteeksi": "Bedömningskriterier i slutet av årskurshelheten", - "arvion-hyva-osaaminen": "Kunskapskrav för goda kunskaper/vitsordet åtta", - "arvion-kuvaus": "[Arvion kuvaus]", - "arvo-askelvirhe": "Värdets steglängd får vara {{step}}", - "arvo-ei-desimaaliluku": "Värdet måste vara ett decimaltal", - "arvo-ei-kokonaisluku": "Värdet måste vara ett heltal", - "arvo-ei-numero": "Värdet måste vara en siffra", - "arvo-rajojen-ulkopuolella": "Värdet måste finnas mellan {{min}} och {{max}}", - "arvointi": "[Arviointi]", - "arvosana-asteikko": "Betygsskala/krav för godkännande", - "arvosanat": "[Arvosanat]", - "aseta-tila": "Ange status", - "avaa-sulje-kaikki": "Öppna/stäng allt", - "avaa-sulje-rakenne": "Öppna/stäng strukturen", - "copyright-opetushallitus": "Copyright © Utbildningsstyrelsen 2016", - "diaari-jo-listalla": "Diarienumret är redan valt", - "diaarinumero-kaytossa": "Diarienumret är redan i bruk", - "diaarinumero-label": "Diarienummer", - "diaarinumerolla-jyraa-vanhan": "Genom att välja samma diarienummer ersätts de gamla grunderna i samband med publiceringen", - "dokumentin-luonti-epaonnistui": "Ett PDF-dokument kunde inte skapas", - "dokumentin-tila": "PDF-dokumentets status", - "dokumentti-luotu": "PDF-dokumentet skapades", - "ePerusteet-koti": "eGrunder", - "edellinen": "Föregående", - "editoimasi-sisältö-on-muuttunut": "Det innehåll som du redigerat har ändrats", - "ei": "Nej", - "ei-asetettu": "Inte tillsatt", - "ei-korvattavia-perusteita": "Inga ersättande grunder har valts", - "ei-koulutuksia": "Inga utbildningskoder", - "ei-kuvausta": "[Ingen beskrivning]", - "ei-kuvia": "Inga bilder", - "ei-oppimaaria": "Inga lärokurser har lagts till", - "ei-osa-alueita": "Inga delområden.", - "ei-osaamisalan-kuvausta": "Ingen beskrivning av kompetensområdet", - "ei-projekteja": "Du har inga pågående projekt.", - "ei-päättymis-päivämäärää": "Inte fastställd", - "ei-suosikkeja": "Du har inte ännu lagt till favoriter.", - "ei-tekstikappaleita": "Inget textstycke hittades.", - "ei-termeja": "Inga begrepp har definierats.", - "ei-tiedotteita": "Inga meddelanden", - "ei-tiivistelmaa": "Inget sammandrag", - "ei-tuloksia": "Avgränsningen gav inga resultat", - "ei-tutkintonimikkeita ": "Inga examensbenämningar", - "ei-tutkintonimikkeita": "Inga examensbenämningar", - "ei-valintaa": "Inget val", - "ei_ole": "Dokumentet har inte skapats.", - "email": "Epost", - "en": "Engelska", - "eperusteet": "eGrunder", - "eperusteet-otsikko": "eGrunder", - "eperusteet-virkailija-linkki": "Administratörens vy", - "epimage-plugin-button-label": "Bild", - "epimage-plugin-hylatty": "Du kan endast ladda ner bilder i jpg- eller png-format.", - "epimage-plugin-label": "Bild", - "epimage-plugin-label-epimage": "Bild", - "epimage-plugin-lisaa-uusi": "Ladda ny bild", - "epimage-plugin-menu-muokkaa": "Redigera bilden", - "epimage-plugin-menu-poista": "Radera bild", - "epimage-plugin-select-placeholder": "Välj bild...", - "epimage-plugin-tallennettu": "Bilden är sparad.", - "epimage-plugin-title": "Lägg till bild", - "epimage-plugin-valitse": "Välj fil…", - "epimage-plugin-virhe-kuva-tyhja": "Välj bild.", - "epimage-plugin-virhe-viite-tyhja": "Bilden som ska läggas till är inte vald.", - "erikoisammattitutkinto": "Specialyrkesexamen", - "esikatselu-varoitus": "Läroplanen är ännu halvfärdig. ", - "esiopetus": "Förskoleundervisning", - "esitys": "Förslag", - "et-ole-lisannyt-viela-tutkintonimikkeita": "Inga examensbenämningar har lagts till ännu", - "et-ole-vielä-tallentanut-tekstikappaleita": "Du har inte ännu fogat alla textstycken till grunderna", - "et-ole-vielä-tallentanut-tutkinnonosia": "Du har inte ännu fogat alla examensdelar till grunderna", - "etsi-perusteprojekteista": "Sök följande projekt som gäller grunder...", - "etsi-rakenteesta": "Sök i strukturen…", - "etsi-sisallosta": "Avgränsa innehållet...", - "etsi-tiedotteista": "Sök bland meddelanden", - "etusivu.ammatilliset": "Yrkesutbildning", - "etusivu.eperusteet": "eGrunder", - "etusivu.eperusteet.kuvaus": "I tjänsten eGrunder kan du bekanta dig med ikraftvarande läroplans- och examensgrunder. Grunderna publiceras i tjänsten stegvis.", - "etusivu.esiopetuksen-peruste": "Grunderna för förskoleundervisningens läroplan", - "etusivu.hae-muita-opseja": "Sök andra läroplaner", - "etusivu.lukiokoulutuksen-peruste": "Grunderna för gymnasiets läroplan", - "etusivu.nayta-kaikki-uutiset": "Visa alla nyheter", - "etusivu.paikalliset-opsit": "Lokala läroplaner", - "etusivu.perusopetuksen-peruste": "Grunderna för läroplanen för den grundläggande utbildningen", - "etusivu.tiedotteet": "Meddelanden", - "etusivu.uusimmat-ammatilliset": "De nyaste examensgrunderna inom yrkesutbildningen", - "etusivu.uusimmat-perusteet": "De nyaste eGrunderna", - "etusivu.uutisia": "Nyheter", - "etusivu.valtakunnalliset-perusteet": "De nationella eGrunderna", - "etusivulle": "Till startsidan", - "excel": "Excel", - "excel-avataan-tiedostoa": "Dokumentet öppnas", - "excel-ei-kahta-samaa": "Examenskoden måste vara unik", - "excel-luetaan-tekstikappaleita": "Textstycken läses", - "excel-luetaan-tutkinnonosia": "Examensdelar läses", - "excel-parsitaan-perustietoja": "Basuppgifter läses", - "excel-tiedostossasi-oli-virheitä": "Det fanns fel i exceldokumentet", - "fi": "Finska", - "hae-koodi": "Sök kod", - "hae-koodistosta": "Sök bland koderna", - "hae-perusteita": "Sök grunder", - "hae-perusteprojekteja": "Sök projekt som gäller grunder", - "hae-ryhma": "Sök grupp", - "haetaan-koodistosta": "Sök bland koderna", - "haetaan-ryhmia": "Grupperna söks...", - "haetaan-tutkinnon-osia": "Examensdelarna söks...", - "haetaan-tyoryhmia": "Arbetsgrupper sökes", - "haku": "Sökning", - "haku-ala": "[Ala]", - "haku-hakuehdot": "Sökvillkor", - "haku-kaikki-alat": "Alla utbildningsområden", - "haku-kaikki-opintoalat": "Alla studieområden", - "haku-kaikki-tutkinnot": "Alla examina", - "haku-kieli": "Språk", - "haku-koulutusala": "Utbildningsområde", - "haku-nayta-siirtymaajalla-olevat": "Visa de som är i en övergångsfas", - "haku-nimi": "Namn", - "haku-opintoala": "Studieområde", - "haku-otsikko": "Sökning av grunder", - "haku-tulosten-maara": "Antal grunder som hittades:", - "haku-tutkinnon-nimi-placeholder": "Examens namn", - "haku-tyyppi": "Typ", - "haku-voimaantulopvm": "Datum för ikraftträdande", - "hakuehdot": "[Hakuehdot]", - "hallinta": "Administrering", - "hallintapaneeli": "Kontrollpanel", - "haluatko-jatkaa": "Vill du fortsätta?", - "haluatko-varmasti-poistaa-osion": "Är du säker på att du vill radera delen?", - "huom": "Obs!", - "jarjestysnumero": "Ordningsnummer", - "jatkoopinto-kelpoisuus": "Behörighet för fortsatta studier", - "jnro": "Ordningsnummer", - "joku-toinen-on-muokannut-dokumenttia": "Någon annan har redigerat dokumentet. Du kan antingen ångra dina ändringar eller fortsätta redigera dokumentet och skriva över de ändringar som någon annan har gjort.", - "julkaisu-korvaa-perusteet": "Grunderna ersätter följande grunder som är i bruk:", - "julkinen-tiedote": "Offentligt meddelande", - "julkinen-tiedote-header": "Offentlig", - "järjestelmävirhe-alku": "Ett systemfel inträffade", - "järjestelmävirhe-loppu": ". Var god och försök på nytt. Om problemet upprepas, kontakta tjänstens administratör.", - "kaannos": "Översättning", - "kaikki": "Allt", - "kaikki-koulutustyypit": "Alla utbildningstyper", - "kansainvaliset-sopimukset": "Internationella överenskommelser", - "kasitteet": "Begrepp", - "katselet-vanhaa-versiota": "Du tittar på en gammal version av sidan.", - "katso-uusin-versio": "Se den senaste versionen", - "kelvoton-pvm": "Ogiltigt datum", - "keskeiset-sisallot": "Centralt innehåll", - "keskeiset-sisaltoalueet": "Centrala innehållsområden", - "keskustelu": "Diskussion", - "kielen-vaihto": "[Vaihda kieli]", - "kieli": "Språk", - "kirjanmerkilla-pitaa-olla-nimi": "Bokmärket måste ha ett namn", - "kohde": "Föremål", - "kohdealue": "Målområde", - "kohdealueet": "Målområden", - "kommentoi-muutosta": "Kommentera ändringen", - "kommentointi": "Kommentering", - "kommentti": "Kommentar", - "kommentti-ei-saa-ylittaa": "Kommentaren får inte vara längre än {{ maara }} tecken.", - "kommentti-poistettu": "Kommentaren raderades", - "koodi": "Kod", - "koodi-virhe-1": "Ingen kod har angetts.", - "koodi-virhe-2": "Med den kod du använde hittades redan examensdelen.", - "koodi-virhe-3": "Följande fält är obligatoriska:", - "koodittomia-tutkinnon-osia": "Alla examensdelar har ingen kod", - "kopioi-leikelaudalle": "Kopiera till klippbordet", - "kopioi-muokattavaksi": "Kopiera för redigering", - "korjaa-virheet": "Korrigera följande fel", - "korosta": "Markera", - "korvattava-diaari-on-oma-diaari": "I listan över grunder som ersätts finns ett eget diarienummer", - "korvattava-peruste-on-eri-koulutustyyppia": "Grunderna som ersätts är av en annan utbildningstyp", - "korvattavaa-ei-loydy-jarjestelmasta": "Grunderna som ersätts hittas inte i systemet.", - "korvattavat-perusteet": "Föreskrifter som ersätts", - "koulutuksen-nimi": "Utbildningens namn", - "koulutukset": "Utbildningar", - "koulutus": "Utbildning", - "koulutus-tyyppi": "Utbildningstyp", - "koulutusalakoodi": "Kod för utbildningsområde", - "koulutustyyppi": "Utbildningstyp", - "koulutustyyppi-label": "Utbildnings-/examenstyp", - "koulutustyyppi_1": "Yrkesinriktad grundexamen", - "koulutustyyppi_11": "Yrkesexamen", - "koulutustyyppi_12": "Specialyrkesexamen", - "koulutustyyppi_15": "Förskoleundervisning", - "koulutustyyppi_16": "Grundläggande utbildning", - "koulutustyyppi_18": "Handledande utbildning för den grundläggande yrkesutbildningen", - "koulutustyyppi_2": "Gymnasieutbildning", - "koulutustyyppi_20": "Småbarnspedagogik", - "koulutustyyppi_22": "Undervisning som förbereder för den grundläggande utbildningen", - "koulutustyyppi_23": "Utbildning som förbereder för gymnasieutbildning", - "koulutustyyppi_5": "Utbildning som handleder för arbete och ett självständigt liv", - "koulutustyyppi_6": "Påbyggnadsundervisning", - "kpl": "st", - "kriteerit": "Kriterier", - "kunnat": "Kommuner", - "kurssi-action": "Skapa en kurs", - "kurssi-kuvaus-header": "Beskrivning", - "kurssi-lokalisoitu-koodi": "Kod", - "kurssi-lokalisoitu-koodi-header": "Kod", - "kurssi-nimi-header": "Namn", - "kurssi-osa-keskeinenSisalto": "Centralt innehåll", - "kurssi-osa-tavoitteet": "Mål", - "kurssi-osa-tavoitteetJaKeskeinenSisalto": "Mål och centralt innehåll", - "kurssi-peruuta": "Ångra ", - "kurssi-sisallot-header": "Innehåll", - "kurssi-tavoitteet-header": "Mål", - "kurssi-title": "Kurs", - "kurssi-tyypin-kuvaus": "Beskrivning", - "kurssi-tyyppi": "Typ", - "kurssi-tyyppi-header": "Typ", - "kurssi-tyyppi-selite-paikallinen": "Lokal", - "kurssi-tyyppi-selite-pakollinen": "Obligatorisk", - "kurssi-tyyppi-selite-soveltava": "Tillämpad", - "kurssi-tyyppi-selite-syventava": "Fördjupad", - "kurssi-tyyppi-selite-valtakunnallinen": "Nationell", - "kurssi-tyyppi-selite-valtakunnallinen_soveltava": "Tillämpad", - "kurssi-tyyppi-selite-valtakunnallinen_syventava": "Fördjupad", - "kurssin-sisalto": "Kursens innehåll", - "kurssit": "Kurser", - "kuvaus": "Beskrivning", - "kvliite-validointi-taso-koodi-puute": "Koulutuskoodirelaatioista puuttuu tasot.", - "kvliiteen-yksiportainen-arviointiasteikko": "Godkänd / underkänd", - "kyllä": "Ja", - "kysy-neuvoa-anna-palautetta": "Fråga råd - ge feedback", - "laadinnan-esikatselu-info": "Detta är förhandsgranskning av ett projekt som gäller grunder. Allt innehåll syns inte nödvändigtvis korrekt.", - "laaja-alainen-osaaminen": "Mångsidig kompetens", - "laaja-alainen-osaaminen-kuvaus": "Beskrivning av mångsidig kompetens", - "laaja-alaisen-osaamisen-alueet": "Mångsidiga kompetensområden", - "laaja-alaiset-osaamiset": "Mångsidiga kompetenser", - "laajuuden-yksikkö": "Enhet för omfattning", - "laajuus": "Omfattning", - "ladataan-tyoryhman-tietoja": "Uppgifter om arbetsgrupperna söks", - "lajittelu-jarjestysnumero": "Nr.", - "lataa": "Ladda ner", - "lataa-dokumentti": "Ladda ner dokumentet", - "lataa-peruste-pdf-muodossa": "Ladda ner grunderna i pdf-format", - "leikelauta": "Klippbord", - "leikelauta-varoitus": "Delar av uppbyggnaden har placerats på klippbordet. Om du går ut från redigering av uppbyggnaden, töms klippbordet och du förlorar dess innehåll.", - "liita-perusteeseen": "Foga till grunderna", - "liita-perusteprojekti-tiedotteeseen": "Foga ett projekt som gäller grunder till ett meddelande", - "liittamattomia-tutkinnon-osia": "Examensdelar som inte har fogats", - "liitä-suoritustapaan": "Foga genomförandesättet", - "lisaa": "Lägg till", - "lisaa-aihekokonaisuus": "Lägg till temaområde", - "lisaa-aihekokonaisuus-action": "Lägg till temaområde", - "lisaa-aihekokonaisuus-otsikko-header": "Temaområdets rubrik", - "lisaa-aihekokonaisuus-title": "Lägg till temaområde", - "lisaa-aihekokonaisuus-yleiskuvaus-header": "Beskrivning av temaområdet", - "lisaa-ainakin-yksi-kieli": "Grunderna ska ha minst ett språk.", - "lisaa-aliotsikko": "Lägg till underrubrik", - "lisaa-arviointi": "Lägg till bedömning", - "lisaa-diaari": "Lägg till diarienummer", - "lisaa-kieli": "Lägg till språk", - "lisaa-kommentti": "Lägg till kommentar", - "lisaa-koulutus": "Lägg till utbildningskod", - "lisaa-kriteeri": "Lägg till kriterium", - "lisaa-kurssi": "Lägg till kurs", - "lisaa-kurssi-action": "Lägg till kurs", - "lisaa-kurssi-title": "Lägg till gymnasiekurs", - "lisaa-laaja-alainen-osaaminen": "Lägg till mångsidig kompetens", - "lisaa-nimike": "Lägg till benämning", - "lisaa-opetuksen-tavoite": "Lägg till mål för undervisningen", - "lisaa-oppiaine": "Lägg till läroämne", - "lisaa-oppimaara": "Lägg till lärokurs", - "lisaa-osa-alue": "Lägg till delområde", - "lisaa-osaamiskokonaisuus": "Lägg till kompetenshelhet", - "lisaa-osaamistavoite": "Lägg till mål för kunnandet", - "lisaa-sisalto": "Lägg till innehåll", - "lisaa-sisaltoalue": "Lägg till innehållsområde", - "lisaa-tavoitealue": "Lägg till målområde", - "lisaa-tiedote": "Lägg till meddelande", - "lisaa-tutkinnonosa": "Lägg till examensdel", - "lisaa-tutkintokohtainen-osa": "Lägg till textstycke", - "lisaa-tutkintonimike": "Lägg till examensbenämning", - "lisaa-tyoryhma": "Lägg till arbetsgrupp", - "lisaa-vapaa-teksti": "Lägg till textstycke", - "lisaa-vuosiluokkakokonaisuus": "Lägg till årskurshelhet", - "lisaa-yleisettavoitteet-kuvaus-header": "Beskrivning av de allmänna målen för undervisningen", - "lisaa-yleisettavoitteet-otsikko-header": "Rubrik för de allmänna målen för undervisningen", - "lisaopetus": "Påbyggnadsundervisning", - "lisatieto": "Tilläggsuppgift", - "lisatietoja": "Mer information", - "lista": "Lista", - "lopetus-aloituksen-jälkeen": "Verksamhetsperiodens slutdatum måste vara efter startdatumet.", - "loydetty-termien-maara": "Antal begrepp som hittades:", - "loydettyjen-opsien-maara": "Antal läroplaner som hittades", - "lue-lisaa": "Visa mera…", - "lukio-etsi-kursseista": "Sök bland kurserna", - "lukio-etsi-liitetyista-kursseista": "Sök bland kurserna…", - "lukio-etsi-liittamattomista-kursseista": "Sök bland kurser som inte är bifogade…", - "lukio-etsi-oppiaineista": "Sök bland läroämnena", - "lukio-etsi-oppiaineista-ja-kursseista": "Sök...", - "lukio-kurssi-tyyppi-otsikko-paikallinen_soveltava": "Lokal tillämpad", - "lukio-kurssi-tyyppi-otsikko-paikallinen_syventava": "Lokal fördjupad", - "lukio-kurssi-tyyppi-otsikko-valtakunnallinen_pakollinen": "Obligatorisk", - "lukio-kurssi-tyyppi-otsikko-valtakunnallinen_soveltava": "Nationell tillämpad", - "lukio-kurssi-tyyppi-otsikko-valtakunnallinen_syventava": "Nationell fördjupad", - "lukio-kurssi-tyyppi-placeholder-paikallinen_soveltava": "Beskrivning av läroämnets lokala tillämpade kurser…", - "lukio-kurssi-tyyppi-placeholder-paikallinen_syventava": "Beskrivning av läroämnets lokala fördjupade kurser…", - "lukio-kurssi-tyyppi-placeholder-valtakunnallinen_pakollinen": "Lokal precisering av beskrivningen av läroämnets obligatoriska kurser... ", - "lukio-kurssi-tyyppi-placeholder-valtakunnallinen_soveltava": "Lokal precisering av beskrivningen av läroämnets tillämpade kurser... ", - "lukio-kurssi-tyyppi-placeholder-valtakunnallinen_syventava": "Lokal precisering av beskrivningen av läroämnets fördjupade kurser... ", - "lukio-liitamattomat-kurssit": "Kurser som inte har bifogats", - "lukio-liitetyt-kurssit": "Bifogade kurser", - "lukio-liitetyt-kurssit-ohje": "Du kan lägga till samma kurs under ett annat läroämne/lärokurs med funktionen \"Redigera strukturen\"", - "lukio-peruste-esikatseltavissa": "Grunderna för gymnasiet kan förhandsgranskas", - "lukiokoulutus": "Gymnasieutbildning", - "lukiokoulutusyleisettavoitteet-palautettu": "Den valda versionen är återställd", - "lukiokurssi-palautettu": "Den valda versionen är återställd.", - "lukiokurssit": "Kurser", - "lukiooppiaine-palautettu": "Den valda versionen är återställd", - "lukiooppiaine-poistettu": "Raderingen av läroämnet lyckades", - "lukiooppiaineet-kurssit-tab-header": "Kurser", - "lukiooppiaineet-oppiaineet-tab-header": "Läroämnen", - "lukiooppiaineet-puu-tab-header": "Läroplan", - "lukiorakenne-palautettu": "Den valda versionen är återställd", - "lukitus-kayttajalla": "Sidan är låst. Användaren {{user}} redigerar sidan.", - "luo-pdf": "Skapa PDF", - "luo-pdf-dokumentti": "Skapa PDF-dokument", - "luo-pdf-dokumentti-perusteesta": "Skapa PDF-dokument av grunderna", - "luo-perustepohja-nappi": "Skapa en botten för grunderna", - "luo-perusteprojekti-nappi": "Skapa projekt", - "luo-tyoryhma": "Skapa arbetsgrupp", - "luo-uusi": "Skapa ny", - "luo-uusi-perustepohja": "Skapa en ny botten för grunderna", - "luo-uusi-ryhma": "Skapa ny grupp", - "luodaan": "Skapas som bäst", - "luoja": "Skapat av", - "luonnos": "Utkast", - "luonti-diaarinumero-ohje": "Lägg till diarienumret för beslutet om tillsättande av arbetsgrupp som arbetar med grunder.", - "luonti-paatospaivamaara-ohje": "Lägg till datum för beslutet om tillsättande av arbetsgrupp som arbetar med grunder.", - "luonti-projektin-nimi-ohje": "Ge projektets namn i formen 'Projekt som gäller grunderna för [Namn]' (t.ex. 'Projekt som gäller grunderna för yrkesexamen inom branschen för byggnadsprodukter').", - "luonti-tekstikappale": "Nytt textstycke", - "luonti-tutkinnon-osa": "Ny examendel", - "luotu": "Skapad", - "maarayksen-diaarinumero": "Föreskriftens diarienummer", - "maarayksen-paatospaivamaara": "Föreskriftens beslutsdatum", - "maarayskirje": "Föreskrift", - "maksimi": "Maximum", - "mandatory-odottamaton-virhe": "Du har inte fyllt i alla obligatoriska fält", - "mandatory-otsikkoa-ei-asetettu": "Rubriken är obligatorisk", - "merkitse-suosikiksi": "Markera som favorit", - "minimi": "Minimum", - "muodostumis-rakenne-validointi-laajuus": "Den totala omfattningen av gruppens delar når inte upp till den behövliga omfattningen", - "muodostumis-rakenne-validointi-maara": "Det totala antalet delar i gruppen når inte upp till det behövliga antalet", - "muodostumis-rakenne-validointi-uniikit": "Gruppen innehåller samma examensdelar", - "muodostumissaannot": "Examens uppbyggnad", - "muokattavana": "Håller på att redigeras", - "muokattu": "Redigerad", - "muokattu-viimeksi": "Redigerad senast", - "muokkaa": "Redigera", - "muokkaa-aihekokonaisuus-action": "Spara", - "muokkaa-aihekokonaisuus-title": "Redigera temaområdet", - "muokkaa-kohdealueita": "Redigera målområden", - "muokkaa-kurssia": "Redigera kursen", - "muokkaa-kurssia-action": "Spara förändringarna", - "muokkaa-lisaa-vapaa-teksti": "Lägg till textstycke", - "muokkaa-muodostumissääntöjä": "Redigera", - "muokkaa-oppiainetta": "Redigera läroämnet", - "muokkaa-oppimaaraa": "Redigera lärokursen", - "muokkaa-osa-aluetta": "Redigera delområdet", - "muokkaa-osaaminen": "Mångsidig kompetens - redigera kompetenshelheten", - "muokkaa-rakennetta": "Redigera uppbyggnaden", - "muokkaa-ryhmaa": "Redigera gruppen", - "muokkaa-tekstikappaleiden-rakennetta": "Redigera textstyckenas uppbyggnad", - "muokkaa-termia": "Redigera begreppet", - "muokkaa-tiedotetta": "Redigera meddelandet", - "muokkaa-tutkinnon-osaa": "Redigera examensdelen", - "muokkaa-tyoryhmaa": "Redigera arbetsgruppen", - "muokkaa-vuosiluokkakokonaisuutta": "Redigera årskurshelheten", - "muokkaaja": "Redigerare", - "muokkaus": "Redigering", - "muokkaus-kohdealueet": "Redigera målområdena", - "muokkaus-kommentit": "[Kommentit]", - "muokkaus-koulutuksen-osan-arviointi-taulukko-header": "Bedömning av kunnande i tabellformat", - "muokkaus-koulutuksen-osan-tavoitteet-header": "Mål", - "muokkaus-laaja-alainen-osaaminen-header": "Mångsidig kompetens", - "muokkaus-lisaa-osio": "Lägg till en del", - "muokkaus-lisaa-sisalto": "Lägg till innehåll", - "muokkaus-paikallisesti-paatettavat-asiat-header": "Beslut som avgörs på lokal nivå", - "muokkaus-paikallisesti-paatettavat-asiat-placeholder": "Anteckna beslut som avgörs på lokal nivå här", - "muokkaus-rakenne": "Redigera examens uppbyggnad", - "muokkaus-siirtyma-edellisesta-header": "Övergång från föregående fas", - "muokkaus-siirtyma-edellisesta-placeholder": "Anteckna övergångens innehåll här", - "muokkaus-siirtyma-seuraavaan-header": "Övergång till följande fas", - "muokkaus-siirtyma-seuraavaan-placeholder": "Anteckna övergångens innehåll här", - "muokkaus-teksikappaleen-nimi-header": "Rubrik", - "muokkaus-teksikappaleen-nimi-placeholder": "Anteckna rubriken här", - "muokkaus-tekstikappale": "Redigera textstycket", - "muokkaus-tekstikappale-tallennettu": "Textstycket har sparats", - "muokkaus-tekstikappaleen-teksti-header": "Styckets text", - "muokkaus-tekstikappaleen-teksti-placeholder": "Skriv styckets text här", - "muokkaus-tutkinnon-jarjestysnumero": "Ordningsnummer", - "muokkaus-tutkinnon-osa": "Redigera examensdelen", - "muokkaus-tutkinnon-osa-tallennettu": "Examensdelen har sparats", - "muokkaus-tutkinnon-osan-ammattitaidon-osoittamistavat-header": "Olika sätt att visa yrkesskicklighet", - "muokkaus-tutkinnon-osan-ammattitaidon-osoittamistavat-placeholder": "Lista sätten att påvisa yrkesskicklighet här", - "muokkaus-tutkinnon-osan-ammattitaitovaatimukset-header": "Krav på yrkesskicklighet", - "muokkaus-tutkinnon-osan-ammattitaitovaatimukset-placeholder": "Lista examensdelens krav på yrkesskicklighet här", - "muokkaus-tutkinnon-osan-ammattitaitovaatimukset-taulukko-header": "[Ammattitaitovaatimukset taulukkona]", - "muokkaus-tutkinnon-osan-ammattitaitovaatimukset-teksti-header": "[Ammattitaitovaatimukset tekstinä]", - "muokkaus-tutkinnon-osan-arviointi-header": "[Arviointi]", - "muokkaus-tutkinnon-osan-arviointi-taulukko-header": "Bedömning i tabellform", - "muokkaus-tutkinnon-osan-arviointi-teksti-header": "Bedömning i textform", - "muokkaus-tutkinnon-osan-arviointi-teksti-placeholder": "Anteckna bedömningskriterierna här", - "muokkaus-tutkinnon-osan-koodi-header": "Kod", - "muokkaus-tutkinnon-osan-koodi-placeholder": "[Tutkinnon osan koodi]", - "muokkaus-tutkinnon-osan-nimi-header": "Namn", - "muokkaus-tutkinnon-osan-nimi-placeholder": "[Kirjoita tähän otsikko]", - "muokkaus-tutkinnon-osan-osaamisala-header": "[Osaamisala]", - "muokkaus-tutkinnon-osan-osaamisala-placeholder": "[Kirjoita tähän tutkinnon osan osaamisala]", - "muokkaus-tutkinnon-osan-tavoitteet-header": "Mål", - "muokkaus-tutkinnon-osan-tavoitteet-placeholder": "Anteckna målen för examensdelarna här", - "muokkaus-uusi-kappale-placeholder": "[Uusi kappale]", - "muokkaus-uusi-kommentti-placeholder": "[Uusi kommentti]", - "muokkaus-vuosiluokkakokonaisuuden-osa": "Redigera årskurshelhetens del", - "muokkaus-vuosiluokkakokonaisuuden-tehtava-header": "Årskurshelhetens uppdrag", - "muokkaus-vuosiluokkakokonaisuuden-tehtava-placeholder": "Anteckna årskurshelhetens uppdrag här", - "määritelty": "Det som fastställs i grunderna", - "määrittelemätön": "Det som fastställs i examen", - "navi.ammatillinenaikuiskoulutus": "Yrkesinriktad vuxenutbildning", - "navi.ammatillinenperuskoulutus": "Grundläggande yrkesutbildning", - "navi.esiopetus": "Förskoleundervisning", - "navi.etusivu": "Startsida", - "navi.lisaopetus": "Påbyggnadsundervisning", - "navi.lukio": "Gymnasium", - "navi.lukiokoulutus": "Gymnasieutbildning", - "navi.opetussuunnitelmat": "Läroplaner", - "navi.perusopetus": "Grundläggande utbildning", - "navi.peruste": "Grunder", - "navi.tiedote": "Meddelande", - "navi.valikkon-otsikko": "eGrunder meny", - "navi.valmentavakoulutus": "Handledande utbildning ", - "navi.varhaiskasvatus": "Småbarnspedagogik", - "nayta": "Visa", - "nayta-aliviestit": "Visa svaren", - "nayta-kuvaukset": "Visa beskrivningarna", - "nayta-osaamiskokonaisuuden-kuvaus": "Visa den allmänna beskrivningen av kompetenshelheten", - "nayta-perusteen-teksti": "Visa grundernas text", - "nayta-ryhman-kuvaus": "Visa gruppens beskrivning", - "nayta-versiohistoria": "Historia", - "nayta-virheet": "Kolla uppbyggnaden", - "naytto": "Fristående examen", - "nimeton": "", - "nimeton-vierastutkinto": "Främmande examensdel utan namn", - "nimetön": "", - "nimi": "Namn", - "nimi-on-jo-kaytossa": "Arbetsgruppen finns redan. Välj ett annat namn.", - "nimi-on-pakollinen": "Rubriken är obligatorisk.", - "näytä-kaikki": "Visa alla", - "odotettu-arvo": "Förväntat värde", - "odottamaton-virhe": "Ett oväntat fel inträffade", - "ohje": "Anvisning", - "ohje-hallintapaneeli": "Kontrollpanelen är avsedd för att få tillgång till funktioner som omfattar hela tjänsten.", - "ohje-muodostuminen-ryhma": "Skapa grupp och för den till önskad plats i uppbyggnaden.", - "ohje-muodostuminen-tutkinnonosat": "Välj examensdel och för den till önskad plats i uppbyggnaden.", - "ohje-perusteprojekti": "Via denna vy kan projekt och bottnar hanteras.", - "ohje-ryhma-koko": "Storleken bestämmer hur många delar en grupp kan innehålla", - "ohje-ryhma-laajuus": "Omfattningen bestämmer antalet delar i gruppen i förhållande till antalet enheter", - "ohje-ryhma-rooli": "

    Fastställs i grunderna:Gruppens innehåll bestäms i samband med att uppbyggnaden skapas.

    Gruppen tilldelas endast regler för uppbyggnad och innehållet bestäms i samband med det lokala uppgörandet.

    ", - "ohje-tiedotteet": "Via denna vy kan meddelanden hanteras.", - "ohje-tutkinnonosa-tyyppi": "

    Examensdelens typ bestämmer vilka innehåll som ska ges för delen.

    Examensspecifik: För examensdelen bestäms innehåll och bedömningskriterier.

    Gemensam: För examensdelen bestäms delspecifika delområden, och för vart och ett av dem bestäms eget innehåll och bedömningskriterier.

    ", - "ok": "OK", - "oletus": "Standard", - "oma-diaarinumero": "Grunderna kan inte ersätta sig själva", - "omat-suosikit": "Egna favoriter", - "opetuksen-kohdealueet": "Undervisningens målområden", - "opetuksen-sisallot": "Undervisningens innehåll", - "opetuksen-tavoitteet": "Undervisningens mål", - "opetuksen-yleiset-tavoitteet": "Allmänna mål för undervisningen", - "opetus": "Undervisning ", - "opetussuunnitelma": "Läroplan", - "opetussuunnitelman-nimi": "Läroplanens namn", - "opetussuunnitelman-tiedot": "Läroplanens uppgifter", - "opintoluokitus": "Studieklassificering", - "opintopolku": "Studieinfo", - "opiskelija": "Studenten", - "opiskelija-tai-tutkinnon-suorittaja": "Den studerande eller examinanden", - "oppiaine": "Läroämne", - "oppiaine-kurssit": "Kurser", - "oppiaine-osio-arviointi": "Bedömning av elevens lärande", - "oppiaine-osio-lukio-arviointi": "Bedömning", - "oppiaine-osio-ohjaus": "Handledning och stöd", - "oppiaine-osio-osaalue": "Delområde", - "oppiaine-osio-tavoitteet": "Mål för undervisningen", - "oppiaine-osio-tehtava": "Läroämnets uppdrag", - "oppiaine-osio-tyotavat": "Lärmiljöer och arbetssätt", - "oppiaineella-ei-vuosiluokkasisaltoja": "För läroämnet har inte definierats innehåll enligt årskurs.", - "oppiaineen-sisallot": "Läroämnets struktur", - "oppiaineen-sisalto": "Läroämnets innehåll", - "oppiaineet": "Läroämnen", - "oppiaineet-ja-oppimaarat": "Läroämnen och lärokurser", - "oppiaineet-oppimaarat": "Läroämnen", - "oppiaineet-oppimaarat-header": "Läroämnen", - "oppiaineetyleissivistava": "Läroämnen, allmänbildande", - "oppilaitos-organisaatio-paikkakunta": "Läroanstalt / Organisation / Ort", - "oppimaara": "Lärokurs", - "oppimaarat": "Lärokurser", - "ops": "Grundläggande utbildning ", - "ops-esikatselu": "Förhandsgranskning av läroplanen", - "ops-ja-tutkintojen-perusteet": "Läroplans- och examensgrunder", - "organisaatiot": "Organisationer", - "osa": "Del", - "osa-alueet": "Delområden:", - "osaamisala": "Kompetensområde", - "osaamisalan-kuvaus": "Beskrivning av kompetensområde", - "osaamisalaryhma-varoitus": "Under en kompetensområdesgrupp kan det inte finnas en annan kompetensområdesgrupp.", - "osaamisalat": "Kompetensområden", - "osaamisen-arviointi": "Bedömning av kunnande", - "osaamisen-arviointi-tekstina": "Bedömning av kunnande i textformat", - "osaamisen-kuvaus": "[Osaamisen kuvaus]", - "osaamisen-kuvaus-arvosanalle_0": "Kriterier för goda kunskaper i slutet av åk 2", - "osaamisen-kuvaus-arvosanalle_5": "[Osaamisen kuvaus arvosanalle 5]", - "osaamisen-kuvaus-arvosanalle_6": "[Osaamisen kuvaus arvosanalle 6]", - "osaamisen-kuvaus-arvosanalle_7": "[Osaamisen kuvaus arvosanalle 7]", - "osaamisen-kuvaus-arvosanalle_8": "[Osaamisen kuvaus arvosanalle 8]", - "osaamisen-kuvaus-arvosanalle_9": "[Osaamisen kuvaus arvosanalle 9]", - "osaamisen-kuvaus-arvosanalle_10": "[Osaamisen kuvaus arvosanalle 10]", - "osaamistavoitteet": "Mål för kunnande", - "osaamistavoitteet-selite": "Beskrivning", - "osaan-kuvaus": "Fristående examina och grundläggande yrkesutbildning", - "osaan-linkki": "Jagkan.fi", - "osaatko-jo": "Kan du redan?", - "osia-valittava-vahintaan": "Du måste välja minst", - "osia-valittava-vahintaan-ja-enintaan-koko": "Minst {{ kokoMinimi }} och högst {{ kokoMaksimi }} delar ska väljas.", - "osia-valittava-vahintaan-ja-enintaan-laajuus": "Delar ska väljas så att omfattningen blir minst {{ laajuusMinimi }} och högst {{ laajuusMaksimi }}.", - "osia-valittava-vahintaan-koko": "Minst {{ kokoMinimi }} delar ska väljas.", - "osia-valittava-vahintaan-laajuus": "Minst {{ laajuusMinimi }} {{laajuusYksikko}} delar ska väljas.", - "osien-rakenteen-päivitys-onnistui": "Delarnas uppbyggnad har uppdaterats", - "osiot": "Delar", - "ota-versio-kayttoon": "Ta denna version i bruk", - "otsikko": "Rubrik", - "paatos-pvm": "Datum för godkännande", - "paatospaivamaara": "Datum för beslut", - "paattymisaikaa-ei-ole-maaritetty": "Odefinierbar", - "paikallinen": "Lokal", - "paikallisessa-laadinnassa-maariteltava": "Vid uppgörandet på lokal nivå ska bestämmas", - "paikallisesti-paatettavat-asiat": "Frågor som avgörs på lokal nivå", - "paikalliset-opetussuunnitelmat": "Lokala läroplaner", - "paikalliset-pakolliset-kurssit": "Lokala obligatoriska kurser", - "paikalliset-soveltavat-kurssit": "Lokala tillämpade kurser", - "paikalliset-syventavat-kurssit": "Lokala fördjupade kurser", - "paivita": "Uppdatera", - "pakollinen": "Obligatorisk", - "pakollinen-kurssi-kuvaus-header": "En allmän beskrivning av de obligatoriska kurserna", - "pakollinen-kurssi-kuvaus-placeholder": "En frivillig beskrivning av de obligatoriska kurserna", - "pakolliset-kurssit": "Obligatoriska kurser", - "pakolliset-osaamistavoitteet": "Obligatoriska mål för kunnande", - "pakollisuus": "Obligatorisk", - "palata-ops-tyokaluun": "Gå tillbaka", - "palauta": "Återställ", - "peru": "Ångra", - "peru-omat-muutokset": "Ångra egna ändringar", - "perusopetus": "Grundläggande utbildning", - "perusopetus-arviointi": "Bedömning av lärande", - "perusopetus-ohjaus": "Handledning, differentiering och stöd", - "perusopetus-sisaltoalueet": "Innehållsområden", - "perusopetus-tavoitteet": "Läroämnets mål", - "perusopetus-tehtava": "Läroämnets uppdrag", - "perusopetus-tyotavat": "Lärmiljöer och arbetssätt", - "peruste": "Grunderna", - "peruste-ei-diaarinumeroa": "Föreskriftens diarienummer saknas", - "peruste-ei-ole-katseltavissa": "Det är inte möjligt att se grunderna", - "peruste-ei-sisaltoa": "Inget innehåll skapat för grunderna ännu.", - "peruste-ei-voimassaolon-alkamisaikaa": "För grunderna har inget startdatum för giltigheten uppgetts", - "peruste-koulutukset": "Utbildningskoder", - "peruste-lukio-ei-aihekokonaisuuksia": "Det finns inte temaområden i grunderna", - "peruste-lukio-ei-opetuksen-yleisia-tavoitteita": "I grunderna finns inte allmänna mål för undervisningen.", - "peruste-lukio-ei-oppiaineita": "I grunderna finns inte ett enda läroämne", - "peruste-lukio-kooodi-puuttuu": "Koden saknas", - "peruste-lukio-liittamaton-kurssi": "Grunderna innehåller en kurs som inte bifogats", - "peruste-lukio-oppiaineessa-ei-kursseja": "Grunderna innehåller ett läroämne eller en lärokurs, som inte har kurser", - "peruste-lukio-oppiaineessa-ei-oppimaaria": "I läroämnet finns ingen lärokurs", - "peruste-lukio-sama-koodi": "Samma kod har använts flera gånger", - "peruste-validointi-koulutus-nimi": "Namnen på utbildningarna i grunderna har inte lokaliserats", - "peruste-validointi-kuvaus": "Beskrivningen av grunderna har inte lokaliserats", - "peruste-validointi-laajaalainen-osaaminen-kuvaus": "Alla beskrivningar av mångsidiga kompetenser har inte lokaliserats", - "peruste-validointi-laajaalainen-osaaminen-nimi": "Alla namn på mångsidiga kompetenser har inte lokaliserats", - "peruste-validointi-nimi": "Grundernas namn har inte lokaliserats", - "peruste-validointi-oppiaine-kohdealue": "Alla målområden för läroämnena har inte lokaliserats", - "peruste-validointi-oppiaine-nimi": "Alla läroämnens namn har inte lokaliserats", - "peruste-validointi-oppiaine-sisalto": "Alla läroämnens innehåll har inte lokaliserats", - "peruste-validointi-oppiaine-sisaltoalue": "Alla läroämnens innehållsområden har inte lokaliserats", - "peruste-validointi-oppiaine-vlk-sisalto": "Innehållet i årskurshelheterna har inte lokaliserats i alla läroämnen", - "peruste-validointi-oppiaine-vlk-tavoite-tavoite-teksti": "Alla mål har inte lokaliserats", - "peruste-validointi-tekstikappale-nimi": "Namnen på grundernas alla textstycken har inte lokaliserats", - "peruste-validointi-tekstikappale-teksti": "Innehållet i grundernas alla textstycken har inte lokaliserats", - "peruste-validointi-tutkinnonosa-ammattitaidon-osoittamistavat": "Sätten att påvisa yrkesskicklighet i grundernas examensdelar har inte lokaliserats", - "peruste-validointi-tutkinnonosa-ammattitaitovaatimukset": "Alla krav på yrkesskicklighet i grundernas examensdelar har inte lokaliserats", - "peruste-validointi-tutkinnonosa-kuvaus": "Alla beskrivningar av examensdelarna har inte lokaliserats", - "peruste-validointi-tutkinnonosa-nimi": "Alla examensdelars namn har inte lokaliserats", - "peruste-validointi-tutkinnonosa-tavoitteet": "Alla examensdelars mål har inte lokaliserats", - "peruste-validointi-vlk-lo": "Alla beskrivningar av mångsidiga kompetenser i årskurshelheterna har inte lokaliserats", - "peruste-validointi-vlk-nimi": "Namnen på alla årskurshelheter har inte lokaliserats", - "peruste-validointi-vlk-sisalto": "Innehållet i alla årskurshelheter har inte lokaliserats", - "peruste-validointi-vlk-tehtava-otsikko": "Rubrikerna för uppdragen har inte lokaliserats i alla årskurshelheter", - "peruste-validointi-vlk-tehtava-teksti": "Innehållstexterna har inte lokaliserats i alla årskurshelheters uppdrag", - "perusteella-ei-viela-tutkinnonosia": "Grunderna har inte ännu några examensdelar", - "perusteen-esikatselu": "Förhandsgranskning av grunderna", - "perusteen-kielet": "Grundernas språk", - "perusteen-koodi": "Examenskod", - "perusteen-nimea-ei-ole-kaikilla-kielilla": "För grunderna har ej definierats namn på alla språk.", - "perusteen-nimi": "Namn på grunderna", - "perusteen-sisalto": "Innehållet i grunderna", - "perusteen-termisto": "Begrepp", - "perusteen-termisto-ohje": "I textstycket kan man hänvisa och visa förklaringen till begreppet. Begreppen är läroplansgrundsspecifika.", - "perusteen-tiedot": "Uppgifter om grunderna", - "perusteen-tiivistelma": "Sammandrag av grunderna", - "perusteiden-sisalto": "Innehållet i grunderna", - "perustepohja": "Botten", - "perusteprojekti": "Projekt som gäller grunder", - "perusteprojekti-koulutusala-placeholder": "", - "perusteprojekti-koulutustyyppi-placeholder": "", - "perusteprojekti-nimi-placeholder": "", - "perusteprojekti-perustenimi-placeholder": "<[Anna perusteen nimi]>", - "perusteprojekti-tila-aseta": "Ange status för projektet som gäller grunderna", - "perusteprojektin-pohjaksi-otetaan-peruste": "Som underlag för projektet tas grunderna", - "perusteprojektit": "Projekt som gäller grunder", - "perusteprojektit-otsikko": "Egna projekt som gäller grunder", - "perustetyoryhman-tietojen-hakeminen-epaonnistui": "Det gick inte att söka uppgifter om arbetsgruppen som arbetar med grunderna.", - "perustiedot": "Basuppgifter", - "perustutkinto": "Yrkesinriktad grundexamen", - "peruuta": "Ångra", - "piilota": "Dölj", - "piilota-aliviestit": "Dölj svaren", - "piilota-kuvaukset": "Dölj beskrivningarna", - "piilota-osaamiskokonaisuuden-kuvaus": "Dölj den allmänna beskrivningen av kompetenshelheten", - "piilota-perusteen-teksti": "Dölj grundernas text", - "piilota-ryhman-kuvaus": "Dölj gruppens beskrivning", - "piilota-virheet": "Dölj felen", - "pohja": "Botten", - "pohjakoulutusvaatimukset": "Krav på grundutbildning", - "poista": "Radera", - "poista-kohdealue": "Radera", - "poista-korostus": "Radera markeringen", - "poista-koulutus": "[Poista koulutus]", - "poista-oppiaine": "Radera läroämnet", - "poista-oppimaara": "Radera lärokursen", - "poista-osa-alue": "Radera delområdet", - "poista-osaamiskokonaisuus": "Radera kompetenshelheten", - "poista-osio": "Radera delen", - "poista-projektista": "Radera från projektet", - "poista-suosikeista": "Radera från favoriterna", - "poista-tekstikappale-otsikko": "Radera textstycket", - "poista-tekstikappale-teksti": "Textstycket \"{{nimi}}\" raderas. Är du säker?", - "poista-tutkinnonosa": "Radera examensdelen", - "poista-tyoryhma-teksti": "Arbetsgruppen \"{{nimi}}\" raderas. Är du säker?", - "poista-vuosiluokkakokonaisuus": "Radera årskurshelheten", - "poistetaanko-aihekokonaisuus": "Ska det valda temaområdet raderas?", - "poistetaanko-kommentti": "Ska kommentaren raderas?", - "poistetaanko-koulutus": "Ska utbildningskoden raderas?", - "poistetaanko-kurssi": "Är du säker på att du vill ta bort kursen?", - "poistetaanko-oppiaine": "Ska läroämnet raderas?", - "poistetaanko-oppiaineen-osio": "Ska delen raderas? Innehållet i alla delarna raderas.", - "poistetaanko-oppimaara": "Ska lärokursen raderas?", - "poistetaanko-osaamiskokonaisuus": "Ska kompetenshelheten raderas?", - "poistetaanko-osio": "Ska delen raderas?", - "poistetaanko-ryhma": "Ska gruppen raderas?", - "poistetaanko-termi": "Ska begreppet raderas?", - "poistetaanko-tiedote": "Ska meddelandet raderas?", - "poistetaanko-tutkinnonosa": "Ska examensdelen raderas?", - "poistetaanko-tyoryhma": "Ska arbetsgruppen raderas?", - "poistetaanko-vuosiluokkakokonaisuus": "Ska årskurshelheten raderas?", - "poisto-onnistui": "Raderingen lyckades", - "poistu": "Lämna", - "poistu-sivulta": "Lämna sidan", - "projekti-header-koulutusala": "Utbildningsområde", - "projekti-header-koulutustyyppi": "Utbildnings-/examenstyp", - "projekti-header-paatosPvm": "Datum för tillsättande av arbetsgruppen", - "projekti-header-peruste": "[Peruste]", - "projekti-peruste": "Uppgifter om grunderna", - "projekti-perustiedot": "Basuppgifter", - "projekti-projektiryhma": "Arbetsgrupp som arbetar med grunder", - "projekti-projektiryhmä": "[Projektiryhmä]", - "projekti-toimikausi": "Verksamhetsperiod", - "projektin-nimi-label": "Projektets namn", - "projektin-oid-label": "Arbetsgrupp som arbetar med grunder", - "projektin-ryhma": "Projektets arbetsgrupp", - "projektin-tiedot": "Projektets uppgifter", - "projektipäällikkö": "[Projektipäällikkö]", - "projektiryhma": "Projektgrupp", - "puhelin": "Tel.", - "päätöspvm-label": "Slutdatum", - "rajaa-koulutuksenosia": "Avgränsa utbildningsdelarna", - "rajaa-ryhmia": "Avgränsa grupper", - "rajaa-tila": "Avgränsa status:", - "rajaa-tuloksia": "Avgränsa...", - "rajaa-tutkinnonosia": "Avgränsa examensdelarna...", - "rajauksellasi-ei-löytynyt-vaihtoehtoa": "Avgränsningen gav inte resultat", - "rakenne-validointi-laajuus": "Den totala omfattningen av delarna når inte upp till den krävda omfattningen", - "rakenne-validointi-maara": "Antalet delar är mindre än gruppens maximum", - "rakenne-validointi-uniikit": "Gruppen innehåller samma examensdelar", - "rakennetta-ei-vielä-muodostettu": "Examens uppbyggnad har inte ännu skapats eller så är den tom. Skapa en ny uppbyggnad genom att redigera sidan.", - "rakenteen-validointi-virhe": "Valideringsfel i uppbyggnaden", - "rooli": "Roll", - "ru": "Ryska", - "ruotsi": "Svenska", - "ruudukko": "Rutfält", - "ryhman-osaamisalaa-ei-perusteella": "Gruppens kompetensområde har inte bestämts för grunderna", - "ryhmien-hakeminen-epaonnistui": "Sökningen av grupper misslyckades.", - "saadosperusta": "Rättslig grund", - "salli-lukio-peruste-esikatseltavissa": "Tillåt förhandsgranskning", - "se": "Samiska", - "selaa": "Bläddra…", - "selaa-perusteita": "Bläddra i grunderna", - "selaa-perustetta": "Bläddra i grunderna", - "selitys": "Förklaring", - "siirtyma-edellisesta": "Övergång från föregående skede", - "siirtyma-seuraavaan": "Övergång till följande skede", - "siirtymaAlkaa": "Övergångstiden börjar", - "siirtyman-kuvaus": "Avläggandet av examen som påbörjats enligt de här examensgrunderna kan slutföras under övergångstiden.", - "siirtyman-paattyminen": "Övergångstiden upphör", - "siirtymavaiheet": "Övergångsskeden", - "sijainti": "[Sijainti]", - "sisallon-kieli": "Innehållets språk", - "sisalto": "Innehåll", - "sisaltoalueen-nimi": "Innehållsområdets namn", - "sisaltoalueet": "Innehållsområden", - "sisaltoalueiden-kuvaus": "Beskrivning av innehållsområdena", - "sivunavigointi-avaa-menu": "Öppna navigeringsmenyn", - "sivunavigointi-sulje-menu": "Stäng navigeringsmenyn", - "sivupalkki-näytä-kaikki": "Visa alla", - "sivupalkki-piilota": "Visa mindre", - "solu": "Cell", - "soveltava": "Tillämpad", - "soveltava-kurssi-kuvaus-header": "En allmän beskrivning av de nationella tillämpade kurserna", - "soveltava-kurssi-kuvaus-placeholder": "En beskrivning (frivilligt) av de nationella tillämpade kurserna ", - "soveltavat-kurssit": "Tillämpade kurser", - "sulje": "Stäng", - "sulje-kaikki": "Stäng allt", - "suodattimet": "[Suodattimet]", - "suomi": "Finska", - "suorittaneen-osaaminen": "Kunnande hos den som har avlagt examen", - "suosikin-nimi": "Favoritens namn", - "suosikit-otsikko": "Favoriter", - "suosikki": "Lägg till favoriter", - "sv": "Svenska", - "syventava": "Fördjupad", - "syventava-kurssi-kuvaus-header": "En allmän beskrivning av de nationella fördjupade kurserna", - "syventava-kurssi-kuvaus-placeholder": "En beskrivning (frivilligt) av de nationella fördjupade kurserna", - "syventavat-kurssit": "Fördjupade kurser", - "tahdella-pakolliset": "Alla fält markerade med stjärna (*) är obligatoriska", - "takaisin": "Tillbaka", - "takaisin-hakuun": "Tillbaka till sökningen", - "takaisin-laadintaan": "Tillbaka till uppgörandet", - "takaisin-paanakymaan": "Projektets huvudvy", - "takaisin-tiedotteiden-hallintaan": "Tillbaka till hantering av meddelanden", - "takaisin-ylos": "Tillbaka upp", - "tallenna": "Spara", - "tallenna-haku": "Spara sökningen", - "tallenna-muutokset": "Spara ändringarna", - "tallenna-nappi": "[Tallenna]", - "tallenna-tyoryhma": "Spara arbetsgruppen", - "tallennettiin-onnistuneesti": "sparandet lyckades", - "tallennettu": "Sparad", - "tallennus-onnistui": "Sparandet lyckades", - "tallentamattomia-muutoksia": "Du har gjort ändringar som inte har sparats. Om du går bort från sidan förlorar du ändringarna.", - "tallentaminen-epaonnistui": "Kunde inte sparas", - "tarkastele-esitysta": "Granska i visningsvy", - "tarkastele-versiota": "Granska versionen", - "tarkennettu-haku": "Avancerad sökning", - "tavoitteen-kuvaus-placeholder": "Lägg till en beskrivning av målet", - "tavoitteet": "Mål", - "tavoitteet-ja-keskeiset-sisallot": "Mål och centralt innehåll", - "tavoitteet-ja-sisallot": "Mål och innehåll", - "tavoitteiden-osaamiset": "Mångsidig kompetens", - "tavoitteista-johdetut-oppimisen-tavoitteet": "Mål för lärandet som härletts ur målen för undervisningen", - "tehtäväluokka-label": "Kategori", - "tekstikappale": "Textstycke", - "tekstikappale-kopioitu-onnistuneesti": "Textstycket har kopierats", - "tekstikappale-tallennettiin-onnistuneesti": "Textstycket har sparats", - "tekstikappaleet": "Textstycken", - "tekstikappaleiden-tuonti-onnistui": "Hämtningen av textstycken lyckades", - "tekstisisalto": "Innehåll", - "tekstisisällön-tuonti": "Hämtning av textinnehåll", - "termi": "Begrepp", - "termi-plugin-button-label": "Hänvisning till begreppet", - "termi-plugin-label": "Hänvisning till begreppet", - "termi-plugin-label-teksti": "Text till vilken hänvisningen fogas", - "termi-plugin-label-termi": "Begreppet som man hänvisar till", - "termi-plugin-lisaa-uusi": "Lägg till ett nytt begrepp", - "termi-plugin-menu-muokkaa": "Redigera hänvisningen till begreppet", - "termi-plugin-menu-poista": "Radera hänvisningen till begreppet", - "termi-plugin-select-placeholder": "Välj begrepp…", - "termi-plugin-tallennettu": "Begreppet sparades. Du kan redigera det i vyn Begrepp.", - "termi-plugin-title": "Lägg till hänvisning till begreppet eller redigera hänvisningen", - "termi-plugin-virhe-teksti-tyhja": "Den text till vilken hänvisningen fogas kan inte vara tom.", - "termi-plugin-virhe-viite-tyhja": "Välj begrepp till vilket du vill hänvisa.", - "termia-ei-loytynyt": "Begreppet som du hänvisar till hittades inte", - "termin-selitys": "Förklaring till begreppet", - "termin-selitys-placeholder": "Skriv en förklaring till begreppet", - "tiedosto": "Dokument", - "tiedot": "Uppgifter", - "tiedote": "Meddelande", - "tiedote-julkinen": "offentlig", - "tiedote-liittyy-perusteprojektiin": "Meddelandet hänför sig till ett projekt som gäller grunder", - "tiedote-otsikko-placeholder": "Skriv en rubrik för meddelandet", - "tiedote-teksti-placeholder": "Skriv meddelandets text", - "tiedoteteksti": "Meddelandets text", - "tiedotteet": "Meddelanden", - "tietosuojaseloste": "Dataskyddsbeskrivning", - "tiivistelma": "Sammandrag", - "tila": "Status", - "tila-julkaistu": "Publicerad", - "tila-kommentointi": "Kommentering", - "tila-laadinta": "Under arbete", - "tila-poistettu": "Arkiverad", - "tila-valmis": "Färdig", - "tila-viimeistely": "Finslipning", - "tilakuvaus-kaannos": "Beskrivning till status Översättning", - "tilakuvaus-kommentointi": "Grunderna anges vara i status Kommentering när de är utanför tjänsten på kommenterings- eller utlåtanderunda. Grunderna kan inte redigeras när de är i denna status. När kommenterings- eller utlåtandefasen är över återförs grunderna till status Under arbete för redigering.", - "tilakuvaus-laadinta": "Grunderna kan göras upp och redigeras.", - "tilakuvaus-poistettu": "Versionen av grunderna behövs inte längre vid uppgörandet av grunderna. En version som har överförts till status Raderad kan vid behov återföras till status Under arbete.", - "tilakuvaus-viimeistely": "Utkastet till grunderna är klart för finslipning vid Utbildningsstyrelsen. Statusen möjliggör språkkontroll och översättning av grunderna. Ett utkast till grunder som överförts till status Finslipning kan vid behov återföras till status Under arbete med de användarrättigheter som ägaren till processen för grunderna har.", - "tilan-vaihto-epaonnistui": "Ändringen av status misslyckades", - "tilanvaihdos-aiheuttaa": "Denna ändring av status orsakar följande:", - "tilanvaihdos-kommentointi-laadinta": "Beskrivning av övergången från status Kommentering till status Under arbete.", - "tilanvaihdos-kommentointi-poistettu": "Beskrivning av övergången från status Kommentering till status Raderad.", - "tilanvaihdos-laadinta-kommentointi": "Beskrivning av övergången från status Under arbete till status Kommentering.", - "tilanvaihdos-laadinta-poistettu": "Beskrivning av övergången från status Under arbete till status Arkiverad.", - "tilanvaihdos-laadinta-viimeistely": "Beskrivning av övergången från status Under arbete till status Finslipning.", - "tilanvaihdos-poistettu-laadinta": "Beskrivning av övergången från status Raderad till status Under arbete.", - "tilanvaihdos-valmis-julkaistu": "Beskrivning av övergången från status Färdig till status Publicerad.", - "tilanvaihdos-valmis-poistettu": "Beskrivning av övergången från status Färdig till status Raderad.", - "tilanvaihdos-valmis-viimeistely": "Beskrivning av övergången från status Färdig till status Finslipning.", - "tilanvaihdos-viimeistely-laadinta": "Beskrivning av övergången från status Finslipning till status Under arbete.", - "tilanvaihdos-viimeistely-poistettu": "Beskrivning av övergången från status Finslipning till status Raderad.", - "tilanvaihdos-viimeistely-valmis": "Beskrivning av övergången från status Finslipning till status Färdig.", - "tilanvaihtovirhe-header": "Ändring av projektets status lyckades inte", - "toimikausi-alku-label": "Verksamhetsperiodens start", - "toimikausi-loppu-label": "Verksamhetsperiodens slut", - "toiminto": "Funktion", - "tulossa-kohta": "På kommande", - "tulosta-sivu": "Skriv ut sidan", - "tuo": "Hämta", - "tuo-excel": "Hämta Excel", - "tuo-excel-tiedostosta": "Hämta från Excelfilen...", - "tuo-nykyisesta-perusteesta": "Hämta från de nuvarande grunderna", - "tuo-osaamistavoite": "Hämta mål för kunnandet", - "tuo-peruste": "Hämta grunder", - "tuo-perustepohja": "Hämta botten för grunderna", - "tuo-tutkinnonosa": "Hämta examensdel", - "tuo-tutkintokohtainen-osa": "Hämta textstycke", - "tuo-valitut": "Hämta valda", - "tutke2-osalta-puuttuu-osa-alue-koodi": "Det fattas kod för delområden av examensdelar", - "tutkinnon-koodi": "Examens kod", - "tutkinnon-muodostuminen": "Uppbyggnaden av examen", - "tutkinnon-muodostuminen-muokkaus": "Redigera examens uppbyggnad", - "tutkinnon-osa-ei-sisaltoa": "Examensdelen har inget innehåll.", - "tutkinnon-osa-ei-sisaltoa-ohje": "Lägg till delar genom att välja \"Lägg till del\".", - "tutkinnon-osa-haku-placeholder": "Avgränsa examensdelarna...", - "tutkinnon-osa-rakenteessa-ei-voi-poistaa": "Examensdelen kan inte raderas, eftersom den används i examens uppbyggnad. Radera hänvisningen från tabellen först.", - "tutkinnon-osa-rakenteesta-poistettu": "Examensdelen har raderats.", - "tutkinnon-osan-asetettua-koodia-ei-koodistossa": "Examensdelens kod finns inte bland koderna", - "tutkinnon-osan-koodi-kaytossa": "Den kod som valdes för examensdelen används redan", - "tutkinnon-osia-ei-loytynyt": "Examensdelar hittades inte.", - "tutkinnon-osien-koodit-kaytossa-muissa-tutkinnon-osissa": "Examensdelens koder används redan i andra delar av grunderna", - "tutkinnon-rakenne": "Examensstruktur", - "tutkinnon-rakenteen-kuvaus": "Beskrivning av examensstrukturen", - "tutkinnon-suorittaneen-ammatillinen-osaaminen": "I examen påvisat yrkeskunnande", - "tutkinnon-taso": "Examensnivå", - "tutkinnon-tyyppi": "Examens typ", - "tutkinnon-virallinen-asema": "Examens officiella ställning", - "tutkinnonOsa": "[Tutkinnon osa]", - "tutkinnonosa": "Examensdel", - "tutkinnonosa-ammattitaidonOsoittamistavat": "[Ammattitaidon osoittamistavat]", - "tutkinnonosa-ammattitaitovaatimukset": "Krav på yrkesskicklighet", - "tutkinnonosa-arviointi": "[Arviointi]", - "tutkinnonosa-jarjestysnumero": "Ordningsnummer", - "tutkinnonosa-koko": "Storlek", - "tutkinnonosa-kopioitu-onnistuneesti": "Examensdelen har kopierats", - "tutkinnonosa-laajuus": "Omfattning", - "tutkinnonosa-nimi": "Namn", - "tutkinnonosa-osaamisala": "[Osaamisala]", - "tutkinnonosa-save-fail": "Följande examensdelar kunde inte sparas:", - "tutkinnonosa-tavoitteet": "Mål", - "tutkinnonosa-tunnustaminen": "Erkännande", - "tutkinnonosat": "Examensdelar", - "tutkinnosta-paattava-viranomainen": "Namn och status på den nationella/regionala myndighet som fattar beslut om examen", - "tutkintokoodi": "Examenskod", - "tutkintonimike": "Examensbenämning", - "tutkintonimike-poistettu-onnistuneesti": "Examensbenämningen har raderats", - "tutkintonimikkeen-lisays-epaonnistui": "Examensbenämningen kunde inte läggas till", - "tutkintonimikkeen-lisays-onnistui": "Examensbenämningen har lagts till", - "tutkintonimikkeen-vaatimaa-tutkinnonosakoodia-ei-loytynyt-tutkinnon-osilta": "Den examensdelskod som examensbenämningen kräver hittades inte i någon examensdel", - "tutkintonimikkeet": "Examensbenämningar", - "tutkintotodistuksen-antaja": "Namn och status på den som utfärdat slutbetyget", - "tutkintotodistuksen-saaminen": "Officiellt erkända sätt för att erhålla slutbetyget", - "tyhja-placeholder-aihekokonaisuudet": "Temaområden har inte lagts till.", - "tyhja-placeholder-kurssit": "Kurser har inte lagts till", - "tyhja-placeholder-opetuksen-yleiset-tavoitteet": "De allmänna målen för undervisningen har inte lagts till. ", - "tyhja-placeholder-oppiaineet": "Läroämnen har inte lagts till.", - "tyhja-placeholder-oppiaineet-oppimaarat": "Lärokurser har inte lagts till.", - "tyhja-placeholder-osaaminen": "Kompetenshelheter har inte lagts till.", - "tyhja-placeholder-vuosiluokat": "Årskurshelheter har inte lagts till.", - "tyhjenna": "Töm", - "tyhjenna-rajaus-tooltip": "Töm avgränsningen (Esc)", - "tyhjenna-valinnat": "Gå tillbaka till början", - "tyoryhma": "Arbetsgrupp", - "tyoryhman-nimi": "Arbetsgruppens namn", - "tyotehtavat-joissa-voi-toimia": "Den som har avlagt examen kan arbeta med följande uppgifter", - "tyyppi": "Typ", - "tyyppi-tutkintokohtainen": "Examensspecifik", - "tyyppi-yhteinen": "Gemensam", - "ui-kieli": "Användargränssnittets språk", - "useita-oppimaaria": "Flera lärokurser", - "uusi-oppiaine": "Nytt läroämne", - "uusi-oppimaara": "Ny lärokurs", - "uusi-osaaminen": "Mångsidig kompetens - ny kompetenshelhet", - "uusi-perustepohja": "Ny botten", - "uusi-perusteprojekti": "Skapa ett nytt projekt som gäller grunder", - "uusi-projekti": "Nytt projekt", - "uusi-projekti-otsikko": "Nytt projekt som gäller grunder", - "uusi-termi": "Lägg till ett nytt begrepp", - "uusi-tiedote": "Lägg till ett meddelande", - "uusi-tutkinnon-osa": "", - "uusi-tutkinnonosa": "", - "uusi-vuosiluokkakokonaisuus": "Ny årskurshelhet", - "vahvista": "Bekräfta", - "vahvista-liikkuminen": "Bekräfta att du vill förflytta dig", - "vahvista-palautus": "Bekräfta återställande", - "vahvista-palautus-sisältö": "Vill du återställa namnet på projektet {{ nimi }}? Projektets innehåll återställs och dess status blir: {{ tila }}", - "vahvista-poisto": "Bekräfta raderingen", - "vahvista-version-palauttaminen": "Bekräfta att du vill återställa versionen", - "vahvista-version-palauttaminen-teksti": "Vill du ta denna version ({{versio}}) i bruk? Av versionen skapas en kopia och en ny version skapas av denna.", - "vain-käyttämättömät": "Visa dem som inte används", - "valinnaiset-osaamistavoitteet": "Valbara mål för kunnande", - "valitse": "Välj", - "valitse-diaarinumero": "Välj diarienummer", - "valitse-jasenet": "Välj medlemmar", - "valitse-kaikki": "Välj allt", - "valitse-kieli": "Välj språk", - "valitse-koulutustyyppi": "Välj utbildnings-/examenstyp", - "valitse-nimi": "Välj namn", - "valitse-peruste": "[Valitse peruste]", - "valitse-suodatin": "Valitse suodatin", - "valitse-tehtäväluokka": "Välj kategori", - "valitse-tyoryhmat": "Välj arbetsgrupper", - "valmaarviointi-arviointi-kuvaus": "Beskrivning", - "valmaarviointi-uusi-arviointi-placeholder": "Kriterium", - "valmaarviointi-uusi-kohde": "Föremål ", - "valmaarviointi-uusi-kriteeri": "Nytt kriterium", - "valmaarviointi-uusi-tavoite-placeholder": "Mål", - "valmis": "Färdig", - "valtakunalliset-syventavat-kurssit": "Nationella fördjupade kurser", - "valtakunnallinen": "Nationell", - "valtakunnalliset-pakolliset-kurssit": "Obligatoriska kurser", - "valtakunnalliset-soveltavat-kurssit": "Nationella fördjupade kurser", - "vapaa-tekstisisalto": "Fritt textinnehåll", - "varmista-osion-poisto-otsikko": "Bekräfta att du vill radera delen", - "varmista-osion-poisto-teksti": "Vill du radera delen? Du förlorar allt innehåll i delen.", - "varmista-poisto": "Bekräfta raderingen", - "varmista-poisto-suosikki-teksti": "Är du säker på att du vill radera favoriten?", - "vastaa": "Svara", - "versio": "Version", - "versiohistoria": "Versionshistorik", - "vieras": "Främmande", - "vierastutkinnonosa": "Främmande examensdel", - "vierastutkinto-ei-muita-ryhmia": "En främmande examensgrupp kan inte innehålla andra grupper.", - "vierastutkinto-pitaa-olla-vierastutkintoryhmassa": "En främmande examensdel måste finnas i en främmande examensgrupp.", - "viesti": "Meddelande", - "viesti-poistettu": "Meddelandet har raderats", - "virhe": "Fel", - "virhe-muu": "Fel", - "virhe-perusteenosaa-ei-löytynyt": "Den examensdel som du sökte hittades inte", - "virhe-sivua-ei-löytynyt": "Sidan hittades inte", - "virhe-tekstikappaletta-ei-löytynyt": "Det textstycke som du sökte hittades inte", - "virhe-tiedosto-epäonnistui": "Det gick inte att öppna filen", - "virhe-tilan-vaihtamisessa": "Fel vid ändring av status", - "virhe-tutkinnonosaa-ei-löytynyt": "Den examensdel som du sökte hittades inte", - "virhe.jotain-meni-pieleen": "Oj då! Någonting gick fel.", - "voimaantulo-pvm": "Träder i kraft", - "voimassaolo": "Giltighet", - "voimassaolo-paattymispvm": "Giltigheten upphör", - "voimassaoloAlkaa": "Giltigheten börjar", - "voimassaoloLoppuu": "Giltigheten upphör", - "vuosiluokat": "Årskurser", - "vuosiluokka": "Årskurs", - "vuosiluokka_1": "Årskurs 1", - "vuosiluokka_2": "Årskurs 2", - "vuosiluokka_3": "Årskurs 3", - "vuosiluokka_4": "Årskurs 4", - "vuosiluokka_5": "Årskurs 5", - "vuosiluokka_6": "Årskurs 6", - "vuosiluokka_7": "Årskurs 7", - "vuosiluokka_8": "Årskurs 8", - "vuosiluokka_9": "Årskurs 9", - "vuosiluokkakokonaisuuden-osaamisalueet": "Kompetensområden inom årskurshelheten", - "vuosiluokkakokonaisuuden-tehtava": "Årskurshelhetens uppdrag", - "vuosiluokkakokonaisuudet": "Årskurshelheterna", - "vuosiluokkakokonaisuus": "Årskurshelhet", - "yhteiset-osuudet": "Gemensamma delar", - "yhteistyotaho-label": "Avtalspart", - "yhteys-palvelimeen-poikki": "Förbindelsen till tjänsten har brutits.", - "yksi-oppimaara": "En lärokurs", - "yksikko": "Enhet", - "yleiset-osuudet": "Allmänna delar", - "yleiset-tavoitteet": "Allmänna mål", - "yleisettavoitteet-ei-otsikkoa": "De allmänna målen för undervisningen har inte ännu definierats ", - "yleisettavoitteet-kuvaus-placeholder": "En beskrivning av de allmänna målen", - "ylikirjoita-uusi-sisältö": "Fortsätt redigera", - "ylikirjoittaessasi-voit-palauttaa": "När du fortsätter kan du skriva över ändringar som andra har gjort. De blir kvar i ändringshistoriken och du kan återställa dem därifrån" -} diff --git a/eperusteet/eperusteet-app/yo/app/scripts/.gitignore b/eperusteet/eperusteet-app/yo/app/scripts/.gitignore deleted file mode 100644 index 086f4e283b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.js -*.map diff --git a/eperusteet/eperusteet-app/yo/app/scripts/api.test.ts b/eperusteet/eperusteet-app/yo/app/scripts/api.test.ts deleted file mode 100644 index 928a5e4d64..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/api.test.ts +++ /dev/null @@ -1,13 +0,0 @@ -import _ from "lodash"; -import { getComponent, inject, getOfType, testDirective, testModule, mockApp } from "app/testutils"; - -describe("Api", () => { - let Api: any; - - beforeEach(async () => { - mockApp(); - Api = await getComponent("Api"); - }); - - test("Can be injected", () => expect(Api).toBeTruthy()); -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/api.ts b/eperusteet/eperusteet-app/yo/app/scripts/api.ts deleted file mode 100644 index 5a3093bc80..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/api.ts +++ /dev/null @@ -1,26 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").factory("Api", (Restangular, Notifikaatiot, Kaanna) => { - return Restangular.withConfig(config => { - config.setBaseUrl("/eperusteet-service/api"); - config.addResponseInterceptor((data, operation, what, url, response, deferred) => { - if (response && response.status >= 400) { - if (response.status >= 500) { - // fataali(KaannaService.kaanna("jarjestelmavirhe-teksti", { - // virhekoodi: response.status - // }), () => { - // // TODO Ota käyttöön myöhemmin - // // $state.go("root.virhe"); - // }); - } else if (response.data && response.data.syy) { - let syy = response.data.syy; - Notifikaatiot.varoitus(_.isArray(syy) ? syy[0] : syy); - } else { - Notifikaatiot.varoitus(Kaanna.kaanna("odottamaton-virhe")); - } - } - return data; - }); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/app.ts b/eperusteet/eperusteet-app/yo/app/scripts/app.ts deleted file mode 100644 index 098551d62a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/app.ts +++ /dev/null @@ -1,426 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; -import moment from "moment"; - -if (process.env.NODE_ENV === "development") { - console.log("Running in development mode"); -} - -angular - .module("eperusteApp", [ - "ngSanitize", - "ui.router", - "ngResource", - "restangular", - "pascalprecht.translate", - "ui.bootstrap", - "angular-cache", - "ui.sortable", - "monospaced.elastic", - "ui.tree", - "ui.select", - "ngFileUpload", - "eGenericTree", - "eMathDisplay", - "LocalStorageModule", - "angular-loading-bar" - ]) - .constant("SERVICE_LOC", "/eperusteet-service/api") - .constant("ORGANISATION_SERVICE_LOC", "/lokalisointi/cxf/rest/v1/localisation") - .constant("LOKALISOINTI_SERVICE_LOC", "") - .constant("AUTHENTICATION_SERVICE_LOC", "/authentication-service/resources") - .constant("REQUEST_TIMEOUT", 10000) - .constant("SPINNER_WAIT", 100) - .constant("NOTIFICATION_DELAY_SUCCESS", 4000) - .constant("NOTIFICATION_DELAY_WARNING", 10000) - .constant("LUKITSIN_MINIMI", 5000) - .constant("LUKITSIN_MAKSIMI", 20000) - .constant("TEXT_HIERARCHY_MAX_DEPTH", 8) - .constant("SHOW_VERSION_FOOTER", true) - .constant("DEVELOPMENT", process.env.NODE_ENV === "development") - .config( - ( - $sceProvider, - $urlRouterProvider, - $translateProvider, - $urlMatcherFactoryProvider, - $locationProvider, - cfpLoadingBarProvider - ) => { - const preferred = "fi"; - - $sceProvider.enabled(true); - - $urlRouterProvider.when("", "/" + preferred); - $urlRouterProvider.when("/", "/" + preferred); - $urlRouterProvider.otherwise(($injector, $location) => { - $injector.get("virheService").setData({ path: $location.path() }); - $injector.get("$state").go("root.virhe"); - }); - - $urlMatcherFactoryProvider.caseInsensitive(true); - $urlMatcherFactoryProvider.strictMode(false); - - $translateProvider.useLoader("LokalisointiLoader"); - $translateProvider.preferredLanguage(preferred); - $translateProvider.useSanitizeValueStrategy("escaped"); - - $locationProvider.hashPrefix(""); - - cfpLoadingBarProvider.parentSelector = "#loading-bar-container"; - cfpLoadingBarProvider.includeSpinner = true; - cfpLoadingBarProvider.latencyThreshold = 100; - - moment.locale(preferred); - } - ) - .config($qProvider => { - $qProvider.errorOnUnhandledRejections(false); - }) - .config($rootScopeProvider => { - $rootScopeProvider.digestTtl(20); - }) - .config($httpProvider => { - $httpProvider.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; - $httpProvider.defaults.headers.common["Caller-Id"] = "1.2.246.562.10.00000000001.eperusteet"; - $httpProvider.defaults.xsrfHeaderName = "CSRF"; - $httpProvider.defaults.xsrfCookieName = "CSRF"; - - $httpProvider.interceptors.push([ - "UiKieli", - kieli => { - return { - request: config => { - if (kieli && kieli.kielikoodi) { - config.headers["Accept-Language"] = kieli.kielikoodi; - } - return config; - } - }; - } - ]); - - $httpProvider.interceptors.push([ - "$rootScope", - "$q", - "SpinnerService", - ($rootScope, $q, Spinner) => { - return { - request: request => { - Spinner.enable(); - return request; - }, - response: response => { - Spinner.disable(); - return response || $q.when(response); - }, - responseError: error => { - Spinner.disable(); - return $q.reject(error); - } - }; - } - ]); - }) - .config(($httpProvider: angular.IHttpProvider) => { - $httpProvider.interceptors.push([ - "$rootScope", - "$q", - ($rootScope: angular.IScope, $q: angular.IQService) => { - return { - response: response => { - const uudelleenohjausStatuskoodit = [401, 412, 500]; - const fail = _.indexOf(uudelleenohjausStatuskoodit, response.status) !== -1; - - if (fail) { - $rootScope.$emit("event:uudelleenohjattava", response.status); - } - return response || $q.when(response); - }, - responseError: err => { - return $q.reject(err); - } - }; - } - ]); - }) - .config(localStorageServiceProvider => { - localStorageServiceProvider - .setPrefix("eperusteApp") - .setStorageType("localStorage") - .setNotify(true, true); - }) - .run(() => { - _.mixin({ - arraySwap: function(array, a, b) { - if (_.isArray(array) && _.size(array) > a && _.size(array) > b) { - const temp = array[a]; - array[a] = array[b]; - array[b] = temp; - } - return array; - } - }); - _.mixin({ - zipBy: function(array, kfield, vfield) { - if (_.isArray(array) && kfield) { - if (vfield) { - return _.zipObject(_.map(array, kfield), _.map(array, vfield)); - } else { - return _.zipObject(_.map(array, kfield), array); - } - } else { - return {}; - } - } - }); - _.mixin({ - set: function(obj, field) { - return function(value) { - obj[field] = value; - }; - } - }); - _.mixin({ - setWithCallback: function(obj, field, cb) { - return function(value) { - cb = cb || angular.noop; - obj[field] = value; - cb(value); - }; - } - }); - _.mixin({ - flattenTree: function flattenTree(obj, extractChildren) { - if (!_.isArray(obj) && obj) { - obj = [obj]; - } - if (_.isEmpty(obj)) { - return []; - } - return _.union( - obj, - _(obj) - .map(function(o) { - return flattenTree(extractChildren(o), extractChildren); - }) - .flatten() - .value() - ); - } - }); - _.mixin({ - reducedIndexOf: function(obj, extractor, combinator) { - if (!_.isArray(obj) && obj) { - obj = [obj]; - } - let results = {}; - _.each(obj, function(o) { - const index = extractor(o); - if (results[index]) { - results[index] = combinator(results[index], o); - } else { - results[index] = o; - } - }); - return results; - } - }); - }) - .run(($rootScope: angular.IScope, $window: angular.IWindowService) => { - const f = _.debounce( - function() { - $rootScope.$broadcast("poll:mousemove"); - }, - 10000, - { - leading: true, - maxWait: 60000 - } - ); - - angular.element($window).on("mousemove", f); - }) - .run( - ( - $rootScope, - $uibModal, - $location, - $window, - $state, - $http, - uibPaginationConfig, - Editointikontrollit, - Varmistusdialogi, - Kaanna, - virheService, - $log - ) => { - uibPaginationConfig.firstText = ""; - uibPaginationConfig.previousText = ""; - uibPaginationConfig.nextText = ""; - uibPaginationConfig.lastText = ""; - uibPaginationConfig.maxSize = 5; - uibPaginationConfig.rotate = false; - - let onAvattuna = false; - - $rootScope.$on("event:uudelleenohjattava", (event, status) => { - if (onAvattuna) { - return; - } - onAvattuna = true; - - function getCasURL() { - const host = $location.host(); - const port = $location.port(); - const protocol = $location.protocol(); - const cas = "/cas/login"; - const redirectURL = encodeURIComponent($location.absUrl()); - let url = protocol + "://" + host; - - if (port !== 443 && port !== 80) { - url += ":" + port; - } - - url += cas + "?service=" + redirectURL; - return url; - } - - const casurl = getCasURL(); - - if (status === 401) { - $window.location.href = casurl; - return; - } - - const uudelleenohjausModaali = $uibModal.open({ - template: require("views/modals/uudelleenohjaus.html"), - controller: "UudelleenohjausModalCtrl", - resolve: { - status: function() { - return status; - }, - redirect: function() { - return casurl; - } - } - }); - - uudelleenohjausModaali.result - .then(angular.noop) - .catch(angular.noop) - .finally(function() { - onAvattuna = false; - switch (status) { - case 500: - $location.path("/"); - break; - case 412: - $window.location.href = casurl; - break; - } - }); - }); - - $rootScope.$on("$stateChangeStart", (event, toState, toParams, fromState, fromParams) => { - $rootScope.lastState = { - state: _.clone(fromState), - params: _.clone(fromParams) - }; - - // Todo: Why exclude some states? - if ( - Editointikontrollit.getEditMode() && - fromState.name !== "root.perusteprojekti.suoritustapa.tutkinnonosat" && - fromState.name !== "root.perusteprojekti.suoritustapa.koulutuksenosa" - ) { - event.preventDefault(); - - Varmistusdialogi.dialogi({ - successCb: data => { - Editointikontrollit.unregisterCallback(); - $state.go(data.toState, data.toParams); - }, - data: { - toState: toState, - toParams: toParams - }, - otsikko: "vahvista-liikkuminen", - teksti: "tallentamattomia-muutoksia", - lisaTeksti: "haluatko-jatkaa", - primaryBtn: "poistu-sivulta" - })(); - } else { - Editointikontrollit.unregisterCallback(); - } - }); - - $rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, fromParams, error) { - $log.error(error); - virheService.virhe({ state: toState.name }); - }); - - $rootScope.$on("$stateNotFound", function(event, toState, toParams, fromState, fromParams, error) { - $log.error(error); - virheService.virhe({ state: toState.to }); - }); - - // Jos käyttäjä editoi dokumenttia ja koittaa poistua palvelusta (reload, iltalehti...), - // niin varoitetaan, että hän menettää muutoksensa jos jatkaa. - $window.addEventListener("beforeunload", function(event) { - if (Editointikontrollit.getEditMode()) { - const confirmationMessage = Kaanna.kaanna("tallentamattomia-muutoksia"); - (event || window.event).returnValue = confirmationMessage; - return confirmationMessage; - } - }); - } - ) - .run(($rootScope, DEVELOPMENT) => { - if (DEVELOPMENT) { - $rootScope.$on("$stateChangeSuccess", (event, state, params) => { - console.info( - "%c» " + state.name + " «", - "color: #ffb05b; background: #333; font-weight: bold", - "" + state.url + " ", - params - ); - }); - $rootScope.$on("$stateChangeStart", (event, state, params) => { - console.info("Starting state change to", state); - }); - $rootScope.$on("$stateChangeError", (event, a, b, c, d, e) => { - console.info("Failed state change", e, a, b, c, d); - }); - } - }); - -import yleinenData from "./services/yleinenData"; -import { taiteenalaCtrl } from "./controllers/perusteprojekti/taiteenala"; -import { LangValidator } from "./directives/langvalidator"; -import { nakyvyyslinkki, nakyvyyslinkkiService } from "./directives/nakyvyyslinkki"; - -angular - .module("eperusteApp") - .service("YleinenData", yleinenData) - .controller("taiteenalaCtrl", taiteenalaCtrl) - .service("nakyvyyslinkkiService", nakyvyyslinkkiService) - .directive("nakyvyyslinkki", nakyvyyslinkki) - .directive("langValidator", LangValidator); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/components/tavoitteet/tavoitteet.ts b/eperusteet/eperusteet-app/yo/app/scripts/components/tavoitteet/tavoitteet.ts deleted file mode 100644 index 7693679366..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/components/tavoitteet/tavoitteet.ts +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -interface LokalisoituTeksti { - kieli: string; - teksti: string; -} - -interface TekstiPalanen { - id: number; - teksti: LokalisoituTeksti; - tunniste: any; -} - -interface Kohdealue { - nimi: TekstiPalanen; - kuvaus: TekstiPalanen; - oppiaineet: Array; - opetuksenTavoitteet: Array; -} - -import * as angular from "angular"; -import * as _ from "lodash"; - -angular.module("eperusteApp").directive("aipeTavoitteet", () => { - return { - template: require("scripts/components/tavoitteet/view.pug"), - restrict: "E", - scope: { - model: "=", - laajaalaiset: "=", - vaihe: "=", - editing: "=" - }, - controller: function($scope, Kaanna) { - _.each($scope.model, tavoite => { - tavoite.$accordionOpen = true; - - // Alustetaan valitut kohdealueet - if (tavoite.kohdealueet && tavoite.kohdealueet.length > 0) { - tavoite.$valittuKohdealue = _.find( - $scope.vaihe.opetuksenKohdealueet, - ka => ka.id.toString() === tavoite.kohdealueet[0] - ); - } - - // Alustetaan laaja-alaiset - tavoite.$osaaminen = _.map($scope.laajaalaiset, generateArraySetter(tavoite.laajattavoitteet)); - }); - - function generateArraySetter(findFrom, manipulator = _.noop) { - return item => { - const found = _.find(findFrom, (findItem: string) => _.parseInt(findItem) === item.id); - item = _.clone(item); - item.$hidden = !found; - item.teksti = item.kuvaus; - return manipulator(item) || item; - }; - } - - $scope.toggleAll = () => { - _.each($scope.model, tavoite => { - tavoite.$accordionOpen = !tavoite.$accordionOpen; - }); - }; - - $scope.treeOptions = {}; - - $scope.lisaaTavoite = () => { - $scope.model.push({ - $accordionOpen: true, - $editing: false, - sisaltoalueet: [], - laajattavoitteet: [], - kohdealueet: [], - arvioinninkohteet: [], - $osaaminen: _.map($scope.laajaalaiset, generateArraySetter([])) - }); - }; - - $scope.poistaTavoite = tavoite => { - _.remove($scope.model, tavoite); - }; - - $scope.asetaKohdealue = tavoite => { - const valittu = tavoite.$valittuKohdealue ? [tavoite.$valittuKohdealue] : []; - tavoite.kohdealueet = _(valittu) - .map(item => item.id) - .value(); - }; - - $scope.kaannaKohdealue = ka => { - return Kaanna.kaanna(ka.nimi); - }; - - $scope.poistaValittuKohdealue = tavoite => { - tavoite.$valittuKohdealue = undefined; - }; - - $scope.addArvioinninKohde = tavoite => { - tavoite.arvioinninkohteet.push({}); - }; - - $scope.removeArvioinninKohde = (tavoite, index) => { - tavoite.arvioinninkohteet.splice(index, 1); - }; - - $scope.arvosanat = [5,6,7,8,9,10].map(numero => { - return { - numero, - teksti: Kaanna.kaanna("osaamisen-kuvaus-arvosanalle_"+numero) - } - }); - - $scope.getArvioinninKohteenTeksti = (tavoite) => { - return tavoite.arvioinninKuvaus; - } - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/components/tavoitteet/view.pug b/eperusteet/eperusteet-app/yo/app/scripts/components/tavoitteet/view.pug deleted file mode 100644 index ff6bbe35eb..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/components/tavoitteet/view.pug +++ /dev/null @@ -1,128 +0,0 @@ -mixin tavoite-painikkeet - .muokkausnappi(ng-if="editing") - button.btn.btn-default.icon-only(ng-click="poistaTavoite(tavoite)", icon-role="remove", title="{{'poista' | kaanna}}") - -mixin tavoite-handle - .sorter-handle.pull-left(ui-tree-handle) - .icon(icon-role="drag") - -mixin tavoite-naytto - h4.tavoite-otsikko.action-link(kaanna="tavoite.tavoite || 'nimeton-tavoite'", ng-click="tavoite.$accordionOpen = !tavoite.$accordionOpen") - - .div(uib-collapse="!tavoite.$accordionOpen") - h4(kaanna="'tavoitteista-johdetut-oppimisen-tavoitteet'") - p(ng-if="tavoite.tavoitteistaJohdetutOppimisenTavoitteet", ng-bind-html='tavoite.tavoitteistaJohdetutOppimisenTavoitteet | kaanna | unsafe') - p(ng-if="!tavoite.tavoitteistaJohdetutOppimisenTavoitteet", kaanna="'ei-asetettu'") - - h4(kaanna="'kohdealueet'") - p(kaanna="tavoite.$valittuKohdealue.nimi || 'ei-asetettu'") - - h4(kaanna="'laaja-alainen-osaaminen'") - div(tag-cloud="tavoite.$osaaminen", openable="true", edit-mode="editing", add-label="lisaa-laaja-alainen-osaaminen") - - h4(kaanna="'arvioinnin-kohde'") - p(kaanna="getArvioinninKohteenTeksti(tavoite) || 'ei-asetettu'") - - h4(kaanna="tavoite.arvioinninOtsikko || 'arviointi'") - +arviointi - +vapaa-teksti - - .div(ng-hide="tavoite.$accordionOpen") - .tavoite-collapser.action-link(ng-click="tavoite.$accordionOpen = true") … - -mixin arviointi - table.table.table-default.table-bordered.perusopetuksen-arviointi - thead - tr - th(ng-bind="'osaamisen-kuvaus' | kaanna") - th(ng-bind="'arvion-kuvaus' | kaanna") - thead - tbody - tr(ng-repeat="arvioinninKohde in tavoite.arvioinninkohteet | orderBy:(!editing ? 'arvosana':'')") - td - span(ng-if="!editing && arvioinninKohde.arvosana" kaanna="'osaamisen-kuvaus-arvosanalle_'+arvioinninKohde.arvosana") - select.form-control(ng-if="editing", ng-model='arvioinninKohde.arvosana') - option(ng-value="") - option(ng-repeat="arvosana in arvosanat" ng-value="{{arvosana.numero}}") {{arvosana.teksti}} - td - span(ng-if="!editing", kaanna="arvioinninKohde.osaamisenKuvaus") - textarea.form-control.msd-elastic(ng-model='arvioinninKohde.osaamisenKuvaus', slocalized , ng-if="editing") - td(ng-if="editing") - a(icon-role="remove", ng-click="removeArvioinninKohde(tavoite, $index)", title="{{'poista' | kaanna}}", style="cursor: pointer;") - - button.btn.btn-default(icon-role="add", kaanna="'arviointi-uusi-kriteeri'", ng-click="addArvioinninKohde(tavoite)", ng-if="editing") - -mixin tavoite-muokkaus - h4(kaanna="'nimi'") - input.form-control(ng-model="tavoite.tavoite", slocalized, placeholder="{{'tavoitteen-nimi-placeholder' | kaanna}}") - - h4(kaanna="'tavoitteista-johdetut-oppimisen-tavoitteet'") - div(ckeditor slocalized ng-model='tavoite.tavoitteistaJohdetutOppimisenTavoitteet') - - h4(kaanna="'kohdealueet'") - .input-group - select.form-control(ng-model="tavoite.$valittuKohdealue", - ng-change="asetaKohdealue(tavoite)", - ng-options="kaannaKohdealue(ka) for ka in vaihe.opetuksenKohdealueet") - span.input-group-btn - button.btn.btn-default(ng-click='poistaValittuKohdealue(tavoite)', icon-role='remove', kaanna="'poista'", type='button') - - h4(kaanna="'laaja-alainen-osaaminen'") - div(tag-cloud="tavoite.$osaaminen", openable="true", edit-mode="editing", add-label="lisaa-laaja-alainen-osaaminen") - - h4(kaanna="'arvioinnin-kohde'") - input.form-control(ng-model="tavoite.arvioinninKuvaus", slocalized, placeholder="{{'arvioinnin-kohde' | kaanna}}") - - h4(kaanna="'arviointi'") - input.form-control(ng-model="tavoite.arvioinninOtsikko", slocalized, placeholder="{{'arvioinnin-otsikko' | kaanna}}") - br - +arviointi - +vapaa-teksti - -mixin vapaa-teksti - h4(ng-if="editing || tavoite.vapaaTeksti", kaanna="'vapaa-tekstisisalto'") - input.form-control(ng-if="editing", ng-model="tavoite.vapaaTeksti", slocalized, placeholder="{{'vapaa-tekstisisalto' | kaanna}}") - p(ng-if="!editing && tavoite.vapaaTeksti", kaanna="tavoite.vapaaTeksti") - -mixin tavoite-sisalto - .tavoite-sisalto - .div(ng-if="!editing") - +tavoite-naytto - - .div(ng-if="editing") - +tavoite-muokkaus - -mixin tavoite - +tavoite-painikkeet - - div(ng-if="editing") - +tavoite-handle - - +tavoite-sisalto - -mixin tavoitteet - span.toggler(ng-show="model.length") - a.action-link(kaanna="'avaa-sulje-kaikki'", ng-click="toggleAll()") - - // Näyttö - div(ng-if="!editing") - .panel.panel-default.panel-small - .panel-body - .panel-group - .panel.panel-default(ng-repeat="tavoite in model") - .panel-body - +tavoite - - // Muokkaus - div(ng-if="editing") - .panel.panel-default.panel-small - .panel-body(ui-tree="treeOptions") - .panel-group(ng-model="model", ui-tree-nodes="") - .panel.panel-default(ng-repeat="tavoite in model" ui-tree-node="") - .panel-body - +tavoite - - button.btn.btn-default(ng-click="lisaaTavoite()", icon-role="add", kaanna="'lisaa-opetuksen-tavoite'") - -div - +tavoitteet diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/admin.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/admin.ts deleted file mode 100644 index 5d6d889ad3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/admin.ts +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -enum ProjektiTila { - POISTETTU = "poistettu", - LAADINTA = "laadinta", - KOMMENTOINTI = "kommentointi", - VIIMEISTELY = "viimeistely", - VALMIS = "valmis", - JULKAISTU = "julkaistu" -} - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .config($stateProvider => { - $stateProvider - .state("root.admin", { - url: "/admin", - template: require("views/admin/base.html"), - controller: "AdminBaseController" - }) - .state("root.admin.perusteprojektit", { - url: "/perusteprojektit", - template: require("views/admin/perusteprojektit.html"), - controller: "AdminPerusteprojektitController" - }) - .state("root.admin.tiedotteet", { - url: "/tiedotteet", - template: require("views/admin/tiedotteet.pug"), - controller: "TiedotteidenHallintaController" - }) - .state("root.admin.geneerinenarviointi", { - url: "/geneerinenarviointi", - template: require("views/admin/geneerinenarviointi.pug"), - controller: "GeneerinenArviointiController", - resolve: { - geneeriset($stateParams, Api) { - return Api.all("geneerinenarviointi").getList(); - }, - arviointiasteikot($stateParams, Arviointiasteikot) { - return Arviointiasteikot.list({}).$promise; - } - } - }) - .state("root.admin.oppaat", { - url: "/oppaat", - template: require("views/admin/oppaat.pug"), - controller: "OpasHallintaController" - }) - .state("root.admin.arviointiasteikot", { - url: "/arviointiasteikot", - template: require("views/admin/arviointiasteikot.pug"), - controller: "ArviointiasteikotHallintaController", - resolve: { - arviointiasteikot: function($stateParams, Arviointiasteikot) { - return Arviointiasteikot.list({}).$promise; - } - } - }) - .state("root.admin.yllapito", { - url: "/yllapito", - template: require("views/admin/yllapito.html"), - controller: "YllapitoController" - }); - }) - .controller("GeneerinenArviointiController", - ($timeout, $scope, geneeriset, arviointiasteikot, Editointikontrollit, Arviointiasteikot, Notifikaatiot, Varmistusdialogi, Kaanna, YleinenData) => { - - $scope.koulutustyypit = function(geneerinen) { - return _.map(YleinenData.koulutustyypit, function(item) { - return { - value: item, - label: Kaanna.kaanna(item), - selected: geneerinen.koulutustyypit.indexOf(item) > -1 - }; - }); - }; - - $scope.geneeriset = _.map(geneeriset, (geneerinen: any) => { - return { - ...geneerinen, - koulutustyyppivalinnat: $scope.koulutustyypit(geneerinen), - } - }); - - $scope.updateKoulutustyypit = function(kt, geneerinen) { - if (kt.selected) { - geneerinen.koulutustyypit.push(kt.value); - } else { - geneerinen.koulutustyypit = _.remove(geneerinen.koulutustyypit, kt.value); - } - }; - - $scope.arviointiasteikot = _(arviointiasteikot) - .sortBy(aa => _.size(aa.osaamistasot)) - .map(aa => ({ - ...aa, - $$tasoMap: _.indexBy(aa.osaamistasot, (taso: any) => "" + taso.id), - })) - .reverse() - .value(); - - $scope.arviointiasteikotMap = _.indexBy($scope.arviointiasteikot, (asteikko: any) => "" + asteikko.id); - $scope.uusiArviointi = { - arviointiAsteikko: $scope.arviointiasteikot[0].id, - }; - - $scope.lisaaKriteeri = (ot) => { - ot.kriteerit.push({}); - }; - - $scope.poistaKriteeri = (ot, kriteeri) => { - _.remove(ot.kriteerit, kriteeri); - }; - - $scope.lisaa = async () => { - const geneerinen = await geneeriset.post({ - _arviointiAsteikko: "" + $scope.uusiArviointi.arviointiAsteikko, - arviointiAsteikko: "" + $scope.uusiArviointi.arviointiAsteikko, - kohde: { - fi: "Opiskelija", - sv: "Den studerande" - }, - valittavissa: true, - }); - $scope.geneeriset.push(geneerinen); - }; - - $scope.julkaise = (el) => { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-julkaisu", - teksti: "haluatko-varmasti-julkaista", - primaryBtn: "julkaise", - async successCb() { - el.julkaistu = true; - try { - await $scope.paivita(el); - Notifikaatiot.onnistui("julkaisu-onnistui"); - } - catch (err) { - Notifikaatiot.serverCb(err); - } - } - })(); - }; - - $scope.avaa = (el) => { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-avaus", - teksti: "haluatko-varmasti-avata", - primaryBtn: "avaa", - async successCb() { - el.julkaistu = false; - try { - await $scope.paivita(el); - } - catch (err) { - Notifikaatiot.serverCb(err); - } - } - })(); - }; - - $scope.poistaValittavuus = (el) => { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-kaytosta-poisto", - teksti: "haluatko-varmasti-poistaa-arvioinnin-kaytosta", - primaryBtn: "avaa", - async successCb() { - el.valittavissa = false; - try { - await $scope.paivita(el); - } - catch (err) { - Notifikaatiot.serverCb(err); - } - } - })(); - }; - - $scope.lisaaValittavuus = (el) => { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-kaytto", - teksti: "haluatko-varmasti-ottaa-arvioinnin-kayttoon", - primaryBtn: "avaa", - async successCb() { - el.valittavissa = true; - try { - await $scope.paivita(el); - } - catch (err) { - Notifikaatiot.serverCb(err); - } - } - })(); - }; - - $scope.poista = (el) => { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-poisto", - teksti: "poistetaanko-julkaisematon-arviointiasteikko", - primaryBtn: "poista", - async successCb() { - try { - await el.remove(); - _.remove($scope.geneeriset, el); - Notifikaatiot.onnistui("poisto-onnistui"); - } - catch (err) { - Notifikaatiot.serverCb(err); - } - } - })(); - }; - - $scope.paivita = async(el) => { - try { - const wat = await geneeriset.customPUT(el, el.id); - _.merge(el, wat); - Notifikaatiot.onnistui("paivitys-onnistui"); - } - catch (err) { - Notifikaatiot.serverCb(err); - } - }; - - $scope.kopioi = async (el) => { - try { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-kopiointi", - teksti: "kopioidaanko-asteikko-varmasti", - primaryBtn: "kopioi", - async successCb() { - try { - $scope.geneeriset.push(await el.customPOST(undefined, "/kopioi")); - Notifikaatiot.onnistui("kopiointi-onnistui"); - } - catch (err) { - Notifikaatiot.serverCb(err); - } - } - })(); - } - catch (err) { - Notifikaatiot.serverCb(err); - } - }; - - }) - .controller( - "ArviointiasteikotHallintaController", - ($scope, arviointiasteikot, Editointikontrollit, Arviointiasteikot, Notifikaatiot) => { - // Lasketaan osaamistasoille arviointiasteikkojen mukaiset id:eet - function calculateFakeIds() { - _.each(arviointiasteikot, (arviointiasteikko: any) => { - const minOsaamistasoId = _.min( - _.map(arviointiasteikko.osaamistasot, (osaamistaso: any) => osaamistaso.id) - ); - _.each(arviointiasteikko.osaamistasot, osaamistaso => { - osaamistaso.__fakeId = osaamistaso.id - minOsaamistasoId + 1; - }); - }); - } - calculateFakeIds(); - $scope.arviointiasteikot = angular.copy(arviointiasteikot); - $scope.edit = () => { - Editointikontrollit.startEditing(); - }; - - $scope.sortableOptions = { - handle: ".handle", - cursor: "move", - cursorAt: { top: 10, left: 10 }, - forceHelperSize: true, - placeholder: "sortable-placeholder", - forcePlaceholderSize: true, - opacity: ".7", - delay: 100, - axis: "y", - tolerance: "pointer" - }; - - Editointikontrollit.registerCallback({ - edit: () => {}, - save: () => { - Arviointiasteikot.save( - {}, - $scope.arviointiasteikot, - res => { - arviointiasteikot = res; - calculateFakeIds(); - $scope.arviointiasteikot = angular.copy(arviointiasteikot); - Notifikaatiot.onnistui("arviointiasteikkojen-päivitys-onnistui"); - }, - virhe => { - Notifikaatiot.serverCb(virhe); - } - ); - }, - cancel: () => { - $scope.arviointiasteikot = angular.copy(arviointiasteikot); - }, - validate: () => { - return true; - }, - notify: value => {} - }); - Editointikontrollit.registerEditModeListener(mode => { - $scope.editEnabled = mode; - }); - } - ) - .controller("OpasHallintaController", ($location, $scope, $state, Api) => { - const projektitEp = Api.one("oppaat").one("projektit"); - - $scope.rajaus = ""; - $scope.nykyinen = 0; - $scope.kokonaismaara = 0; - $scope.itemsPerPage = 20; - $scope.oppaat = []; - - $scope.updateOpaslist = async () => { - const result = await projektitEp.get({ - nimi: $scope.rajaus, - sivukoko: $scope.itemsPerPage, - sivu: $scope.nykyinen - }); - - $scope.oppaat = result.data; - }; - - $scope.valitseSivu = sivu => { - $scope.nykyinen = sivu; - $scope.updateOpaslist(); - }; - - $scope.luoUusi = () => { - $state.go("root.oppaat.uusi"); - }; - - $scope.updateOpaslist(); - }) - .controller("AdminBaseController", ($scope, $state) => { - $scope.tabs = [ - { label: "perusteprojektit", state: "root.admin.perusteprojektit" }, - { label: "tiedotteet", state: "root.admin.tiedotteet" }, - { label: "oppaat", state: "root.admin.oppaat" }, - { label: "arviointiasteikot", state: "root.admin.arviointiasteikot" }, - { label: "geneerinenarviointi", state: "root.admin.geneerinenarviointi" } - ]; - - $scope.chooseTab = $index => { - _.each($scope.tabs, (item, index) => { - item.$tabActive = index === $index; - }); - const state = $scope.tabs[$index]; - if (state) { - $state.go(state.state); - } - }; - - if ($state.current.name === "root.admin") { - $scope.chooseTab(0); - } else { - _.each($scope.tabs, item => { - item.$tabActive = item.state === $state.current.name; - }); - } - }) - .controller( - "AdminPerusteprojektitController", - ( - $rootScope, - $scope, - Api, - Algoritmit, - PerusteprojektiTila, - Notifikaatiot, - Kaanna, - YleinenData, - Varmistusdialogi, - PerusteProjektiService - ) => { - $scope.jarjestysTapa = "nimi"; - $scope.jarjestysOrder = false; - $scope.tilaRajain = null; - $scope.koulutustyyppiRajain = null; - $scope.itemsPerPage = 10; - $scope.nykyinen = 1; - $scope.rajaus = ""; - $scope.tilat = _.keys(ProjektiTila).map(t => ProjektiTila[t]); - $scope.koulutustyypit = YleinenData.koulutustyypit; - - async function updateSearch() { - let tila; - if ($scope.tilaRajain) { - tila = $scope.tilaRajain.toUpperCase(); - } else { - tila = _($scope.tilat) - .filter(tila => tila !== "poistettu") - .map(tila => tila.toUpperCase()) - .value(); - } - const perusteprojektit = await Api.one("perusteprojektit/perusteHaku").get({ - nimi: $scope.rajaus, - tila: tila, - koulutustyyppi: $scope.koulutustyyppiRajain, - sivu: $scope.nykyinen - 1, - sivukoko: $scope.itemsPerPage, - jarjestysTapa: $scope.jarjestysTapa, - jarjestysOrder: $scope.jarjestysOrder - }); - $scope.$apply(() => { - $scope.perusteprojektit = _.map(perusteprojektit.data, pp => { - return { - ...pp, - suoritustapa: YleinenData.valitseSuoritustapaKoulutustyypille((pp as any).koulutustyyppi), - $$url: PerusteProjektiService.getUrl(pp) - }; - }); - $scope.nykyinen = perusteprojektit.sivu + 1; - $scope.kokonaismaara = perusteprojektit.kokonaismäärä; - }); - } - - updateSearch(); - - const debounceUpdateSearch = _.debounce(updateSearch, 300); - - $scope.updateTila = () => { - updateSearch(); - }; - - $scope.updateRajaus = rajaus => { - $scope.rajaus = rajaus; - debounceUpdateSearch(); - }; - - $scope.valitseSivu = sivu => { - $scope.nykyinen = sivu; - updateSearch(); - }; - - $scope.asetaJarjestys = tyyppi => { - if ($scope.jarjestysTapa === tyyppi) { - $scope.jarjestysOrder = !$scope.jarjestysOrder; - } else { - $scope.jarjestysOrder = false; - $scope.jarjestysTapa = tyyppi; - } - updateSearch(); - }; - - $scope.palauta = pp => { - const uusiTila = "laadinta"; - Varmistusdialogi.dialogi({ - otsikko: Kaanna.kaanna("vahvista-palautus"), - teksti: Kaanna.kaanna("vahvista-palautus-sisältö", { - nimi: pp.nimi, - tila: Kaanna.kaanna("tila-" + uusiTila) - }) - })(() => { - PerusteprojektiTila.save( - { id: pp.id, tila: uusiTila }, - {}, - vastaus => { - if (vastaus.vaihtoOk) { - pp.tila = uusiTila; - } else { - Notifikaatiot.varoitus("tilan-vaihto-epaonnistui"); - } - }, - Notifikaatiot.serverCb - ); - }); - }; - } - ) - .controller("YllapitoController", ($location, $scope, $state, Api, Notifikaatiot) => { - const yllapito = Api.one("maintenance").one("yllapito"); - $scope.yllapidot = []; - - $scope.updateYllapitoList = async () => { - $scope.yllapidot = await yllapito.get(); - }; - - $scope.updateYllapitoList(); - - $scope.kaynnista = async (yllapito) => { - await Api.one(yllapito.url).get(); - Notifikaatiot.onnistui("ajo-kaynnistetty"); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/aloitussivu.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/aloitussivu.ts deleted file mode 100644 index 07694090b7..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/aloitussivu.ts +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .config(function($stateProvider) { - $stateProvider - .state("root", { - url: "/:lang", - template: "
    ", - abstract: true, - resolve: { - resolved: function(Profiili) { - return Profiili.resolvedPromise(); - }, - suosikit: function(Profiili) { - return Profiili; - }, - casTiedot: function(Profiili) { - return Profiili.casTiedot(); - }, - loadLangs($translate, Kieli, $stateParams) { - _.forEach(Kieli.SISALTOKIELET, (kieli) => $translate.use(kieli)); - }, - }, - onEnter: [ - "YleinenData", - "$stateParams", - function(YleinenData, $stateParams) { - YleinenData.vaihdaKieli($stateParams.lang); - } - ] - }) - .state("root.aloitussivu", { - url: "", - template: require("views/aloitussivu.html"), - controller: "AloitusSivuController" - }); - }) - .controller("AloitusSivuController", function($scope, $state, YleinenData) { - $scope.valinnat = [ - { - koodi: "koulutustyyppi_15", - helper: "selaa-perustetta" - }, - { - koodi: "koulutustyyppi_16", - helper: "selaa-perusteita" - }, - { - koodi: "koulutustyyppi_17", - helper: "selaa-perustetta" - }, - { - koodi: "koulutustyyppi_2", - helper: "selaa-perusteita" - }, - { - label: "ammatillinen-peruskoulutus", - koodi: "koulutustyyppi_1", - helper: "hae-perusteita" - }, - { - label: "ammatillinen-aikuiskoulutus", - koodi: "koulutustyyppi_11", - helper: "hae-perusteita" - } - ]; - _.each($scope.valinnat, item => { - const info = YleinenData.koulutustyyppiInfo[item.koodi] || {}; - item.label = item.label || info.nimi; - item.url = $state.href(info.hakuState); - }); - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/esiopetus.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/esiopetus.ts deleted file mode 100644 index ad08808e68..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/esiopetus.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("EsiopetusController", function( - $scope, - $state, - Algoritmit, - sisalto, - Notifikaatiot, - PerusteenOsat, - YleinenData - ) { - $scope.peruste = sisalto[0]; - $scope.otsikko = YleinenData.isEsiopetus($scope.peruste) ? "esiopetus" : "lisaopetus"; - var tekstisisalto = sisalto[1]; - - function valitseTekstisisalto(item, section) { - $scope.valittuTekstisisalto = item.$osa; - PerusteenOsat.get( - { osanId: item.$osa._perusteenOsa }, - function(res) { - if (section) { - _.each(section.items, function(osa) { - osa.$selected = false; - }); - } - item.$selected = true; - $scope.valittuTekstisisalto.teksti = res.teksti; - }, - Notifikaatiot.serverCb - ); - } - - function rakennaTekstisisalto() { - var sisalto = []; - Algoritmit.kaikilleLapsisolmuille(tekstisisalto, "lapset", function(osa, depth) { - if (depth >= 0) { - sisalto.push({ - $osa: osa, - label: osa.perusteenOsa.nimi, - depth: depth - }); - } - }); - if (!_.isEmpty(sisalto)) { - _.first(sisalto).$selected = true; - valitseTekstisisalto(_.first(sisalto), undefined); - } - return sisalto; - } - - $scope.navi = { - header: "perusteen-sisalto", - showOne: true, - sections: [ - { - $open: true, - id: "suunnitelma", - include: "views/partials/perusopetustekstisisalto.html", - items: rakennaTekstisisalto(), - title: "tekstisisalto", - update: valitseTekstisisalto - } - ] - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/excel.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/excel.ts deleted file mode 100644 index c6a28bd8dc..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/excel.ts +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .config(function($stateProvider) { - $stateProvider.state("root.excel", { - url: "/excel", - template: require("views/excel.html"), - controller: "ExcelCtrl" - }); - }) - .controller("ExcelCtrl", function( - $scope, - $uibModal, - ExcelService, - PerusteenOsat, - TutkinnonOsanValidointi, - Koodisto, - PerusteprojektiResource, - PerusteTutkinnonosat, - $translate, - SuoritustapaSisalto, - Perusteet, - Notifikaatiot, - YleinenData, - Utils, - PerusteProjektiService - ) { - $scope.koulutustyypit = YleinenData.koulutustyypit; - $scope.koulutustyypitMap = YleinenData.koulutustyyppiInfo; - $scope.yksikot = YleinenData.yksikot; - $scope.suoritustavat = YleinenData.suoritustavat; - - $scope.alussa = true; - $scope.filename = ""; - $scope.naytaVirheet = false; - $scope.parsinnanTyyppi = "peruste"; - $scope.projekti = {}; - $scope.projekti.koulutustyyppi = "koulutustyyppi_1"; - $scope.projekti.laajuusYksikko = "OSAAMISPISTE"; - $scope.peruste = {}; - $scope.haettuPeruste = {}; - $scope.peruste.$perusteTallennettu = false; - $scope.suoritustapa = "naytto"; - - $scope.supportsFileReader = Utils.supportsFileReader(); - $scope.lang = $translate.use() || $translate.preferredLanguage(); - - $scope.clearSelect = function() { - $scope.parsinnanTila = []; - $scope.osatutkinnot = []; - $scope.errors = []; - $scope.warnings = []; - $scope.lukeeTiedostoa = true; - $scope.uploadErrors = []; - $scope.uploadSuccessTekstikappaleet = false; - $scope.uploadSuccessTutkinnonosat = false; - }; - $scope.clearSelect(); - - $scope.editoiOsatutkintoa = function() {}; - - $scope.mergeProjekti = function(tuoPohja) { - PerusteProjektiService.mergeProjekti($scope.projekti, tuoPohja).then(function(peruste, projekti) { - _.merge($scope.projekti, projekti); - $scope.peruste = peruste; - }); - }; - - $scope.peruutaPohjaValinta = function() { - $scope.peruste = {}; - $scope.projekti = {}; - $scope.projekti.koulutustyyppi = "koulutustyyppi_1"; - $scope.projekti.laajuusYksikko = "OSAAMISPISTE"; - }; - - $scope.poistaOsatutkinto = function(ot) { - _.remove($scope.osatutkinnot, ot); - }; - - $scope.liitaKoodiOT = function(ot) { - Koodisto.modaali( - function(koodi) { - ot.koodiUri = koodi.koodiUri; - ot.koodiArvo = koodi.koodiArvo; - }, - { - tyyppi: function() { - return "tutkinnonosat"; - }, - ylarelaatioTyyppi: function() { - return ""; - } - } - )(); - }; - - $scope.rajaaKoodit = function(koodi) { - return koodi.koodi.indexOf("_3") !== -1; - }; - - $scope.tallennaPerusteprojekti = function(perusteprojekti) { - perusteprojekti.tyyppi = perusteprojekti.tyyppi || "normaali"; - if (perusteprojekti.koulutustyyppi !== "koulutustyyppi_1") { - delete perusteprojekti.laajuusYksikko; - } - PerusteprojektiResource.save(Utils.presaveStrip(perusteprojekti), function(resPerusteprojekti) { - $scope.haettuProjekti = resPerusteprojekti; - Perusteet.get( - { - perusteId: resPerusteprojekti._peruste - }, - function(resPeruste) { - $scope.peruste.$perusteTallennettu = true; - $scope.haettuPeruste = resPeruste; - } - ); - }); - }; - - $scope.tallennaTekstikappaleet = function(tekstikentat) { - var filtered = _.reject(tekstikentat, function(tk: any) { - return tk.$ladattu === true; - }); - var doneSuccess = _.after(_.size(filtered), function() { - Notifikaatiot.onnistui("tallennus-onnistui"); - $scope.uploadSuccessTekstikappaleet = true; - }); - - _.forEach(filtered, function(tk: any) { - tk.tila = "luonnos"; - tk.osanTyyppi = "tekstikappale"; - var viite = { perusteenOsa: tk }; - SuoritustapaSisalto.save( - { - perusteId: $scope.haettuPeruste.id, - suoritustapa: $scope.suoritustapa || $scope.haettuPeruste.suoritustavat[0].suoritustapakoodi - }, - viite, - function(re) { - tk.$ladattu = true; - tk.id = re._perusteenOsa; - doneSuccess(); - }, - function(err) { - tk.$syy = err.data.syy; - } - ); - }); - }; - - $scope.poistaTekstikentta = function(tekstikentta) { - _.remove($scope.tekstikentat, tekstikentta); - }; - - $scope.tallennaOsatutkinnot = function() { - var filtered = _.filter($scope.osatutkinnot, function(ot: any) { - return ot.$ladattu !== 0; - }); - var doneSuccess = _.after(_.size(filtered), function() { - $scope.uploadSuccessTutkinnonosat = true; - Notifikaatiot.onnistui("tallennus-onnistui"); - }); - - _.forEach(filtered, function(ot: any) { - ot.koodiUri = ot.koodiUri || null; - ot.koodiArvo = ot.koodiUri || null; - var koodiUriKaytossa = _.any($scope.osatutkinnot, function(toinen: any) { - return ot !== toinen && ot.koodiUri && toinen.koodiUri === ot.koodiUri; - }); - if (koodiUriKaytossa) { - ot.$syy = ["excel-ei-kahta-samaa"]; - } else { - var cop = _.clone(ot); - cop.tavoitteet = {}; - cop.tila = "luonnos"; - cop.osanTyyppi = "tutkinnonosa"; - cop.$laajuus = cop.laajuus; - delete cop.laajuus; - PerusteTutkinnonosat.save( - { - perusteId: $scope.haettuPeruste.id, - suoritustapa: $scope.suoritustapa || $scope.haettuPeruste.suoritustavat[0].suoritustapakoodi - }, - { - tutkinnonOsa: cop, - laajuus: cop.$laajuus - }, - function(re) { - ot.$ladattu = 0; - ot.id = re._tutkinnonOsa; - doneSuccess(); - }, - function(err) { - if (err) { - ot.$syy = [err.data.syy]; - ot.$ladattu = 1; - } - } - ); - } - }); - }; - - $scope.haeRyhma = function() { - $uibModal - .open({ - template: require("views/modals/tuotyoryhma.html"), - controller: "TyoryhmanTuontiModalCtrl" - }) - .result.then(function(ryhma) { - $scope.projekti.ryhmaOid = ryhma.oid; - $scope.projekti.$ryhmaNimi = ryhma.nimi; - }); - }; - - $scope.paivitaTilaa = function(notifier) { - $scope.parsinnanTila.push(notifier); - }; - - $scope.onFileSelect = function(err, file) { - $scope.lukeeTiedostoa = true; - $scope.alussa = false; - $scope.osatutkinnot = []; - - if (err || !file) { - Notifikaatiot.varoitus("virhe-tiedosto-epäonnistui"); - } else { - ExcelService.parseXLSXToOsaperuste( - file, - $scope.projekti.koulutustyyppi === "koulutustyyppi_1" ? "perustutkinto" : "ammattitutkinto", - $scope.paivitaTilaa - ).then( - function(resolve) { - $scope.warnings = resolve.osatutkinnot.varoitukset; - $scope.peruste = _.omit(resolve.peruste, "tekstikentat"); - $scope.tekstikentat = _.map(resolve.peruste.tekstikentat, function(tk) { - return _.merge(tk, { - $ladattu: -1, - $syy: [] - }); - }); - - $scope.osatutkinnot = _.map(resolve.osatutkinnot.osaperusteet, function(ot) { - return _.merge(ot, { - $ladattu: -1, - koodiUri: "", - $syy: [] - }); - }); - - $scope.projekti.diaarinumero = $scope.peruste.diaarinumero || ""; - $scope.projekti.laajuusYksikko = YleinenData.yksikotMap[$scope.peruste.laajuusYksikko] || ""; - $scope.lukeeTiedostoa = false; - }, - function(errors) { - $scope.errors = errors; - $scope.lukeeTiedostoa = false; - } - ); - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/haku.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/haku.ts deleted file mode 100644 index 2e88a5f644..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/haku.ts +++ /dev/null @@ -1,283 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .config(function($stateProvider) { - const paramList = "?nimi&koulutusala&tyyppi&opintoala"; - $stateProvider - .state("root.selaus", { - url: "/selaus", - template: "
    " - }) - .state("root.selaus.ammatillinenperuskoulutus", { - url: "/ammatillinenperuskoulutus" + paramList, - template: require("views/haku.html"), - controller: "HakuCtrl", - resolve: { koulutusalaService: "Koulutusalat" } - }) - .state("root.selaus.ammatillinenaikuiskoulutus", { - url: "/ammatillinenaikuiskoulutus" + paramList, - template: require("views/haku.html"), - controller: "HakuCtrl", - resolve: { koulutusalaService: "Koulutusalat" } - }) - .state("root.selaus.esiopetuslista", { - url: "/esiopetus", - template: require("views/perusopetuslistaus.html"), - controller: "EsiopetusListaController" - }) - .state("root.selaus.aikuisperusopetuslista", { - url: "/aikuisperusopetus", - template: require("views/aikuisperusopetuslistaus.html"), - controller: "AikuisperusopetusListaController" - }) - .state("root.selaus.perusopetuslista", { - url: "/perusopetus", - template: require("views/perusopetuslistaus.html"), - controller: "PerusopetusListaController" - }) - .state("root.selaus.lukiokoulutuslista", { - url: "/lukiokoulutuslistaus", - template: require("views/lukiokoulutuslistaus.html"), - controller: "LukiokoulutusListaController" - }); - }) - .controller("EsiopetusListaController", function($scope, $state, Perusteet, Notifikaatiot, YleinenData) { - $scope.lista = []; - Perusteet.get( - { - tyyppi: "koulutustyyppi_15" - }, - function(res) { - if (res.sivuja > 1) { - console.warn("sivutusta ei ole toteutettu, tuloksia yli " + res.sivukoko); - } - $scope.lista = _(res.data) - .sortBy("voimassaoloLoppuu") - .reverse() - .each((eo: any) => { - eo.$url = YleinenData.getPerusteEsikatseluHost() + "/esiopetus/" + eo.id + "/tiedot"; - }) - .value(); - }, - Notifikaatiot.serverCb - ); - }) - .controller("AikuisperusopetusListaController", function( - $scope, - $state, - $q, - Perusteet, - Notifikaatiot, - YleinenData - ) { - $scope.lista = []; - $q.all([Perusteet.get({ tyyppi: "koulutustyyppi_17" }).$promise]).then(res => { - if (res[0].sivuja > 1) { - console.warn("sivutusta ei ole toteutettu, tuloksia yli " + res.sivukoko); - } - - $scope.lista = _([].concat(res[0].data)) - .sortBy("voimassaoloLoppuu") - .reverse() - .each(peruste => { - peruste.$url = YleinenData.getPerusteEsikatseluHost() + "/aipe/" + peruste.id + "/tiedot"; - }) - .value(); - }, Notifikaatiot.serverCb); - }) - .controller("PerusopetusListaController", function($scope, $state, $q, Perusteet, Notifikaatiot, YleinenData) { - $scope.lista = []; - $q - .all([ - Perusteet.get({ tyyppi: "koulutustyyppi_16" }).$promise, - Perusteet.get({ tyyppi: "koulutustyyppi_6" }).$promise - ]) - .then(function(res) { - if (res[0].sivuja > 1 || res[1].sivuja > 1) { - console.warn("sivutusta ei ole toteutettu, tuloksia yli " + res.sivukoko); - } - - const cresult = [].concat(res[0].data).concat(res[1].data); - - $scope.lista = _(cresult) - .sortBy("voimassaoloLoppuu") - .reverse() - .each(function(peruste) { - peruste.$url = - YleinenData.getPerusteEsikatseluHost() + - "/" + - (YleinenData.isLisaopetus(peruste) ? "lisaopetus" : "perusopetus") + - "/" + - peruste.id + - "/tiedot"; - }) - .value(); - }, Notifikaatiot.serverCb); - }) - .controller("LukiokoulutusListaController", function($scope, $state, $q, Perusteet, Notifikaatiot, YleinenData) { - $scope.lista = []; - Perusteet.get( - { - tyyppi: "koulutustyyppi_2" - }, - function(res) { - if (res.sivuja > 1) { - console.warn("sivutusta ei ole toteutettu, tuloksia yli " + res.sivukoko); - } - $scope.lista = _(res.data) - .sortBy("voimassaoloLoppuu") - .reverse() - .each(function(eo: any) { - // "Kovakoodatut" Hostit haetaan yleiselta datalta - eo.$url = YleinenData.getPerusteEsikatseluHost($scope.isPerusteUusiToteutus(eo)) + "/lukio/" + eo.id; - }) - .value(); - }, - Notifikaatiot.serverCb - ); - - $scope.isPerusteUusiToteutus = peruste => _.includes(['lops2019'], peruste.toteutus); - }) - .controller("HakuCtrl", function( - $scope, - $rootScope, - $state, - Perusteet, - Haku, - $stateParams, - YleinenData, - koulutusalaService, - Kieli, - Profiili, - Notifikaatiot - ) { - let pat: RegExp; - // Viive, joka odotetaan, ennen kuin haku nimi muutoksesta lähtee serverille. - const hakuViive = 300; // ms - // Huom! Sivu alkaa UI:lla ykkösestä, serverillä nollasta. - $scope.nykyinenSivu = 1; - $scope.sivuja = 1; - $scope.kokonaismaara = 0; - $scope.koulutusalat = koulutusalaService.haeKoulutusalat(); - $scope.kirjanmerkinNimi = ""; - $scope.perusteEsikatseluHost = YleinenData.getPerusteEsikatseluHost(); - - $scope.updateUrl = function() { - const newParams = _.merge($stateParams, $scope.hakuparametrit); - if (!_.isEmpty($scope.kirjanmerkinNimi)) { - Profiili.asetaSuosikki( - $state.current.name, - $scope.kirjanmerkinNimi, - function() { - $scope.kirjanmerkinNimi = ""; - $state.go($state.current.name, newParams, { reload: false }); - }, - newParams - ); - } else { - Notifikaatiot.varoitus("kirjanmerkilla-pitaa-olla-nimi"); - } - }; - - function setHakuparametrit() { - $scope.hakuparametrit = _.merge(_.merge(Haku.getHakuparametrit($state.current.name), $stateParams), { - kieli: Kieli.getSisaltokieli() - }); - } - setHakuparametrit(); - - $scope.koulutustyypit = YleinenData.ammatillisetkoulutustyypit; - - $scope.tyhjenna = function() { - $scope.nykyinenSivu = 1; - $scope.hakuparametrit = Haku.resetHakuparametrit($state.current.name); - setHakuparametrit(); - $scope.haePerusteet($scope.nykyinenSivu); - }; - - const hakuVastaus = function(vastaus) { - $scope.perusteet = vastaus; - $scope.nykyinenSivu = $scope.perusteet.sivu + 1; - $scope.hakuparametrit.sivukoko = $scope.perusteet.sivukoko; - $scope.sivuja = $scope.perusteet.sivuja; - $scope.kokonaismaara = $scope.perusteet.kokonaismäärä; - $scope.sivut = _.range(0, $scope.perusteet.sivuja); - pat = new RegExp("(" + $scope.hakuparametrit.nimi + ")", "i"); - }; - - $scope.pageChanged = function() { - $scope.haePerusteet($scope.nykyinenSivu); - }; - - /** - * Hakee sivun serveriltä. - * @param {number} sivu UI:n sivunumero, alkaa ykkösestä. - */ - $scope.haePerusteet = function(sivu) { - $scope.hakuparametrit.sivu = sivu - 1; - Haku.setHakuparametrit($state.current.name, $scope.hakuparametrit); - Perusteet.get($scope.hakuparametrit, hakuVastaus, function(virhe) { - if (virhe.status === 404) { - hakuVastaus(virhe.data); - } - }); - }; - - $scope.sivujaYhteensa = function() { - return Math.max($scope.sivuja, 1); - }; - - $scope.hakuMuuttui = _.debounce(_.bind($scope.haePerusteet, $scope, 1), hakuViive, { leading: false }); - - $scope.korosta = function(otsikko) { - if ($scope.hakuparametrit.nimi === null || $scope.hakuparametrit.nimi.length < 3) { - return otsikko; - } - return otsikko.replace(pat, "$1"); - }; - - $scope.valitseKieli = function(nimi) { - return YleinenData.valitseKieli(nimi); - }; - - $scope.koulutusalaMuuttui = function() { - $scope.hakuparametrit.opintoala = ""; - if ($scope.hakuparametrit.koulutusala !== "") { - $scope.opintoalat = (_.findWhere($scope.koulutusalat, { - koodi: $scope.hakuparametrit.koulutusala - }) as any).opintoalat; - } else { - $scope.opintoalat = []; - } - $scope.hakuMuuttui(); - }; - $scope.koulutusalaMuuttui(); - - $scope.koulutusalaNimi = function(koodi) { - return koulutusalaService.haeKoulutusalaNimi(koodi); - }; - - $scope.piilotaKoulutustyyppi = function() { - return $state.current.name === "root.selaus.ammatillinenperuskoulutus"; - }; - - $scope.$on("changed:sisaltokieli", $scope.tyhjenna); - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/kurssit.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/kurssit.ts deleted file mode 100644 index 30745372fd..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/kurssit.ts +++ /dev/null @@ -1,361 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -namespace LukioHelper { - export const kurssinOsat = koulutustyyppi => { - const osat = ["tavoitteet", "keskeinenSisalto", "tavoitteetJaKeskeinenSisalto"]; - - if (koulutustyyppi === "koulutustyyppi_23") { - osat.push("arviointi"); - } - - return osat; - }; -} - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .service("LukiokurssiModifyHelpers", function( - Koodisto, - MuokkausUtils, - $translate, - $filter, - Kieli, - Kaanna, - $log, - $rootScope - ) { - var openKoodisto = function(kurssi) { - return Koodisto.modaali( - function(koodisto) { - MuokkausUtils.nestedSet(kurssi, "koodiUri", ",", koodisto.koodiUri); - MuokkausUtils.nestedSet(kurssi, "koodiArvo", ",", koodisto.koodiArvo); - MuokkausUtils.nestedSet(kurssi, "nimi", ",", koodisto.nimi); - kurssi.lokalisoituKoodi = {}; - kurssi.lokalisoituKoodi[Kieli.getSisaltokieli()] = koodisto.koodiArvo; - $rootScope.$broadcast("notifyCKEditor"); - }, - { - tyyppi: function() { - return "lukionkurssit"; - }, - ylarelaatioTyyppi: function() { - return ""; - }, - tarkista: _.constant(true) - } - ); - }; - var getDefaultTavoitteet = function() { - // TODO: ei tosiaan taida olla mitään tapaa saada $translatelta tietyn id:n käännöksiä kaikille kielille? - // --> siispä joudutaan tyytymään yhteen. Jos nyt luontivaiheessa tai puuttuvan kohdalla vaihdetaan - // localea, niin toimii väärin, mutta minkäs teet :/ - var oletusTavoiteOtsikko = {}; - oletusTavoiteOtsikko[Kieli.getSisaltokieli()] = $filter("kaanna")("kurssi-tavoitteet-header"); - return oletusTavoiteOtsikko; - }; - - function getOsa(kurssi, id) { - return { - id: id, - obj: kurssi[id] - }; - } - - function emptyI18n(defultValue) { - var i18n = {}; - i18n[Kieli.getSisaltokieli()] = defultValue; - return i18n; - } - - function emptyOsa(id) { - return { - otsikko: emptyI18n(Kaanna.kaanna("kurssi-osa-" + id)), - teksti: emptyI18n("") - }; - } - - function isAddAvailable(osat) { - var len = 0; - _.each(osat, function(osa) { - if (!osa.obj) { - len++; - } - }); - return len > 0; - } - - return { - openKoodisto: openKoodisto, - getDefaultTavoitteet: getDefaultTavoitteet, - getOsa: getOsa, - emptyOsa: emptyOsa, - isAddAvailable: isAddAvailable - }; - }) - .controller("NaytaLukiokurssiController", function( - $scope, - $state, - LukioKurssiService, - $stateParams, - YleinenData, - LukiokoulutusService, - Kommentit, - KommentitByPerusteenOsa, - VersionHelper, - Notifikaatiot, - Lukitus, - $log - ) { - Kommentit.haeKommentit(KommentitByPerusteenOsa, { - id: $stateParams.perusteProjektiId, - perusteenOsaId: $stateParams.kurssiId - }); - $scope.kurssi = LukioKurssiService.get($stateParams.kurssiId); - $scope.kurssityypit = []; - YleinenData.lukioKurssityypit().then(function(tyypit) { - _.each(tyypit, function(t) { - $scope.kurssityypit[t.tyyppi] = t.nimi; - }); - }); - $scope.dontFixVersiot = true; - $scope.versiot = { latest: true }; - - $scope.haeVersiot = function(force, cb) { - VersionHelper.getLukiokurssiVersions($scope.versiot, { id: $stateParams.kurssiId }, force, cb); - }; - $scope.haeVersiot(true); - - $scope.vaihdaVersio = function(v) { - $scope.versiot.hasChanged = true; - VersionHelper.setUrl($scope.versiot); - if ($scope.versiot.chosen) { - $scope.kurssi = LukioKurssiService.getVersion($stateParams.kurssiId, $scope.versiot.chosen.numero); - } - }; - - $scope.revertCb = function(response) { - Lukitus.vapauta(); - $scope.haeVersiot(true, function() { - VersionHelper.setUrl($scope.versiot); - }); - Notifikaatiot.onnistui("lukiokurssi-palautettu"); - }; - - $scope.oppiaineMurupolkuItems = function(oppiaine) { - var ls = []; - while (oppiaine.vanhempi) { - oppiaine = oppiaine.vanhempi; - ls.push(oppiaine); - } - return _(ls) - .reverse() - .value(); - }; - - $scope.goto = function(oppiaine) { - $state.go("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanId: oppiaine.oppiaineId, - osanTyyppi: LukiokoulutusService.OPPIAINEET_OPPIMAARAT, - tabId: 0 - }); - }; - $scope.gotoKurssit = function() { - $state.go("root.perusteprojekti.suoritustapa.lukioosat", { - osanTyyppi: LukiokoulutusService.OPPIAINEET_OPPIMAARAT, - tabId: "kurssit" - }); - }; - $scope.gotoMuokkaa = function() { - LukioKurssiService.lukitse($stateParams.kurssiId).then(function() { - $state.go("root.perusteprojekti.suoritustapa.muokkaakurssia", { - kurssiId: $stateParams.kurssiId - }); - }); - }; - }) - .controller("LisaaLukioKurssiController", function( - $scope, - $state, - $q, - $stateParams, - LukiokoulutusService, - LukioKurssiService, - YleinenData, - LukiokurssiModifyHelpers, - Editointikontrollit, - $filter, - $rootScope - ) { - Editointikontrollit.registerCallback({ - edit: function() {}, - save: function(kommentti) { - $rootScope.$broadcast("notifyCKEditor"); - $scope.kurssi.kommentti = kommentti; - LukioKurssiService.save($scope.kurssi).then(function() { - $scope.back(); - }); - }, - cancel: function() { - $scope.back(); - }, - validate: function() { - return $filter("kaanna")($scope.kurssi.nimi) != ""; - }, - notify: function() {} - }); - $scope.kurssityypit = {}; - $scope.kurssi = { - nimi: {}, - tyyppi: "PAKOLLINEN", - koodiUri: null, - koodiArvo: null - }; - YleinenData.lukioKurssityypit().then(function(tyypit) { - $scope.kurssityypit = tyypit; - }); - - $scope.osat = LukioHelper.kurssinOsat($scope.peruste.koulutustyyppi); - - $scope.muokattavatOsat = []; - $scope.osatById = {}; - _.each($scope.osat, function(osaId) { - var osa = LukiokurssiModifyHelpers.getOsa($scope.kurssi, osaId); - $scope.osatById[osaId] = osa; - $scope.muokattavatOsat.push(osa); - }); - Editointikontrollit.startEditing(); - - $scope.addOsa = function(id) { - if (!$scope.kurssi[id]) { - $scope.kurssi[id] = LukiokurssiModifyHelpers.emptyOsa(id); - $scope.osatById[id].obj = $scope.kurssi[id]; - } - }; - $scope.removeOsa = function(id) { - $scope.kurssi[id] = null; - $scope.osatById[id].obj = null; - }; - $scope.isAddAvailable = function() { - return LukiokurssiModifyHelpers.isAddAvailable($scope.muokattavatOsat); - }; - - $scope.openKoodisto = LukiokurssiModifyHelpers.openKoodisto($scope.kurssi); - $scope.back = function() { - $state.go("root.perusteprojekti.suoritustapa.lukioosat", { - osanTyyppi: LukiokoulutusService.OPPIAINEET_OPPIMAARAT - }); - }; - }) - .controller("MuokkaaLukiokurssiaController", function( - $scope, - $state, - LukioKurssiService, - $stateParams, - $timeout, - $q, - YleinenData, - $log, - $rootScope, - LukiokurssiModifyHelpers, - Editointikontrollit, - Varmistusdialogi, - $filter, - Kaanna, - LukiokoulutusService, - Lukitus, - Kieli - ) { - Editointikontrollit.registerCallback({ - edit: function() { - $log.info("edit called"); - $scope.kurssi = LukioKurssiService.get($stateParams.kurssiId, function(kurssi) { - _.each($scope.osat, function(osaId) { - var osa = LukiokurssiModifyHelpers.getOsa(kurssi, osaId); - $scope.osatById[osaId] = osa; - $scope.muokattavatOsat.push(osa); - }); - }); - }, - save: function(kommentti) { - $rootScope.$broadcast("notifyCKEditor", true); - $scope.kurssi.kommentti = kommentti; - LukioKurssiService.update(_.cloneDeep($scope.kurssi)).then(function() { - $scope.back(); - }); - }, - cancel: function() { - Lukitus.vapauta().then(function() { - $scope.back(); - }); - }, - validate: function() { - return $filter("kaanna")($scope.kurssi.nimi) != ""; - }, - notify: function() {} - }); - $scope.kurssi = { kuvaus: {} }; - $scope.osat = LukioHelper.kurssinOsat($scope.peruste.koulutustyyppi); - $scope.muokattavatOsat = []; - $scope.osatById = {}; - Editointikontrollit.startEditing(); - - $scope.kurssityypit = []; - YleinenData.lukioKurssityypit().then(function(tyypit) { - $scope.kurssityypit = tyypit; - }); - - $scope.addOsa = function(id) { - if (!$scope.kurssi[id]) { - $scope.kurssi[id] = LukiokurssiModifyHelpers.emptyOsa(id); - $scope.osatById[id].obj = $scope.kurssi[id]; - } - $rootScope.$broadcast("enableEditing"); - }; - $scope.removeOsa = function(id) { - $scope.kurssi[id] = null; - $scope.osatById[id].obj = null; - }; - $scope.isAddAvailable = function() { - return LukiokurssiModifyHelpers.isAddAvailable($scope.muokattavatOsat); - }; - - $scope.openKoodisto = LukiokurssiModifyHelpers.openKoodisto($scope.kurssi); - $scope.back = function() { - $state.go("root.perusteprojekti.suoritustapa.kurssi", { - kurssiId: $stateParams.kurssiId - }); - }; - - $scope.deleteKurssi = function() { - Varmistusdialogi.dialogi({ - otsikko: "varmista-poisto", - teksti: Kaanna.kaanna("poistetaanko-kurssi"), - primaryBtn: "poista", - successCb: function() { - LukioKurssiService.deleteKurssi($stateParams.kurssiId).then(function() { - Editointikontrollit.unregisterCallback(); - $state.go("root.perusteprojekti.suoritustapa.lukioosat", { - osanTyyppi: LukiokoulutusService.OPPIAINEET_OPPIMAARAT - }); - }); - } - })(); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/lops2019.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/lops2019.ts deleted file mode 100644 index c52eaf89e2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/lops2019.ts +++ /dev/null @@ -1,531 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; -import { Lokalisointi } from "scripts/services/utils"; - -angular -.module("eperusteApp") -.controller("Lops2019Controller", function( - $scope, - $state, - $stateParams, - Api, - YleinenData, - Algoritmit, - perusteprojektiTiedot, - TekstikappaleOperations, - Lops2019Service, - Editointikontrollit, - Notifikaatiot -) { - const manipulateSisaltoUrls = sisalto => { - Algoritmit.kaikilleLapsisolmuille(sisalto, "lapset", lapsi => { - switch (_.get(lapsi, "perusteenOsa.osanTyyppi")) { - case "tekstikappale": - lapsi.$url = $state.href("root.perusteprojekti.suoritustapa.tekstikappale", { - suoritustapa: "lukiokoulutus2019", - perusteenOsaViiteId: lapsi.id, - versio: "" - }); - break; - } - }); - }; - - const getSisalto = () => { - const sisalto = perusteprojektiTiedot.getYlTiedot().sisalto; - manipulateSisaltoUrls(sisalto); // Mutatoi sisältöä - return sisalto; - }; - - $scope.projekti = perusteprojektiTiedot.getProjekti(); - $scope.peruste = perusteprojektiTiedot.getPeruste(); - $scope.sisalto = getSisalto(); - $scope.esitysurl = YleinenData.getPerusteEsikatseluLink($scope.projekti, $scope.peruste); - $scope.rajaus = ""; - - $scope.opetus = Lops2019Service.getOpetus(); - - TekstikappaleOperations.setPeruste($scope.peruste); - - $scope.addTekstikappale = () => { - TekstikappaleOperations.add(); - }; - - $scope.edit = () => { - Editointikontrollit.startEditing(); - }; - - Editointikontrollit.registerCallback({ - edit: () => { - $scope.rajaus = ""; - }, - save: () => { - TekstikappaleOperations.updateViitteet($scope.sisalto, () => { - Notifikaatiot.onnistui("osien-rakenteen-päivitys-onnistui"); - }); - }, - cancel: () => { - $state.go($state.current.name, $stateParams, { - reload: true - }); - }, - validate: () => { - return true; - }, - notify: value => { - $scope.editing = value; - } - }); -}) -.controller("Lops2019LaajaalaisetController", function ( - $scope, - Api, - Editointikontrollit, - Notifikaatiot, - laajaalaiset, - Koodisto -) { - $scope.laajaalaiset = laajaalaiset.clone(); - - $scope.add = (parent, field) => { - if (!_.has(parent, field)) { - parent[field] = []; - } - parent[field].push({}); - }; - - $scope.remove = (target, el) => { - _.remove(target, el); - }; - - $scope.edit = () => { - Editointikontrollit.startEditing(); - }; - - $scope.openKoodisto = (target, koodisto, isArray) => { - Koodisto.modaali( - koodi => { - const valittu = { - arvo: koodi.koodiArvo, - uri: koodi.koodiUri, - nimi: koodi.nimi, - koodisto: koodi.koodisto.koodistoUri, - versio: koodi.versio - }; - - if (isArray) { - if (!target) { - target = []; - } - target.push(valittu); - } else { - target.koodi = valittu; - } - - // Muutetaan lao nimi - target.nimi = Lokalisointi.merge(target.nimi, koodi.nimi); - }, - { - tyyppi: () => { - return koodisto; // Todo: uusi koodisto hahtuvalla - }, - ylarelaatioTyyppi: () => { - return ""; - }, - tarkista: _.constant(true) - } - )(); - }; - - Editointikontrollit.registerCallback({ - edit: () => { - // Todo: Hae uusin versio - }, - save: async () => { - try { - laajaalaiset = await $scope.laajaalaiset.save(); - $scope.laajaalaiset = laajaalaiset.clone(); - Notifikaatiot.onnistui("tallennus-onnistui"); - } catch (e) { - Notifikaatiot.serverCb(e); - $scope.laajaalaiset = laajaalaiset.clone(); - } - }, - cancel: () => { - $scope.laajaalaiset = laajaalaiset.clone(); - }, - notify: value => { - $scope.editEnabled = value; - } - }); -}) -.controller("Lops2019OppiaineetController", function ( - $scope, - $uibModal, - Api, - Editointikontrollit, - Notifikaatiot, - oppiaineet -) { - $scope.oppiaineet = oppiaineet.clone(); - - $scope.add = async () => { - $uibModal.open({ - template: - '' + - '' + - '' + - '', - controller: function($scope, $uibModalInstance) { - $scope.oppiaine = {}; - $scope.ok = () => { - $uibModalInstance.close($scope.oppiaine); - }; - $scope.cancel = () => { - $uibModalInstance.dismiss('cancel'); - }; - } - }).result.then(async uusi => { - try { - const oppiaine = await $scope.oppiaineet.all("uusi").post(uusi); - $scope.oppiaineet.push(oppiaine); - } catch (e) { - Notifikaatiot.serverCb(e); - } - }); - }; - - $scope.sortableOptions = { - cursor: "move", - cursorAt: { top: 2, left: 2 }, - handle: ".handle", - delay: 100, - tolerance: "pointer", - axis: "y" - }; - - $scope.sort = () => { - Editointikontrollit.startEditing(); - }; - - Editointikontrollit.registerCallback({ - edit: () => { - // Todo: Hae uusin versio - }, - save: async () => { - try { - oppiaineet = await $scope.oppiaineet.post($scope.oppiaineet.plain()); - $scope.oppiaineet = oppiaineet.clone(); - Notifikaatiot.onnistui("tallennus-onnistui"); - } catch (e) { - Notifikaatiot.serverCb(e); - $scope.oppiaineet = oppiaineet.clone(); - } - }, - cancel: () => { - $scope.oppiaineet = oppiaineet.clone(); - }, - notify: value => { - $scope.editEnabled = value; - } - }); -}) -.controller('Lops2019OppiaineController', function ( - $scope, - $state, - $uibModal, - Editointikontrollit, - Varmistusdialogi, - Koodisto, - Notifikaatiot, - oppiaine -) { - $scope.oppiaine = oppiaine.clone(); - $scope.oppiaine.tavoitteet = $scope.oppiaine.tavoitteet || {}; - - $scope.add = (parent, field, obj) => { - if (!_.has(parent, field)) { - parent[field] = []; - } - if (obj) { - parent[field].push(obj); - } else { - parent[field].push({}); - } - }; - - $scope.remove = (target, element) => { - _.remove(target, element); - }; - - $scope.addModuuli = async () => { - $uibModal.open({ - template: - '' + - '' + - '' + - '', - controller: function($scope, $uibModalInstance) { - $scope.moduuli = { - pakollinen: true - }; - $scope.ok = () => { - $uibModalInstance.close($scope.moduuli); - }; - $scope.cancel = () => { - $uibModalInstance.dismiss('cancel'); - }; - } - }).result.then(async moduuli => { - if (!_.has($scope.oppiaine, 'moduulit')) { - $scope.oppiaine['moduulit'] = []; - } - $scope.oppiaine.moduulit.push(moduuli); - }); - }; - - $scope.addOppimaara = async () => { - $uibModal.open({ - template: - '' + - '' + - '' + - '', - controller: function($scope, $uibModalInstance) { - $scope.oppimaara = {}; - $scope.ok = () => { - $uibModalInstance.close($scope.oppimaara); - }; - $scope.cancel = () => { - $uibModalInstance.dismiss('cancel'); - }; - } - }).result.then(async oppimaara => { - if (!_.has($scope.oppiaine, 'oppimaarat')) { - $scope.oppiaine['oppimaarat'] = []; - } - $scope.oppiaine.oppimaarat.push(oppimaara); - }); - }; - - $scope.removeOppiaine = () => { - Varmistusdialogi.dialogi({ - otsikko: "poistetaanko-oppiaine", - primaryBtn: "poista", - successCb: async () => { - try { - await $scope.oppiaine.remove(); - await Editointikontrollit.cancelEditing(); - - if ($scope.oppiaine._oppiaine) { - $state.go("root.perusteprojekti.suoritustapa.lops2019oppiaine", { - oppiaineId: $scope.oppiaine._oppiaine - }); - } else { - $state.go("root.perusteprojekti.suoritustapa.lops2019oppiaineet"); - } - } catch (e) { - Notifikaatiot.serverCb(e); - } - } - })(); - }; - - $scope.sortableOptions = { - cursor: "move", - //cursorAt: { top: 2, left: 2 }, - handle: ".handle", - delay: 100, - tolerance: "pointer", - axis: "y" - }; - - $scope.edit = () => { - Editointikontrollit.startEditing(); - }; - - $scope.openKoodisto = (target, koodisto, isArray) => { - Koodisto.modaali( - koodi => { - const valittu = { - arvo: koodi.koodiArvo, - uri: koodi.koodiUri, - nimi: koodi.nimi, - koodisto: koodi.koodisto.koodistoUri, - versio: koodi.versio - }; - - if (isArray) { - if (!target) { - target = []; - } - target.push(valittu); - } else { - target.koodi = valittu; - } - - // Muutetaan oppiaineen nimi - target.nimi = Lokalisointi.merge(target.nimi, koodi.nimi); - }, - { - tyyppi: () => { - return koodisto; // Todo: uusi koodisto hahtuvalla - }, - ylarelaatioTyyppi: () => { - return ""; - }, - tarkista: _.constant(true) - } - )(); - }; - - Editointikontrollit.registerCallback({ - edit: () => { - // Todo: Hae uusin versio - }, - save: async () => { - try { - oppiaine = await $scope.oppiaine.save(); - $scope.oppiaine = oppiaine.clone(); - $scope.oppiaine.tavoitteet = $scope.oppiaine.tavoitteet || {}; - Notifikaatiot.onnistui("tallennus-onnistui"); - } catch (e) { - Notifikaatiot.serverCb(e); - $scope.oppiaine = oppiaine.clone(); - $scope.oppiaine.tavoitteet = $scope.oppiaine.tavoitteet || {}; - } - }, - cancel: () => { - $scope.oppiaine = oppiaine.clone(); - $scope.oppiaine.tavoitteet = $scope.oppiaine.tavoitteet || {}; - }, - notify: value => { - $scope.editEnabled = value; - } - }); -}) -.controller("Lops2019ModuuliController", function ( - $scope, - $state, - $stateParams, - Editointikontrollit, - Varmistusdialogi, - Koodisto, - Notifikaatiot, - moduuli -) { - $scope.moduuli = moduuli.clone(); - $scope.moduuli.tavoitteet = $scope.moduuli.tavoitteet || {}; - - $scope.edit = () => { - Editointikontrollit.startEditing(); - }; - - $scope.add = (parent, field, obj) => { - if (!_.has(parent, field) || !parent[field]) { - parent[field] = []; - } - - if (obj) { - parent[field].push(obj); - } else { - parent[field].push({}); - } - }; - - $scope.remove = (target, el) => { - _.remove(target, el); - }; - - $scope.removeModuuli = () => { - Varmistusdialogi.dialogi({ - otsikko: "poistetaanko-moduuli", - primaryBtn: "poista", - successCb: async () => { - try { - await $scope.moduuli.remove(); - await Editointikontrollit.cancelEditing(); - $state.go("root.perusteprojekti.suoritustapa.lops2019oppiaine", { - oppiaineId: $stateParams.oppiaineId - }); - } catch (e) { - Notifikaatiot.serverCb(e); - } - } - })(); - }; - - $scope.openKoodisto = (target, koodisto) => { - Koodisto.modaali( - koodi => { - target.koodi = { - arvo: koodi.koodiArvo, - uri: koodi.koodiUri, - nimi: koodi.nimi, - koodisto: koodi.koodisto.koodistoUri, - versio: koodi.versio - }; - - // Muutetaan moduulin nimi - target.nimi = Lokalisointi.merge(target.nimi, koodi.nimi); - }, - { - tyyppi: () => { - return koodisto; // Todo: uusi koodisto hahtuvalla - }, - ylarelaatioTyyppi: () => { - return ""; - }, - tarkista: _.constant(true) - } - )(); - }; - - Editointikontrollit.registerCallback({ - edit: () => { - // Todo: Hae uusin versio - }, - save: async () => { - try { - moduuli = await $scope.moduuli.save(); - $scope.moduuli = moduuli.clone(); - $scope.moduuli.tavoitteet = $scope.moduuli.tavoitteet || {}; - Notifikaatiot.onnistui("tallennus-onnistui"); - } catch (e) { - Notifikaatiot.serverCb(e); - $scope.moduuli = moduuli.clone(); - $scope.moduuli.tavoitteet = $scope.moduuli.tavoitteet || {}; - } - }, - cancel: () => { - $scope.moduuli = moduuli.clone(); - $scope.moduuli.tavoitteet = $scope.moduuli.tavoitteet || {}; - }, - notify: value => { - $scope.editEnabled = value; - } - }); -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/lukiokoulutus.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/lukiokoulutus.ts deleted file mode 100644 index 4c829cf58e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/lukiokoulutus.ts +++ /dev/null @@ -1,1071 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -interface PaginationDetails { - currentPage: number; - showPerPage: number; - total?: number; - multiPage?: boolean; - changePage: (to: number) => void; -} - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("LukiokoulutussisaltoController", function( - $scope, - perusteprojektiTiedot, - Algoritmit, - $state, - SuoritustavanSisalto, - LukioKurssiService, - LukiokoulutusService, - TekstikappaleOperations, - Editointikontrollit, - $stateParams, - Notifikaatiot, - Utils, - YleinenData - ) { - $scope.projekti = perusteprojektiTiedot.getProjekti(); - $scope.peruste = perusteprojektiTiedot.getPeruste(); - - // FIXME - // Jossain kohtaan tehdään uudelleenohjaus yleinendata sisalto tunnisteen avulla lukiosisalto sisältöön. - if ($scope.peruste.toteutus === 'lops2019') { - $state.go("root.perusteprojekti.suoritustapa.lops2019"); - } - - TekstikappaleOperations.setPeruste($scope.peruste); - $scope.rajaus = ""; - - $scope.tuoSisalto = SuoritustavanSisalto.tuoSisalto(); - $scope.esitysurl = YleinenData.getPerusteEsikatseluLink($scope.projekti, $scope.peruste); - - // FIXME - $scope.$watch( - "peruste.sisalto", - function() { - if (!_.isEmpty($scope.peruste.sisalto)) { - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function() { - $state.href("root.perusteprojekti.suoritustapa.lukioosat", { - osanTyyppi: "osaaminen" - }); - }); - } - }, - true - ); - - $scope.datat = { - opetus: { lapset: [] }, - sisalto: perusteprojektiTiedot.getYlTiedot().sisalto - }; - - // FIXME - $scope.$watch( - "datat.opetus.lapset", - function() { - _.each($scope.datat.opetus.lapset, function(area) { - area.$type = "ep-parts"; - area.$url = $state.href("root.perusteprojekti.suoritustapa.lukioosat", { osanTyyppi: area.tyyppi }); - - area.$orderFn = Utils.nameSort; - - Algoritmit.kaikilleLapsisolmuille(area, "lapset", function(lapsi) { - lapsi.$url = $state.href("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanTyyppi: area.tyyppi, - osanId: lapsi.id, - tabId: 0 - }); - if (lapsi.koosteinen) { - lapsi.lapset = _.sortBy(lapsi.oppimaarat, Utils.nameSort); - } - }); - }); - }, - true - ); - - // FIXME - $scope.$watch( - "peruste.sisalto", - function() { - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - switch (lapsi.perusteenOsa.osanTyyppi) { - case "tekstikappale": - lapsi.$url = $state.href("root.perusteprojekti.suoritustapa.tekstikappale", { - suoritustapa: "lukiokoulutus", - perusteenOsaViiteId: lapsi.id, - versio: "" - }); - break; - case "opetuksenyleisettavoitteet": - lapsi.$url = $state.href("root.perusteprojekti.suoritustapa.lukioosat", { - osanTyyppi: "opetuksen_yleiset_tavoitteet" - }); - break; - case "aihekokonaisuudet": - lapsi.$url = $state.href("root.perusteprojekti.suoritustapa.lukioosat", { - osanTyyppi: "aihekokonaisuudet" - }); - break; - case "lukioopetussuunnitelmarakenne": - lapsi.$url = $state.href("root.perusteprojekti.suoritustapa.lukioosat", { - osanTyyppi: "oppiaineet_oppimaarat" - }); - break; - } - }); - }, - true - ); - - // TODO käytä samaa APIa kuin sivunavissa, koko sisältöpuu kerralla - _.each(LukiokoulutusService.sisallot, function(item) { - var data = { - nimi: item.label, - tyyppi: item.tyyppi, - lapset: [] - }; - LukiokoulutusService.getOsat(item.tyyppi, true).then(function(res) { - data.lapset = res; - }); - $scope.datat.opetus.lapset.push(data); - }); - $scope.peruste.sisalto = $scope.datat.sisalto; - - $scope.rajaaSisaltoa = function(value) { - if (_.isUndefined(value)) { - return; - } - var sisaltoFilterer = function(osa, lapsellaOn) { - osa.$filtered = lapsellaOn || Algoritmit.rajausVertailu(value, osa, "perusteenOsa", "nimi"); - return osa.$filtered; - }; - var filterer = function(osa, lapsellaOn) { - osa.$filtered = lapsellaOn || Algoritmit.rajausVertailu(value, osa, "nimi"); - return osa.$filtered; - }; - Algoritmit.kaikilleTutkintokohtaisilleOsille($scope.datat.opetus, filterer); - Algoritmit.kaikilleTutkintokohtaisilleOsille($scope.datat.sisalto, sisaltoFilterer); - }; - - $scope.avaaSuljeKaikki = function(value) { - var open = _.isUndefined(value) ? false : !value; - if (_.isUndefined(value)) { - Algoritmit.kaikilleLapsisolmuille($scope.datat.opetus, "lapset", function(lapsi) { - open = open || lapsi.$opened; - }); - } - Algoritmit.kaikilleLapsisolmuille($scope.datat.opetus, "lapset", function(lapsi) { - lapsi.$opened = !open; - }); - }; - - $scope.addTekstikappale = function() { - TekstikappaleOperations.add(); - }; - - $scope.edit = function() { - Editointikontrollit.startEditing(); - }; - - Editointikontrollit.registerCallback({ - edit: function() { - $scope.rajaus = ""; - $scope.avaaSuljeKaikki(true); - }, - save: function() { - TekstikappaleOperations.updateViitteet($scope.peruste.sisalto, function() { - Notifikaatiot.onnistui("osien-rakenteen-päivitys-onnistui"); - }); - }, - cancel: function() { - $state.go($state.current.name, $stateParams, { - reload: true - }); - }, - validate: function() { - return true; - }, - notify: function(value) { - $scope.editing = value; - } - }); - }) - .controller("LukioOsalistausController", function( - $scope, - $state, - $stateParams, - LukiokoulutusService, - $log, - virheService - ) { - $scope.sisaltoState = _.find(LukiokoulutusService.sisallot, { tyyppi: $stateParams.osanTyyppi }); - if (!$scope.sisaltoState) { - $log.error("LukioOsalistausController osaTyyppi: " + $stateParams.osanTyyppi); - virheService.virhe("virhe-sivua-ei-löytynyt"); - return; - } - - $scope.kurssit = []; - $scope.aihekokonaisuudet = []; - $scope.osaAlueet = []; - $scope.isOppiaineet = function() { - return $stateParams.osanTyyppi === LukiokoulutusService.OPPIAINEET_OPPIMAARAT; - }; - - $scope.isAihekokonaisuus = function() { - return $stateParams.osanTyyppi === LukiokoulutusService.AIHEKOKONAISUUDET; - }; - - $scope.isOpetuksenTavoitteet = function() { - return $stateParams.osanTyyppi === LukiokoulutusService.OPETUKSEN_YLEISET_TAVOITTEET; - }; - - $scope.isPerusOsalistaus = function() { - return !$scope.isOppiaineet() && !$scope.isOpetuksenTavoitteet() && !$scope.isAihekokonaisuus(); - }; - - if (!$scope.isOppiaineet()) { - LukiokoulutusService.getOsat($stateParams.osanTyyppi).then(function(res) { - $scope.osaAlueet = res; - }); - } - $scope.options = {}; - - $scope.createUrl = function(value) { - if ($stateParams.osanTyyppi === LukiokoulutusService.KURSSIT) { - return $state.href("root.perusteprojekti.suoritustapa.kurssi", { - kurssiId: value.id - }); - } - return $state.href("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanTyyppi: $stateParams.osanTyyppi, - osanId: value.id, - tabId: 0 - }); - }; - - $scope.add = function() { - if ($stateParams.osanTyyppi === LukiokoulutusService.KURSSIT) { - $state.go("root.perusteprojekti.suoritustapa.lisaaLukioKurssi"); - return; - } - $state.go("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanTyyppi: $stateParams.osanTyyppi, - osanId: "uusi", - tabId: 0 - }); - }; - }) - .controller("LukioOsaAlueController", function( - $scope, - $q, - $stateParams, - LukiokoulutusService, - ProjektinMurupolkuService, - Kommentit, - KommentitByPerusteenOsa - ) { - $scope.isOppiaine = $stateParams.osanTyyppi === LukiokoulutusService.OPPIAINEET_OPPIMAARAT; - if ($stateParams.osanId !== "uusi") { - Kommentit.haeKommentit(KommentitByPerusteenOsa, { - id: $stateParams.perusteProjektiId, - perusteenOsaId: $stateParams.osanId - }); - } - $scope.isAihekokonaisuus = $stateParams.osanTyyppi === LukiokoulutusService.AIHEKOKONAISUUDET; - $scope.versiot = { latest: true }; - $scope.dataObject = LukiokoulutusService.getOsa($stateParams); - var labels = _.invert(LukiokoulutusService.LABELS); - ProjektinMurupolkuService.set("osanTyyppi", $stateParams.osanTyyppi, labels[$stateParams.osanTyyppi]); - $scope.dataObject.then(function(res) { - ProjektinMurupolkuService.set("osanId", $stateParams.osanId, res.nimi); - }); - }) - .directive("lukioOppiaineet", function() { - return { - template: require("views/directives/lukiokoulutus/oppiaineet.html"), - restrict: "E", - scope: {}, - controller: "LukioOppiaineKurssiPuuController" - }; - }) - .controller("LukioOppiaineKurssiPuuController", function( - $scope, - $stateParams, - $q, - $translate, - Kaanna, - Kieli, - $rootScope, - $timeout, - $log, - Lukitus, - Notifikaatiot, - LukioKurssiService, - LukiokoulutusService, - VersionHelper, - $state, - Editointikontrollit, - Kommentit, - KommentitBySuoritustapa - ) { - $scope.osanTyyppi = $stateParams.osanTyyppi; - Kommentit.haeKommentit(KommentitBySuoritustapa, { - id: $stateParams.perusteProjektiId, - suoritustapa: $scope.osanTyyppi - }); - $scope.treehelpers = { - haku: "", - liittamattomienHaku: "", - liitettyjenHaku: "", - defaultCollapsed: false, - editMode: false - }; - - const collapseFun = defaultCollapse => n => { - if ($scope.treehelpers.editMode) { - return defaultCollapse ? !(n.dtype == "oppiaine" && n.koosteinen) : false; - } else { - return defaultCollapse; - } - }; - - const isHidden = node => !node || node.$$hide || (node.$$nodeParent && node.$$nodeParent.$$collapsed); - - const getChildren = node => { - if (node) { - return node.lapset || []; - } - return []; - }; - - $scope.treeRoot = { - id: -1, - jnro: 1, - root: true, - $$collapsed: false, - nimi: "Juuri", - oppimaarat: [], - kurssit: [], - lapset: [] - }; - - $scope.dontFixVersiot = true; - $scope.versiot = { latest: true }; - - $scope.haeVersiot = function(force, cb) { - VersionHelper.getLukioRakenneVersions($scope.versiot, null, force, cb); - }; - - $scope.vaihdaVersio = function(v) { - $scope.versiot.hasChanged = true; - if ($scope.versiot.chosen) { - VersionHelper.setUrl($scope.versiot); - } - }; - - $scope.revertCb = function(response) { - Lukitus.vapauta(); - $scope.haeVersiot(true, function(versiot) { - $scope.versiot.chosen = versiot[0]; - $scope.versiot.latest = true; - }); - Notifikaatiot.onnistui("lukiorakenne-palautettu"); - }; - - $scope.rakenne = null; - $scope.versio = $stateParams.versio ? $stateParams.versio.replace("/", "") : null; - var versioCallback = null, - rakenneDefer = null, - rakenneProvider = null, - kurssitProvider = null; - if ($scope.versio) { - rakenneDefer = $q.defer(); - var kurssiDefer = $q.defer(); - rakenneProvider = rakenneDefer.promise; - kurssitProvider = kurssiDefer.promise; - versioCallback = function(versiot) { - var versionInt = parseInt($scope.versio, 10); - $scope.versiot.chosen = versiot[versiot.length - versionInt]; - $scope.versiot.latest = versionInt == versiot.length; - LukioKurssiService.getRakenneVersion($scope.versiot.chosen.numero, function(rakenne) { - rakenneDefer.resolve(rakenne); - kurssiDefer.resolve(rakenne.kurssit); - }); - }; - } else { - kurssitProvider = LukioKurssiService.listByPeruste(LukiokoulutusService.getPerusteId()); - } - $scope.haeVersiot(true, versioCallback); - - function textMatch(txt, to) { - if (!to) { - return true; - } - if (!txt.length) { - return false; - } - var words = to.toLowerCase().split(/ /); - var found = {}; - for (var part in txt) { - if (!txt[part]) { - continue; - } - var lower = txt[part].toLowerCase(); - for (var i in words) { - if (words[i] && lower.indexOf(words[i]) !== -1) { - found[i] = true; - } - } - } - for (var j = 0; j < words.length; ++j) { - if (!found[j]) { - return false; - } - } - return true; - } - function matchesHaku(node, haku) { - if (!haku) { - return true; - } - var nimi = node.nimi, - koodiArvo = node.koodiArvo, - lokalisoituKoodi = Kaanna.kaanna(node.lokalisoituKoodi); - if (_.isObject(node.nimi)) { - nimi = nimi[Kieli.getSisaltokieli().toLowerCase()]; - } - return textMatch([nimi, koodiArvo, lokalisoituKoodi], haku); - } - function parents(node, fn) { - node = node.$$nodeParent; - while (node) { - fn(node); - node = node.$$nodeParent; - } - } - function traverse(node, extractor, fn, parent?) { - if (_.isArray(node)) { - _.each(node, function(i) { - traverse(i, extractor, fn, parent); - }); - } else if (node) { - fn(node, parent); - _.each(extractor(node), function(c) { - traverse(c, extractor, fn, node); - }); - } - } - function traverseTree(fn) { - if (fn) { - traverse($scope.treeRoot, _.property("lapset"), fn); - } - } - function piilotaHaunPerusteella(haku) { - return function(item) { - item.$$hide = !matchesHaku(item, haku); - if (!item.$$hide) { - parents(item, function(i) { - i.$$hide = false; - }); - } - }; - } - $scope.treeHaku = function() { - $timeout(function() { - traverseTree(piilotaHaunPerusteella($scope.treehelpers.haku)); - initIndexes(); - }); - }; - $scope.treeLiittamattomienHaku = function() { - $timeout(function() { - _.each($scope.liittamattomatKurssit, piilotaHaunPerusteella($scope.treehelpers.liittamattomienHaku)); - initIndexes(); - }); - }; - - $scope.treeLiitettyjenHaku = function() { - $timeout(function() { - _.each($scope.liitetytKurssit, piilotaHaunPerusteella($scope.treehelpers.liitettyjenHaku)); - initIndexes(); - }); - }; - - var handleMove = function(e, ui, cb) { - var dropTarget = ui.item.sortable.droptarget; - if (dropTarget) { - var listItem = dropTarget.closest(".recursivetree"); - var parentScope = listItem ? listItem.scope() : null; - if (parentScope && parentScope.node) { - cb(ui.item.sortable.model, parentScope.node); - } else { - cb(ui.item.sortable.model, $scope.treeRoot); - } - } - }; - var acceptMove = function(node, to) { - if (!node) { - return false; - } - - var exists = false; - - //Tarkistetaan, että onko kurssi jo kyseisen oppiaineen/oppimäärän kurssi, mikäli ei siirretä oppiaineen/oppimäärän sisällä. - // Jos on jo, siirtoa ei sallita. - if ( - node.dtype === "kurssi" && - to.dtype === "oppiaine" && - !to.root && - !to.koosteinen && - (_.isUndefined(node.$$nodeParent) || node.$$nodeParent.id !== to.id) - ) { - _.each(to.kurssit, function(kurssi) { - if (kurssi.id === node.id) { - exists = true; - } - }); - } - - return ( - ((node.dtype === "oppiaine" && to.root && !node.$$nodeParent) || - (node.dtype === "oppiaine" && - to.dtype === "oppiaine" && - to.koosteinen && - !node.koosteinen && - node.$$nodeParent) || - (node.dtype === "kurssi" && to.dtype === "oppiaine" && !to.root && !to.koosteinen)) && - !exists - ); - }; - - var initIndexes = function() { - updateIndexs($scope.liittamattomatKurssit, $scope.liittamattomatKurssitPagination); - updateIndexs($scope.liitetytKurssit, $scope.liitetytKurssitPagination); - }; - var updateIndexs = function(arr, pagination: PaginationDetails) { - var i = 0, - startIndex, - endIndex; - if (pagination) { - startIndex = (pagination.currentPage - 1) * pagination.showPerPage; - endIndex = startIndex + pagination.showPerPage - 1; - } - _.each(arr, function(item) { - item.$$index = i; - item.$$pagingShow = true; - if (pagination) { - item.$$pagingShow = item.$$index >= startIndex && item.$$index <= endIndex; - } - if (!item.$$hide) { - i++; - } - }); - initPages(arr, pagination); - }; - var changePage = function(arr, pagination: PaginationDetails, to: number): void { - pagination.currentPage = to; - updateIndexs(arr, pagination); - }; - var countNotHidden = function(arr): number { - var count: number = 0; - _.each(arr, function(item) { - if (!item.$$hide) { - count++; - } - }); - return count; - }; - var initPages = function(arr, pagination: PaginationDetails): void { - if (!pagination.currentPage || pagination.currentPage < 0) { - pagination.currentPage = 1; - } - if (!pagination.showPerPage || pagination.showPerPage < 0) { - pagination.showPerPage = 10; - } - if (!pagination.changePage) { - pagination.changePage = function(pageNum: number) { - changePage(arr, pagination, pageNum); - }; - } - pagination.total = countNotHidden(arr); - pagination.multiPage = pagination.total > pagination.showPerPage; - if (pagination.total > 0 && pagination.total <= (pagination.currentPage - 1) * pagination.showPerPage) { - changePage(arr, pagination, pagination.currentPage - 1); - } - }; - var moved = function(node, to, index) { - if (node.dtype === "kurssi" && to.dtype === "oppiaine") { - var from = node.$$nodeParent; - node.oppiaineet.push({ - oppiaineId: to.id, - nimi: to.nimi, - jarjestys: index - }); - if (from) { - _.remove(node.oppiaineet, function(oa: any) { - return oa.oppiaineId === from.id; - }); - _.remove(from.kurssit, node); - } else { - $scope.liitetytKurssit.push(_.cloneDeep(node)); - } - to.kurssit.push(node); - } - initIndexes(); - }; - var removeKurssiFromOppiaine = function(node) { - $rootScope.$broadcast("genericTree:beforeChange"); - var oppiaine = node.$$nodeParent; - node.oppiaineet = _.filter(node.oppiaineet, function(oa: any) { - return oa.oppiaineId !== oppiaine.id; - }); - _.remove(oppiaine.kurssit, node); - _.remove(oppiaine.lapset, node); - var foundInTree = false, - inLiittamattomat = _.filter($scope.liittamattomatKurssit, function(liittamaton: any) { - return liittamaton.id == node.id; - }); - traverseTree(function(c) { - if (c.dtype == "kurssi" && c.id == node.id) { - foundInTree = true; - } - }); - if (!foundInTree && _.isEmpty(inLiittamattomat)) { - $scope.liittamattomatKurssit.push(node); - _.remove($scope.liitetytKurssit, function(liitetty: any) { - return liitetty.id == node.id; - }); - } - initIndexes(); - $timeout(() => { - $rootScope.$broadcast("genericTree:afterChange"); - }); - }; - - $scope.oppiaineet = []; - $scope.kurssit = []; - $scope.liittamattomatKurssit = []; - $scope.liittamattomatKurssitPagination = { showPerPage: 5, currentPage: 1 }; - $scope.liitetytKurssit = []; - $scope.liitetytKurssitPagination = { showPerPage: 5, currentPage: 1 }; - - $scope.gotoNode = function(node) { - if (node.dtype === "kurssi" || !node.dtype) { - return $state.go("root.perusteprojekti.suoritustapa.kurssi", { - kurssiId: node.id - }); - } else if (node.dtype === "oppiaine") { - $state.go("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanId: node.id, - osanTyyppi: "oppiaineet_oppimaarat", - tabId: 0 - }); - } - }; - $scope.nodeHref = function(node) { - if (node.dtype === "kurssi" || !node.dtype) { - return $state.href("root.perusteprojekti.suoritustapa.kurssi", { - kurssiId: node.id - }); - } else if (node.dtype === "oppiaine") { - return $state.href("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanId: node.id, - osanTyyppi: "oppiaineet_oppimaarat", - tabId: 0 - }); - } - return null; - }; - var setCollapseForAll = function(collapse) { - traverseTree(function(node) { - if (collapse instanceof Function) { - node.$$collapsed = collapse(node); - } else { - node.$$collapsed = collapse; - } - }); - }; - $scope.togglaaPolut = function() { - $scope.treehelpers.defaultCollapsed = !$scope.treehelpers.defaultCollapsed; - setCollapseForAll(collapseFun($scope.treehelpers.defaultCollapsed)); - }; - - $scope.kurssiTreeConfig = { - placeholder: "placeholder", - handle: ".treehandle", - cursorAt: { top: 5, left: 5 }, - update: function(e, ui) { - handleMove(e, ui, function(from, to) { - if (acceptMove(from, to)) { - moved(from, to, ui.item.sortable.index); - } else { - if (!angular.element(ui.item.context).hasClass("liittamaton-kurssi")) { - ui.item.sortable.cancel(); - } - } - }); - }, - change: function(e, ui) { - var dropTarget = e.target, - listItem = angular.element(dropTarget).closest(".recursivetree"), - parentScope = listItem ? listItem.scope() : null; - if (parentScope && parentScope.node) { - if (acceptMove(ui.item.sortable.model, parentScope.node)) { - angular.element(dropTarget).addClass("is-draggable-into"); - } else { - angular.element(dropTarget).removeClass("is-draggable-into"); - } - } - } - }; - - $scope.liittamattomatKurssitConfig = { - placeholder: "placeholder", - handle: ".treehandle", - cursorAt: { top: 2, left: 2 }, - update: function(e, ui) { - handleMove(e, ui, function(from, to) { - if (!acceptMove(from, to)) { - ui.item.sortable.cancel(); - } else { - moved(from, to, ui.item.sortable.index); - } - }); - } - }; - - $scope.liitetytKurssitConfig = { - placeholder: "placeholder", - handle: ".treehandle", - cursorAt: { top: 2, left: 2 }, - update: function(e, ui) { - handleMove(e, ui, function(from, to) { - if (!acceptMove(from, to)) { - ui.item.sortable.cancel(); - } else { - moved(from, to, ui.item.sortable.index); - } - }); - } - }; - - var initTree = function() { - var oppiaineet = _.cloneDeep($scope.oppiaineet), - kurssit = _.cloneDeep($scope.kurssit); - $scope.treeRoot.kurssit = []; - $scope.treeRoot.oppimaarat = oppiaineet; - _.each(oppiaineet, function(oppiaine) { - oppiaine.dtype = "oppiaine"; - oppiaine.lapset = []; - oppiaine.$$href = $scope.nodeHref(oppiaine); - }); - _.each(kurssit, function(kurssi) { - kurssi.$$hide = false; - kurssi.$$collapsed = $scope.treehelpers.defaultCollapsed; - kurssi.dtype = "kurssi"; - kurssi.lapset = []; - kurssi.$$href = $scope.nodeHref(kurssi); - }); - $scope.treeRoot.lapset = _.union($scope.treeRoot.oppimaarat, $scope.treeRoot.kurssit); - traverse($scope.treeRoot, _.property("lapset"), function(node) { - node.$$hide = false; - node.$$collapsed = $scope.treehelpers.defaultCollapsed; - node.dtype = !node.oppiaineet ? "oppiaine" : "kurssi"; - if (node.dtype === "oppiaine") { - node.kurssit = LukioKurssiService.filterOrderedKurssisByOppiaine(kurssit, function(oa) { - return oa.oppiaineId === node.id; - }); - } - node.lapset = _.union(_.sortBy(node.oppimaarat || [], _.property("jnro")), node.kurssit || []); - }); - }; - - var updateEditMode = function(editMode) { - $scope.treehelpers.editMode = editMode; - $rootScope.$broadcast("genericTree:refresh"); - }; - - Editointikontrollit.registerCallback({ - edit: function() { - $scope.treehelpers.defaultCollapsed = true; - updateEditMode(true); - setCollapseForAll(collapseFun($scope.treehelpers.defaultCollapsed)); - }, - save: function(kommentti) { - LukioKurssiService.updateOppiaineKurssiStructure( - $scope.treeRoot, - $scope.liittamattomatKurssit, - kommentti - ).then($state.reload); - }, - cancel: function() { - Lukitus.vapauta().then($state.reload); - }, - validate: function() { - return true; - }, - notify: function() {} - }); - - $scope.toEditMode = function() { - Lukitus.lukitseLukiorakenne().then(function() { - Editointikontrollit.startEditing(); - }); - }; - - function treehandleTemplate() { - return $scope.treehelpers.editMode ? '' : ""; - } - function timestampTemplate() { - return ""; - // return !$scope.treehelpers.editMode ? '' : ''; - } - function kurssiColorbox() { - return ' '; - } - function kurssiName() { - var name = - ""; - if (!$scope.treehelpers.editMode) { - name = '' + name + ""; - } - return name; - } - - $scope.treeOsatProvider = $q(function(resolve) { - var templateAround = function(tmpl) { - return ( - '
    " + - tmpl + - "
    " - ); - }; - - resolve({ - root: function() { - return $q(function(resolveRoot) { - if (rakenneProvider) { - rakenneProvider.then(function(rakenne) { - $scope.kurssit = rakenne.kurssit; - $scope.oppiaineet = rakenne.oppiaineet; - initTree(); - }); - } else { - LukiokoulutusService.getOsat($stateParams.osanTyyppi).then(function(oppiaineet) { - kurssitProvider.then(function(kurssit) { - $scope.kurssit = kurssit; - $scope.oppiaineet = oppiaineet; - initTree(); - resolveRoot($scope.treeRoot); - }); - }); - } - }); - }, - children: getChildren, - hidden: isHidden, - template: n => { - var handle = treehandleTemplate(), - collapse = - !$scope.treehelpers.editMode || n.dtype === "oppiaine" - ? '' + - ' ' + - ' ' + - "" - : "", - editTime = timestampTemplate(), - icon = ""; - if (n.dtype === "kurssi") { - var remove = $scope.treehelpers.editMode - ? ' ' - : "", - name = kurssiName(); - return templateAround( - '
    ' + - handle + - kurssiColorbox() + - editTime + - '
    ' + - name + - "
    " + - remove + - "
    " - ); - } else { - var name = "{{ node.nimi | kaanna }}"; - if (!$scope.treehelpers.editMode) { - name = '' + name + ""; - } - return templateAround( - '
    ' + - handle + - collapse + - icon + - editTime + - '
    ' + - "" + - name + - "
    " - ); - } - }, - extension: function(node, scope) { - scope.toggle = function(node) { - node.$$collapsed = !node.$$collapsed; - }; - scope.removeKurssiFromOppiaine = function(node) { - return removeKurssiFromOppiaine(node); - }; - scope.goto = function(node) { - $scope.gotoNode(node); - }; - }, - useUiSortable: function() { - return !$scope.treehelpers.editMode; - } - }); - }); - - $scope.liittamattomatOsatProvider = $q(function(resolve) { - var templateAround = function(tmpl) { - return ( - '
    ' + - tmpl + - "
    " - ); - }; - resolve({ - root: function() { - return $q(function(resolveRoot) { - kurssitProvider.then(function(kurssit) { - $scope.liittamattomatKurssit = _.cloneDeep( - _.filter(kurssit, function(k: any) { - return k.oppiaineet.length === 0; - }) - ); - _.each($scope.liittamattomatKurssit, function(kurssi) { - kurssi.dtype = "kurssi"; - kurssi.$$href = $scope.nodeHref(kurssi); - }); - resolveRoot({ - lapset: $scope.liittamattomatKurssit - }); - updateIndexs($scope.liittamattomatKurssit, $scope.liittamattomatKurssitPagination); - }); - }); - }, - children: getChildren, - hidden: isHidden, - template: function(n) { - return templateAround( - '
    ' + - treehandleTemplate() + - kurssiColorbox() + - timestampTemplate() + - '
    ' + - kurssiName() + - "
    " + - "
    " - ); - }, - useUiSortable: function() { - return !$scope.treehelpers.editMode; - }, - extension: function(node, scope) { - scope.goto = function(node) { - $scope.gotoNode(node); - }; - } - }); - }); - - $scope.liitetytOsatProvider = $q(function(resolve) { - var templateAround = function(tmpl) { - return ( - '
    ' + - tmpl + - "
    " - ); - }; - resolve({ - root: function() { - return $q(function(resolveRoot) { - kurssitProvider.then(function(kurssit) { - $scope.liitetytKurssit = _.cloneDeep( - _.filter(kurssit, function(k: any) { - return k.oppiaineet.length != 0; - }) - ); - _.each($scope.liitetytKurssit, function(kurssi) { - kurssi.dtype = "kurssi"; - kurssi.$$href = $scope.nodeHref(kurssi); - }); - resolveRoot({ - lapset: $scope.liitetytKurssit - }); - updateIndexs($scope.liitetytKurssit, $scope.liitetytKurssitPagination); - }); - }); - }, - children: getChildren, - hidden: isHidden, - template: function(n) { - return templateAround( - '
    ' + - treehandleTemplate() + - kurssiColorbox() + - timestampTemplate() + - '
    ' + - kurssiName() + - "
    " + - "
    " - ); - }, - useUiSortable: function() { - return !$scope.treehelpers.editMode; - }, - extension: function(node, scope) { - scope.goto = function(node) { - $scope.gotoNode(node); - }; - } - }); - }); - - $scope.addOppiaine = function() { - $state.go("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanId: "uusi", - osanTyyppi: "oppiaineet_oppimaarat", - tabId: 0, - editEnabled: true - }); - }; - $scope.addKurssi = function() { - $state.go("root.perusteprojekti.suoritustapa.lisaaLukioKurssi"); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/aikakatko.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/aikakatko.ts deleted file mode 100644 index 351cd95f29..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/aikakatko.ts +++ /dev/null @@ -1,11 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").controller("AikakatkoDialogiCtrl", function($scope, $uibModalInstance) { - $scope.ok = function() { - $uibModalInstance.close(); - }; - $scope.peruuta = function() { - $uibModalInstance.dismiss(); - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/ilmoitusdialogi.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/ilmoitusdialogi.ts deleted file mode 100644 index e6d14b43b1..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/ilmoitusdialogi.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL, Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").controller("IlmoitusdialogiCtrl", function($scope, $uibModalInstance, sisalto) { - $scope.sisalto = sisalto; - $scope.ok = $uibModalInstance.close; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/muodostumisryhma.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/muodostumisryhma.ts deleted file mode 100644 index 9028833f36..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/muodostumisryhma.ts +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("MuodostumisryhmaModalCtrl", function( - $scope, - $uibModalInstance, - ryhma, - vanhempi, - suoritustapa, - leikelauta, - Varmistusdialogi, - YleinenData, - Koodisto, - Utils, - peruste - ) { - $scope.vanhempi = vanhempi; - $scope.leikelauta = leikelauta; - $scope.suoritustapa = suoritustapa; - $scope.osaamisalat = [{}, ..._.map(peruste.osaamisalat, (oa: any) => { - return { - osaamisalakoodiArvo: oa.arvo, - osaamisalakoodiUri: oa.uri, - nimi: oa.nimi - }; - })]; - - if (!_.isEmpty(peruste.tutkintonimikkeet)) { - $scope.tutkintonimikkeet = _(peruste.tutkintonimikkeet) - // .filter(nimike => !nimike.osaamisalaUri && !nimike.tutkinnonOsaUri) - .value(); - } - - $scope.roolit = _(YleinenData.rakenneRyhmaRoolit) - .map((rooli) => ({ value: rooli, label: rooli })) - .reject(rooli => _.size($scope.tutkintonimikkeet) < 2 && rooli.value === "tutkintonimike") - .value(); - - $scope.luonti = !_.isObject(ryhma); - - function tyhjennaRyhma() { - $scope.ryhma.osaamisala = null; - $scope.ryhma.rooli = "maaritelty"; - $scope.ryhma.tutkintonimike = null; - } - - $scope.Tutkintonimike = { - valitse: function(nimike) { - if (!nimike) { - tyhjennaRyhma(); - } - else { - $scope.ryhma.osaamisala = null; - $scope.ryhma.rooli = "tutkintonimike"; - $scope.ryhma.tutkintonimike = { - id: nimike.id, - koodisto: "tutkintonimikkeet", - uri: nimike.tutkintonimikeUri, - versio: null - }; - if (nimike && nimike.nimi) { - $scope.ryhma.nimi = _.cloneDeep(nimike.nimi); - } - } - } - }; - - $scope.Osaamisala = { - valitse: function(oa) { - if (!oa) { - tyhjennaRyhma(); - } - else { - $scope.ryhma.tutkintonimike = null; - $scope.ryhma.rooli = "osaamisala"; - $scope.ryhma.osaamisala = oa; - - if (oa && oa.nimi) { - $scope.ryhma.nimi = _.cloneDeep(oa.nimi); - } - } - } - }; - - (function setupRyhma() { - $scope.ryhma = ryhma ? angular.copy(ryhma) : {}; - $scope.ryhma.rooli = $scope.ryhma.rooli || YleinenData.rakenneRyhmaRoolit[0]; - $scope.ryhma.osaamisala = - ryhma && ryhma.osaamisala && ryhma.osaamisala.osaamisalakoodiUri ? ryhma.osaamisala : null; - if (!$scope.ryhma.nimi) { - $scope.ryhma.nimi = {}; - } - if (!$scope.ryhma.kuvaus) { - $scope.ryhma.kuvaus = {}; - } - $scope.ryhma.pakollinen = ryhma && ryhma.pakollinen ? ryhma.pakollinen : false; - })(); - - $scope.lisaaTutkintoKoodi = Koodisto.modaali( - function(koodi) { - $scope.ryhma.vieras = { - nimi: koodi.nimi, - arvo: koodi.koodiArvo, - uri: koodi.koodiUri - }; - }, - { - ylarelaatioTyyppi: _.constant(peruste.koulutustyyppi), - tyyppi: _.constant("koulutus") - } - ); - - $scope.ok = function(uusiryhma) { - if (uusiryhma) { - if (uusiryhma.osat === undefined) { - uusiryhma.osat = []; - } - if (uusiryhma.muodostumisSaanto && uusiryhma.muodostumisSaanto.laajuus) { - var ml = uusiryhma.muodostumisSaanto.laajuus; - ml.maksimi = ml.minimi && (!ml.maksimi || ml.minimi > ml.maksimi) ? ml.minimi : ml.maksimi; - } - - if (uusiryhma.rooli !== "osaamisala" && uusiryhma.rooli !== "tutkintonimike") { - uusiryhma.tutkintonimike = null; - uusiryhma.osaamisala = null; - } - } - $uibModalInstance.close(uusiryhma); - }; - - $scope.poista = function() { - Varmistusdialogi.dialogi({ - otsikko: "poistetaanko-ryhma", - successCb: function() { - $scope.ok(null); - } - })(); - }; - - $scope.peruuta = function() { - $uibModalInstance.dismiss(); - }; - - $scope.$watch("ryhma.rooli", function(rooli) { - if (rooli !== "osaamisala") { - $scope.ryhma.osaamisala = null; - } - }); - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/rakenneosamodal.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/rakenneosamodal.ts deleted file mode 100644 index ce3b9a6f03..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/rakenneosamodal.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("RakenneosaModalCtrl", function($scope, $uibModalInstance, rakenneosa, Koodisto) { - var setupRyhma = function(rakenneosa) { - $scope.rakenneosa = _.cloneDeep(rakenneosa); - if (!$scope.rakenneosa.kuvaus || !_.isObject($scope.rakenneosa.kuvaus)) { - $scope.rakenneosa.kuvaus = {}; - } - }; - setupRyhma(rakenneosa); - - $scope.vieraskoodiModaali = Koodisto.modaali( - function(koodi) { - $scope.rakenneosa.vieras = _.pick(koodi, "nimi", "koodiArvo", "koodiUri"); - $scope.rakenneosa.vieras = { - nimi: koodi.nimi, - uri: koodi.koodiUri, - arvo: koodi.koodiArvo - }; - }, - { - tyyppi: function() { - return "tutkinnonosat"; - }, - ylarelaatioTyyppi: function() { - return ""; - } - }, - angular.noop, - null - ); - - $scope.ok = function() { - $uibModalInstance.close($scope.rakenneosa); - }; - - $scope.peruuta = $uibModalInstance.dismiss; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/tilanvaihtovirhe.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/tilanvaihtovirhe.ts deleted file mode 100644 index 30886060b8..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/tilanvaihtovirhe.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").controller("TilanvaihtovirheCtrl", function($scope, $uibModalInstance, infot) { - $scope.infot = infot; - $scope.ok = function() { - $uibModalInstance.close(); - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/uudelleenohjaus.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/uudelleenohjaus.ts deleted file mode 100644 index 30e8f9e2a1..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/uudelleenohjaus.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("UudelleenohjausModalCtrl", function($scope, $uibModalInstance, status, redirect) { - $scope.status = status; - $scope.casurl = redirect; - - $scope.ok = function() { - $uibModalInstance.close(); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/validointi.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/validointi.ts deleted file mode 100644 index 66eed99826..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/modals/validointi.ts +++ /dev/null @@ -1,51 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; - - -angular.module("eperusteApp") -.service("ValidointivirheService", ($uibModal, Api) => { - return { - async validoiProjekti(projektiId: number) { - return $uibModal - .open({ - template: require("views/modals/validointivirheet.html"), - controller: "ValidointiCtrl", - size: "lg", - resolve: { - async validointidata(Api) { - const validointi = await Api.one(`/perusteprojektit/${projektiId}/validoi`).get(); - return validointi; - }, - }, - }) - .result; - } - }; -}) -.controller("ValidointiCtrl", function($scope, $uibModalInstance, validointidata) { - $scope.data = validointidata; - $scope.itemsPerPage = 5; - $scope.nykyinen = 1; - $scope.kokonaismaara = $scope.data.infot.length; - $scope.sivutettuData = []; - - $scope.ok = function() { - $uibModalInstance.close(); - }; - - $scope.peruuta = function() { - $uibModalInstance.dismiss(); - }; - - $scope.valitseSivu = (sivu) => { - $scope.nykyinen = sivu; - $scope.asetaSivuData(); - } - - $scope.asetaSivuData = () => { - const sivuIndex = ($scope.nykyinen - 1) * $scope.itemsPerPage; - $scope.sivutettuData = $scope.data.infot.slice(sivuIndex, sivuIndex + $scope.itemsPerPage); - } - - $scope.asetaSivuData(); -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/muokkaus.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/muokkaus.ts deleted file mode 100644 index 10e213ec99..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/muokkaus.ts +++ /dev/null @@ -1,116 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL, Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").service("MuokkausUtils", function() { - /** - * Access nested object/array. - * @param obj [Object] - * @param path [String] e.g. 'nested.path', 'somearray[1].innerKey' - * @param action [String] default action 'get', can be also 'has' (returns boolean) or 'set'. - * @param value Used if action is set - * @param replace Used if action is set, replaces object data per key - * instead of full overwrite of obj[path] (preserves object pointer) - */ - function access(obj, path, action?, value?, replace?) { - var match = path.match(/(.+)\[(\d+)\]/); - if (match) { - var index = parseInt(match[2], 10); - var arr = obj[match[1]]; - if (action === "has") { - return _.isArray(arr) && arr.length > index; - } else if (action === "set") { - arr[index] = value; - } - return arr[index]; - } - if (action === "has") { - return _.has(obj, path); - } else if (action === "set") { - if (replace) { - _.each(value, function(val, key) { - obj[path][key] = val; - }); - } else { - obj[path] = value; - } - } - return obj[path]; - } - - function has(obj, path) { - return access(obj, path, "has"); - } - - function set(obj, path, value, replace?) { - return access(obj, path, "set", value, replace); - } - - this.hasValue = function(obj, path) { - return this.nestedHas(obj, path, ".") && !_.isEmpty(this.nestedGet(obj, path, ".")); - }; - - this.nestedHas = function(obj, path, delimiter) { - function innerNestedHas(obj, names) { - if (has(obj, names[0])) { - return names.length > 1 ? innerNestedHas(access(obj, names[0]), names.splice(1, names.length)) : true; - } else { - return false; - } - } - - var propertyNames = path.split(delimiter); - - return innerNestedHas(obj, propertyNames); - }; - - this.nestedGet = function(obj, path, delimiter) { - function innerNestedGet(obj, names) { - if (names.length > 1) { - return innerNestedGet(access(obj, names[0]), names.splice(1, names.length)); - } else { - return access(obj, names[0]); - } - } - - if (!this.nestedHas(obj, path, delimiter)) { - return undefined; - } - var propertyNames = path.split(delimiter); - - return innerNestedGet(obj, propertyNames); - }; - - this.nestedSet = function(obj, path, delimiter, value, replace) { - function innerNestedSet(obj, names, newValue) { - var dest = access(obj, names[0]); - if (names.length > 1) { - if (!has(obj, names[0]) || dest === null) { - dest = set(obj, names[0], {}); - } - innerNestedSet(dest, names.splice(1, names.length), newValue); - } else { - set(obj, names[0], newValue, replace); - } - } - - var propertyNames = path.split(delimiter); - - innerNestedSet(obj, propertyNames, value); - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/omatperusteprojektit.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/omatperusteprojektit.ts deleted file mode 100644 index e394d74c5a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/omatperusteprojektit.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("OmatperusteprojektitCtrl", function($scope, $state, OmatPerusteprojektit, PerusteProjektiService) { - $scope.projektit = {}; - $scope.naytto = { limit: 5, shown: 5 }; - - function paivitaOmatProjektit() { - OmatPerusteprojektit.query({}, function(vastaus) { - $scope.projektit = _(vastaus) - .filter(function(pp) { - return pp.diaarinumero; /*ei ole pohja*/ - }) - .map(function(pp: any) { - pp.url = PerusteProjektiService.getUrl(pp, pp.peruste); - return pp; - }) - .reverse() - .value(); - }); - } - - paivitaOmatProjektit(); - - $scope.$on("update:perusteprojekti", paivitaOmatProjektit); - }) - .directive("limitToggler", function() { - return { - restrict: "AE", - template: - '
    ' + - '{{linktext| kaanna}}' + - "
    ", - scope: { - model: "=", - limit: "=", - limiter: "=" - }, - controller: function($scope) { - $scope.isVisible = false; - $scope.linktext = "sivupalkki-näytä-kaikki"; - $scope.$watch("model", function() { - $scope.isVisible = $scope.model.length > $scope.limit; - }); - $scope.toggle = function() { - if ($scope.limiter === $scope.limit) { - $scope.limiter = $scope.model.length; - $scope.linktext = "sivupalkki-piilota"; - } else { - $scope.limiter = $scope.limit; - $scope.linktext = "sivupalkki-näytä-kaikki"; - } - }; - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusopetus.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusopetus.ts deleted file mode 100644 index 93a70a65a3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusopetus.ts +++ /dev/null @@ -1,547 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("PerusopetusSisaltoController", function( - $scope, - perusteprojektiTiedot, - Algoritmit, - $state, - SuoritustavanSisalto, - PerusopetusService, - TekstikappaleOperations, - Editointikontrollit, - $stateParams, - Notifikaatiot, - Utils, - VlkUtils, - YleinenData - ) { - $scope.projekti = perusteprojektiTiedot.getProjekti(); - $scope.peruste = perusteprojektiTiedot.getPeruste(); - TekstikappaleOperations.setPeruste($scope.peruste); - $scope.rajaus = ""; - - $scope.tuoSisalto = SuoritustavanSisalto.tuoSisalto(); - $scope.esitysurl = YleinenData.getPerusteEsikatseluLink($scope.projekti, $scope.peruste); - - $scope.$watch( - "peruste.sisalto", - function() { - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - lapsi.$url = - lapsi.perusteenOsa.tunniste === "laajaalainenosaaminen" - ? $state.href("root.perusteprojekti.suoritustapa.osalistaus", { - suoritustapa: "perusopetus", - osanTyyppi: "osaaminen" - }) - : $state.href("root.perusteprojekti.suoritustapa.tekstikappale", { - suoritustapa: "perusopetus", - perusteenOsaViiteId: lapsi.id, - versio: "" - }); - }); - }, - true - ); - - $scope.datat = { - opetus: { lapset: [] }, - sisalto: perusteprojektiTiedot.getYlTiedot().sisalto - }; - - $scope.$watch( - "datat.opetus.lapset", - function() { - _.each($scope.datat.opetus.lapset, function(area) { - area.$type = "ep-parts"; - area.$url = $state.href("root.perusteprojekti.suoritustapa.osalistaus", { - suoritustapa: $stateParams.suoritustapa, - osanTyyppi: area.tyyppi - }); - area.$orderFn = area.tyyppi === PerusopetusService.VUOSILUOKAT ? VlkUtils.orderFn : Utils.nameSort; - Algoritmit.kaikilleLapsisolmuille(area, "lapset", function(lapsi) { - lapsi.$url = $state.href("root.perusteprojekti.suoritustapa.osaalue", { - suoritustapa: $stateParams.suoritustapa, - osanTyyppi: area.tyyppi, - osanId: lapsi.id, - tabId: 0 - }); - if (lapsi.koosteinen) { - lapsi.lapset = _.sortBy(lapsi.oppimaarat, Utils.nameSort); - } - }); - }); - }, - true - ); - - // TODO käytä samaa APIa kuin sivunavissa, koko sisältöpuu kerralla - _.each(PerusopetusService.sisallot, function(item) { - var data: any = { - nimi: item.label, - tyyppi: item.tyyppi - }; - PerusopetusService.getOsat(item.tyyppi, true).then(function(res) { - data.lapset = res; - }); - $scope.datat.opetus.lapset.push(data); - }); - $scope.peruste.sisalto = $scope.datat.sisalto; - - $scope.rajaaSisaltoa = function(value) { - if (_.isUndefined(value)) { - return; - } - var sisaltoFilterer = function(osa, lapsellaOn) { - osa.$filtered = lapsellaOn || Algoritmit.rajausVertailu(value, osa, "perusteenOsa", "nimi"); - return osa.$filtered; - }; - var filterer = function(osa, lapsellaOn) { - osa.$filtered = lapsellaOn || Algoritmit.rajausVertailu(value, osa, "nimi"); - return osa.$filtered; - }; - Algoritmit.kaikilleTutkintokohtaisilleOsille($scope.datat.opetus, filterer); - Algoritmit.kaikilleTutkintokohtaisilleOsille($scope.datat.sisalto, sisaltoFilterer); - }; - - $scope.avaaSuljeKaikki = function(value) { - var open = _.isUndefined(value) ? false : !value; - if (_.isUndefined(value)) { - Algoritmit.kaikilleLapsisolmuille($scope.datat.opetus, "lapset", function(lapsi) { - open = open || lapsi.$opened; - }); - } - Algoritmit.kaikilleLapsisolmuille($scope.datat.sisalto, "lapset", function(lapsi) { - lapsi.$opened = !open; - }); - Algoritmit.kaikilleLapsisolmuille($scope.datat.opetus, "lapset", function(lapsi) { - lapsi.$opened = !open; - }); - }; - - $scope.addTekstikappale = function() { - TekstikappaleOperations.add(); - }; - - $scope.edit = function() { - Editointikontrollit.startEditing(); - }; - - Editointikontrollit.registerCallback({ - edit: function() { - $scope.rajaus = ""; - $scope.avaaSuljeKaikki(true); - }, - save: function() { - TekstikappaleOperations.updateViitteet($scope.peruste.sisalto, function() { - Notifikaatiot.onnistui("osien-rakenteen-päivitys-onnistui"); - }); - }, - cancel: function() { - $state.go($state.current.name, $stateParams, { - reload: true - }); - }, - validate: function() { - return true; - }, - notify: function(value) { - $scope.editing = value; - } - }); - }) - .controller("OsalistausController", function($scope, $state, $stateParams, PerusopetusService, virheService, $log) { - $scope.sisaltoState = _.find(PerusopetusService.sisallot, { tyyppi: $stateParams.osanTyyppi }); - if (!$scope.sisaltoState) { - $log.error("Tyyppi: " + $stateParams.osanTyyppi); - virheService.virhe("virhe-sivua-ei-löytynyt"); - return; - } - var vuosiluokkakokonaisuudet = []; - $scope.osaAlueet = []; - PerusopetusService.getOsat($stateParams.osanTyyppi).then(function(res) { - $scope.osaAlueet = res; - }); - if ($stateParams.osanTyyppi === PerusopetusService.OPPIAINEET) { - PerusopetusService.getOsat(PerusopetusService.VUOSILUOKAT, true).then(function(res) { - vuosiluokkakokonaisuudet = res; - }); - } - - var oppiaineFilter = { - template: - "", - model: null, - options: vuosiluokkakokonaisuudet, - fn: function(/*query, value*/) { - // TODO vuosiluokkakokonaisuusfiltteri - return true; - /*return !!_.find(value.vuosiluokkakokonaisuudet, function (item) { - return item._id === query.id; - });*/ - } - }; - - $scope.options = { - extrafilter: $stateParams.osanTyyppi === PerusopetusService.OPPIAINEET ? oppiaineFilter : null - }; - - $scope.createUrl = function(value) { - return $state.href("root.perusteprojekti.suoritustapa.osaalue", { - suoritustapa: $stateParams.suoritustapa, - osanTyyppi: $stateParams.osanTyyppi, - osanId: value.id, - tabId: 0 - }); - }; - - $scope.add = function() { - $state.go("root.perusteprojekti.suoritustapa.osaalue", { - suoritustapa: $stateParams.suoritustapa, - osanTyyppi: $stateParams.osanTyyppi, - osanId: "uusi", - tabId: 0 - }); - }; - }) - .controller("OsaAlueController", function($scope, $q, $stateParams, PerusopetusService, ProjektinMurupolkuService) { - $scope.isVuosiluokka = $stateParams.osanTyyppi === PerusopetusService.VUOSILUOKAT; - $scope.isOppiaine = $stateParams.osanTyyppi === PerusopetusService.OPPIAINEET; - $scope.isOsaaminen = $stateParams.osanTyyppi === PerusopetusService.OSAAMINEN; - $scope.versiot = { latest: true }; - $scope.dataObject = PerusopetusService.getOsa($stateParams); - var labels = _.invert(PerusopetusService.LABELS); - ProjektinMurupolkuService.set("osanTyyppi", $stateParams.osanTyyppi, labels[$stateParams.osanTyyppi]); - $scope.dataObject.then(function(res) { - ProjektinMurupolkuService.set("osanId", $stateParams.osanId, res.nimi); - }); - }) - .controller("PerusopetusController", function( - $q, - $scope, - $timeout, - sisalto, - PerusteenOsat, - OppiaineenVuosiluokkakokonaisuudet, - Utils, - Algoritmit, - Notifikaatiot, - Oppiaineet, - TermistoService, - Kieli, - $document, - $rootScope - ) { - $scope.isNaviVisible = _.constant(true); - $scope.hasContent = function(obj) { - return _.isObject(obj) && obj.teksti && obj.teksti[Kieli.getSisaltokieli()]; - }; - var peruste = sisalto[0]; - var oppiaineet = _.zipBy(sisalto[2], "id"); - $scope.osaamiset = _.zipBy(sisalto[1], "id"); - $scope.sisallot = _.zipBy(sisalto[3], "id"); - $scope.vuosiluokkakokonaisuudet = _(sisalto[3]) - .each(function(s) { - s.vuosiluokat.sort(); - }) - .sortBy(function(s) { - return _.first(s.vuosiluokat); - }) - .value(); - $scope.vuosiluokkakokonaisuudetMap = _.zipBy($scope.vuosiluokkakokonaisuudet, "id"); - $scope.valittuOppiaine = {}; - $scope.filterSisalto = {}; - $scope.filterOsaamiset = {}; - $scope.tekstisisalto = sisalto[4]; - $scope.currentSection = "suunnitelma"; - $scope.activeSection = "suunnitelma"; - - TermistoService.setPeruste(peruste); - - function clickHandler(event) { - var ohjeEl = angular.element(event.target).closest(".popover, .popover-element"); - if (ohjeEl.length === 0) { - $rootScope.$broadcast("ohje:closeAll"); - } - } - function installClickHandler() { - $document.off("click", clickHandler); - $timeout(function() { - $document.on("click", clickHandler); - }); - } - $scope.$on("$destroy", function() { - $document.off("click", clickHandler); - }); - - $scope.filtterit = { - moodi: "sivutus" - }; - - $scope.onSectionChange = function(section) { - $scope.currentSection = section.id; - $scope.activeSection = section.id; - - if (_.isEmpty($scope.valittuOppiaine) && section.id === "sisalto") { - selectOppiaine(_.first(_.keys(oppiaineet))); - } - }; - - $scope.valitseOppiaineenVuosiluokka = function(vuosiluokka) { - $timeout(function() { - $scope.filtterit.valittuKokonaisuus = vuosiluokka; - $scope.valittuOppiaine.vlks = $scope.valittuOppiaine.vuosiluokkakokonaisuudet[vuosiluokka]; - if ($scope.valittuOppiaine.vlks) { - $scope.valittuOppiaine.sisallot = - $scope.sisallot[$scope.valittuOppiaine.vlks._vuosiluokkaKokonaisuus]; - } - paivitaTavoitteet(); - }); - }; - - function activeSection() { - return $scope.activeSection; - } - - function isCurrentOppiaine(item) { - var id = _.isObject(item) ? item.value : item; - return ( - $scope.valittuOppiaine && $scope.valittuOppiaine.oppiaine && $scope.valittuOppiaine.oppiaine.id === id - ); - } - - function selectOppiaine(oppiaine) { - var id = _.isObject(oppiaine) ? oppiaine.value : oppiaine; - Oppiaineet.get( - { perusteId: peruste.id, osanId: id }, - function(res) { - var valittuOppiaine: any = {}; - valittuOppiaine.oppiaine = res; - valittuOppiaine.vuosiluokkakokonaisuudet = _.zipBy( - res.vuosiluokkakokonaisuudet, - "_vuosiluokkaKokonaisuus" - ); - $scope.valittuOppiaine = valittuOppiaine; - - var valittavaVuosiluokka = $scope.valittuOppiaine.vuosiluokkakokonaisuudet[ - $scope.filtterit.valittuKokonaisuus - ] - ? $scope.filtterit.valittuKokonaisuus - : _.first(_.keys($scope.valittuOppiaine.vuosiluokkakokonaisuudet)); - - if ($scope.currentSection === "vlk") { - valittavaVuosiluokka = $scope.valittuVuosiluokkakokonaisuus.id; - } - - $scope.valitseOppiaineenVuosiluokka(valittavaVuosiluokka, true); - $scope.activeSection = "sisalto"; - }, - Notifikaatiot.serverCb - ); - } - - function valitseAktiivinenTekstisisalto(osaId) { - PerusteenOsat.get( - { - osanId: osaId - }, - function(res) { - $scope.valittuTekstisisalto = res; - $scope.activeSection = "suunnitelma"; - } - ); - } - - function rakennaVuosiluokkakokonaisuuksienSisalto() { - var sisalto = _.map($scope.vuosiluokkakokonaisuudet, function(vkl: any) { - return { - $oppiaineet: _(oppiaineet) - .filter(function(oa) { - return _.some(oa.vuosiluokkakokonaisuudet, function(oavkl: any) { - return _.parseInt(oavkl._vuosiluokkaKokonaisuus) === vkl.id; - }); - }) - .value(), - $vkl: vkl, - label: vkl.nimi, - depth: 0 - }; - }); - - if (!_.isEmpty(sisalto)) { - (_.first(sisalto) as any).$selected = true; - $scope.valittuVuosiluokkakokonaisuus = _.first(sisalto).$vkl; - } - return sisalto; - } - - function rakennaTekstisisalto() { - var suunnitelma = []; - Algoritmit.kaikilleLapsisolmuille($scope.tekstisisalto, "lapset", function(osa, depth) { - suunnitelma.push({ - $osa: osa, - label: osa.perusteenOsa ? osa.perusteenOsa.nimi : "", - depth: depth - }); - }); - if ($scope.tekstisisalto && $scope.tekstisisalto.lapset && !_.isEmpty($scope.tekstisisalto.lapset)) { - valitseAktiivinenTekstisisalto($scope.tekstisisalto.lapset[0]._perusteenOsa); - _.first(suunnitelma).$selected = true; - } - return suunnitelma; - } - - function paivitaTavoitteet() { - if ($scope.valittuOppiaine.vlks) { - var filteritTyhjat = _.all($scope.filterOsaamiset, function(v) { - return v; - }); - _.each($scope.valittuOppiaine.vlks.tavoitteet, function(tavoite) { - if (filteritTyhjat || _.isEmpty(tavoite.laajattavoitteet)) { - tavoite.$rejected = false; - } else { - tavoite.$rejected = _.all(tavoite.laajattavoitteet, function(lt: any) { - return $scope.filterOsaamiset[lt]; - }); - } - }); - } - installClickHandler(); - } - - function paivitaSivunavi() { - var navi = { - oppiaineet: [] - }; - _.forEach(_.values(oppiaineet), function(oa) { - navi.oppiaineet.push(oa); - }); - - _.each($scope.navi.sections[2].model.sections, function(v) { - if (navi[v.id]) { - v.items = navi[v.id]; - } - }); - } - - $scope.navi = { - header: "perusteiden-sisalto", - showOne: true, - sections: [ - { - id: "suunnitelma", - include: "views/partials/perusopetustekstisisalto.html", - items: rakennaTekstisisalto(), - title: "yhteiset-osuudet", - update: function(item, section) { - valitseAktiivinenTekstisisalto(item.$osa._perusteenOsa); - _.each(section.items, function(osa) { - osa.$selected = false; - }); - item.$selected = true; - } - }, - { - title: "vuosiluokkakokonaisuudet", - id: "vlk", - items: rakennaVuosiluokkakokonaisuuksienSisalto(), - include: "views/partials/perusopetuksenvuosiluokkakokonaisuus.html", - update: function(item, section) { - _.each(section.items, function(osa) { - osa.$selected = false; - }); - item.$selected = true; - $scope.valittuVuosiluokkakokonaisuus = item.$vkl; - $scope.activeSection = "vlk"; - }, - selectOppiaine: selectOppiaine, - isCurrentOppiaine: isCurrentOppiaine, - activeSection: activeSection, - currentSection: function() { - return $scope.currentSection; - }, - $oppiaineOrder: Utils.oppiaineSort - }, - { - title: "opetuksen-sisallot", - id: "sisalto", - include: "views/partials/navifilters.html", - model: { - sections: [ - { - $condensed: true, - items: _.map($scope.vuosiluokkakokonaisuudet, function(kokonaisuus: any) { - return { label: kokonaisuus.nimi, value: kokonaisuus.id, $selected: true }; - }), - update: paivitaSivunavi - }, - { - title: "oppiaineet", - id: "oppiaineet", - items: [], - $open: true, - include: "views/partials/perusopetusoppiaineetsivunavi.html", - selectOppiaine: selectOppiaine, - isCurrentOppiaine: isCurrentOppiaine, - activeSection: activeSection, - $oppiaineOrder: Utils.oppiaineSort - }, - { - id: "sisallot", - title: "oppiaineen-sisallot", - $all: true, - items: _.map(["tehtava", "ohjaus", "tyotavat", "tavoitteet"], function(item, index) { - return { - label: "perusopetus-" + item, - value: item, - depth: 0, - $selected: true, - order: index - }; - }), - update: function(item) { - $scope.filterSisalto[item.value] = !item.$selected; - } - }, - { - id: "osaamiset", - title: "tavoitteiden-osaamiset", - $all: true, - items: _.map($scope.osaamiset, function(item: any) { - return { label: item.nimi, value: item.id, depth: 0, $selected: true }; - }), - update: function(item) { - $scope.filterOsaamiset[item.value] = !item.$selected; - paivitaTavoitteet(); - } - } - ] - } - } - ] - }; - - paivitaSivunavi(); - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/esiopetus.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/esiopetus.ts deleted file mode 100644 index eb6329f72e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/esiopetus.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2014 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("EsiopetusSisaltoController", function( - $scope, - perusteprojektiTiedot, - Algoritmit, - Api, - $state, - SuoritustavanSisalto, - TekstikappaleOperations, - SuoritustapaSisalto, - TutkinnonOsaEditMode, - Notifikaatiot, - $stateParams, - Editointikontrollit, - YleinenData - ) { - $scope.projekti = perusteprojektiTiedot.getProjekti(); - $scope.peruste = perusteprojektiTiedot.getPeruste(); - TekstikappaleOperations.setPeruste($scope.peruste); - $scope.rajaus = ""; - $scope.peruste.sisalto = perusteprojektiTiedot.getSisalto(); - $scope.esitysurl = YleinenData.getPerusteEsikatseluLink($scope.projekti, $scope.peruste); - $scope.tuoSisalto = SuoritustavanSisalto.tuoSisalto(); - - $scope.$watch( - "peruste.sisalto", - function() { - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - lapsi.$url = $state.href("root.perusteprojekti.suoritustapa.tekstikappale", { - suoritustapa: $stateParams.suoritustapa, - perusteenOsaViiteId: lapsi.id, - versio: "" - }); - }); - }, - true - ); - - $scope.rajaaSisaltoa = function(value) { - if (_.isUndefined(value)) { - return; - } - var sisaltoFilterer = function(osa, lapsellaOn) { - osa.$filtered = lapsellaOn || Algoritmit.rajausVertailu(value, osa, "perusteenOsa", "nimi"); - return osa.$filtered; - }; - Algoritmit.kaikilleTutkintokohtaisilleOsille($scope.peruste.sisalto, sisaltoFilterer); - }; - - $scope.avaaSuljeKaikki = function(value) { - var open = false; - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - open = open || lapsi.$opened; - }); - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - lapsi.$opened = _.isUndefined(value) ? !open : value; - }); - }; - - $scope.addTekstikappale = function() { - SuoritustapaSisalto.save( - { - perusteId: $scope.projekti._peruste, - suoritustapa: $stateParams.suoritustapa - }, - {}, - function(response) { - TutkinnonOsaEditMode.setMode(true); // Uusi luotu, siirry suoraan muokkaustilaan - $state.go( - "root.perusteprojekti.suoritustapa.tekstikappale", - { - perusteenOsaViiteId: response.id, - versio: "" - }, - { - reload: true - } - ); - }, - Notifikaatiot.serverCb - ); - }; - - $scope.edit = function() { - Editointikontrollit.startEditing(); - }; - - Editointikontrollit.registerCallback({ - edit: function() { - $scope.rajaus = ""; - $scope.avaaSuljeKaikki(true); - }, - save: function() { - TekstikappaleOperations.updateViitteet($scope.peruste.sisalto, function() { - Notifikaatiot.onnistui("osien-rakenteen-päivitys-onnistui"); - }); - }, - cancel: function() { - $state.go($state.current.name, $stateParams, { - reload: true - }); - }, - validate: function() { - return true; - }, - notify: function(value) { - $scope.editing = value; - } - }); - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/kommentit.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/kommentit.ts deleted file mode 100644 index d60e9677b1..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/kommentit.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; -import { Endpoints, Logic } from "scripts/misc"; - -namespace Controllers { - export const kaikkiKommentit = ($q, $scope, $location, kommentit) => { - $scope.kommentit = _(kommentit) - .sortBy("muokattu") - .reverse() - .value(); - - const uniqueOids = _(kommentit) - .map("muokkaaja") - .uniq() - .value(); - - $scope.kayttajat = {}; - - // Ei onnistu vielä koska ei tarpeeksi tietoa tilasta - $scope.goToKommenttiLocation = Logic.getKommenttiUrl; - - $q.all(_.map(uniqueOids, (oid: any) => Endpoints.getKayttajaByOid(oid))).then(users => { - const oids = {}; - _.each(users, (user, idx) => { - oids[uniqueOids[idx]] = Logic.getKayttajaNimi(user); - }); - $scope.kayttajat = oids; - }); - }; -} - -angular.module("eperusteApp").config($stateProvider => - $stateProvider.state("root.perusteprojekti.kommentit", { - url: "/kommentit", - template: require("views/partials/perusteprojekti/kommentit.html"), - controller: Controllers.kaikkiKommentit, - resolve: { - kommentit: ($stateParams, Api) => { - return Api.all("kommentit") - .one("perusteprojekti", $stateParams.perusteProjektiId) - .getList(); - } - }, - onEnter: [ - "PerusteProjektiSivunavi", - function(PerusteProjektiSivunavi) { - PerusteProjektiSivunavi.setVisible(false); - } - ] - }) -); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/koulutuksenosa.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/koulutuksenosa.ts deleted file mode 100644 index 014fb95ddc..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/koulutuksenosa.ts +++ /dev/null @@ -1,735 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL -* Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be usefu -* l -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("KoulutuksenOsaOsaAlueCtrl", function( - $scope, - $state, - $stateParams, - Editointikontrollit, - TutkinnonOsanOsaAlue, - Lukitus, - Notifikaatiot, - Utils - ) { - $scope.editEnabled = true; - $scope.valma = { - valmaarviointi: { kohde: {}, selite: {}, tavoitetteet: {} }, - valmatavoitteet: { kohde: {}, selite: {}, tavoitetteet: {} } - }; - - function goBack() { - $state.go("^", {}, { reload: true }); - } - - var osaAlueCallbacks = { - edit: function() { - TutkinnonOsanOsaAlue.get( - { - viiteId: $stateParams.tutkinnonOsaViiteId, - osaalueenId: $stateParams.osaAlueId - }, - function(vastaus) { - $scope.osaAlue = vastaus; - if (vastaus.valmaTelmaSisalto) { - $scope.valma = { - valmaarviointi: vastaus.valmaTelmaSisalto.osaamisenarviointi, - valmatavoitteet: vastaus.valmaTelmaSisalto.osaamistavoite - }; - } - - //luoOsaamistavoitepuu(); - }, - function(virhe) { - Notifikaatiot.serverCb(virhe); - goBack(); - } - ); - }, - cancel: function() { - Lukitus.vapautaPerusteenosaByTutkinnonOsaViite($stateParams.tutkinnonOsaViiteId); - goBack(); - }, - asyncValidate: cb => { - Editointikontrollit.notifySentenceCaseWarnings({ - obj: $scope.osaAlue, - paths: [ - 'nimi' - ], - after: cb - }); - }, - save: function() { - $scope.osaAlue.valmaTelmaSisalto = angular.copy($scope.valma); - - $scope.osaAlue.valmaTelmaSisalto = { - osaamistavoite: _.map($scope.valma.valmatavoitteet, function(item: any) { - return { - tavoitteet: _.map(item.tavoitteet, function(tavoite) { - return _.omit(tavoite, "jarjestys"); - }), - kohde: item.kohde, - selite: item.selite - }; - }), - osaamisenarviointi: { - tavoitteet: _.map($scope.valma.valmaarviointi.tavoitteet, function(tavoite) { - return _.omit(tavoite, "jarjestys"); - }), - kohde: $scope.valma.valmaarviointi.kohde, - selite: $scope.valma.valmaarviointi.selite - } - }; - - TutkinnonOsanOsaAlue.save( - { - viiteId: $stateParams.tutkinnonOsaViiteId, - osaalueenId: $stateParams.osaAlueId - }, - $scope.osaAlue, - function(res) { - Lukitus.vapautaPerusteenosaByTutkinnonOsaViite($stateParams.tutkinnonOsaViiteId); - goBack(); - }, - function(virhe) { - Notifikaatiot.serverCb(virhe); - goBack(); - } - ); - }, - validate: function() { - if (!Utils.hasLocalizedText($scope.osaAlue.nimi)) { - return false; - } else { - return ( - $scope.isVaTe || - _.all($scope.osaamistavoitepuu, function(osaamistavoite: any) { - return Utils.hasLocalizedText(osaamistavoite.nimi); - }) - ); - } - } - }; - - function lukitse(cb) { - Lukitus.lukitsePerusteenosaByTutkinnonOsaViite($stateParams.tutkinnonOsaViiteId, cb); - } - - Editointikontrollit.registerCallback(osaAlueCallbacks); - lukitse(function() { - Editointikontrollit.startEditing(); - }); - }); - -angular - .module("eperusteApp") - .controller("muokkausKoulutuksenosaCtrl", function( - $scope, - Utils, - Kommentit, - $stateParams, - KommentitByPerusteenOsa, - $state, - Editointikontrollit, - VersionHelper, - virheService, - TutkinnonOsaViitteet, - Algoritmit, - rakenne, - Lukitus, - PerusteenOsaViite, - $q, - Tutke2Service, - Notifikaatiot, - PerusteenRakenne, - TutkinnonOsaEditMode, - PerusteTutkinnonosa, - PerusteenOsat, - ProjektinMurupolkuService, - Tutke2OsaData, - $timeout, - FieldSplitter, - Varmistusdialogi, - Koodisto, - MuokkausUtils, - PerusteenOsaViitteet, - YleinenData - ) { - Utils.scrollTo("#ylasivuankkuri"); - - $scope.tutke2osa = []; - $scope.tutkinnonOsa = {}; - $scope.osaAlueAlitila = $state.includes("**.koulutuksenosa.osaalue"); - - $scope.fields = [ - { - path: "tutkinnonOsa.valmaTelmaSisalto.osaamistavoite", - localeKey: "koulutuksen-osan-osaamisentavoitteet", - type: "valmaarviointi", - collapsible: true, - valmatype: "tavoite", - visible: false - }, - { - path: "tutkinnonOsa.valmaTelmaSisalto.osaamisenarviointi", - localeKey: "koulutuksen-osan-osaamisen-arviointi", - type: "valmaarviointi", - collapsible: true, - valmatype: "arviointi", - visible: false - }, - { - path: "tutkinnonOsa.valmaTelmaSisalto.osaamisenarviointiTekstina", - localeKey: "koulutuksen-osan-osaamisen-arviointi-tekstina", - type: "editor-area", - localized: true, - collapsible: true, - visible: false - } - ]; - - $scope.koodistoClick = Koodisto.modaali( - koodisto => { - if (koodisto != null && koodisto.koodisto != null) { - $scope.editableTutkinnonOsaViite.tutkinnonOsa.koodi = { - uri: koodisto.koodiUri, - arvo: koodisto.koodiArvo, - versio: koodisto.versio, - koodisto: koodisto.koodisto.koodistoUri - }; - } - }, - { - tyyppi: () => { - return "tutkinnonosat"; - }, - ylarelaatioTyyppi: () => { - return ""; - }, - tarkista: _.constant(true) - } - ); - - function isVisible(fieldPath) { - return (_.find($scope.fields, { path: fieldPath }) as any).visible; - } - - $scope.addFieldToVisible = function(field) { - field.visible = true; - // Varmista että menu sulkeutuu klikin jälkeen - - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto = $scope.editableTutkinnonOsaViite - .tutkinnonOsa.valmaTelmaSisalto - ? $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto - : {}; - - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamisenarviointi = field.path.includes( - "osaamisenarviointi" - ) - ? {} - : $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamisenarviointi; - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamistavoite = field.path.includes( - "osaamistavoite" - ) - ? {} - : $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamistavoite; - - $timeout(function() { - angular.element("h1").click(); - // TODO ei toimi koska localeKey voi olla muu kuin string, - // joku muu tapa yksilöidä/löytää juuri lisätty kenttä? - Utils.scrollTo("li." + FieldSplitter.getClass(field)); - }); - }; - - function refreshPromise() { - $scope.tutkinnonOsaViite.tutkinnonOsa.kuvaus = $scope.tutkinnonOsaViite.tutkinnonOsa.kuvaus || {}; - $scope.editableTutkinnonOsaViite = angular.copy($scope.tutkinnonOsaViite); - tutkinnonOsaDefer = $q.defer(); - $scope.tutkinnonOsaPromise = tutkinnonOsaDefer.promise; - tutkinnonOsaDefer.resolve($scope.editableTutkinnonOsaViite); - } - - function doDelete(osaId) { - PerusteenRakenne.poistaTutkinnonOsaViite(osaId, $scope.peruste.id, $stateParams.suoritustapa, function() { - Notifikaatiot.onnistui("koulutuksen-osa-rakenteesta-poistettu"); - $state.go("root.perusteprojekti.suoritustapa.koulutuksenosat"); - }); - } - - $scope.poistaTutkinnonOsa = function(osaId) { - var onRakenteessa = PerusteenRakenne.validoiRakennetta($scope.rakenne.rakenne, function(osa) { - return ( - osa._tutkinnonOsaViite && $scope.rakenne.tutkinnonOsaViitteet[osa._tutkinnonOsaViite].id === osaId - ); - }); - if (onRakenteessa) { - Notifikaatiot.varoitus("koulutuksen-osa-rakenteessa-ei-voi-poistaa"); - } else { - Varmistusdialogi.dialogi({ - otsikko: "poistetaanko-koulutuksenosa", - primaryBtn: "poista", - successCb: function() { - $scope.isNew = false; - Editointikontrollit.cancelEditing(); - doDelete(osaId); - } - })(); - } - }; - - $scope.kopioiMuokattavaksi = function() { - PerusteenOsaViitteet.kloonaaTutkinnonOsa( - { - viiteId: $scope.tutkinnonOsaViite.id - }, - function(tk) { - TutkinnonOsaEditMode.setMode(true); - Notifikaatiot.onnistui("tutkinnonosa-kopioitu-onnistuneesti"); - $state.go( - "root.perusteprojekti.suoritustapa.koulutuksenosa", - { - perusteenOsaViiteId: tk.id, - versio: "" - }, - { reload: true } - ); - } - ); - }; - - function saveCb(res) { - Lukitus.vapautaPerusteenosa(res.id); - ProjektinMurupolkuService.set( - "tutkinnonOsaViiteId", - $scope.tutkinnonOsaViite.id, - $scope.tutkinnonOsaViite.tutkinnonOsa.nimi - ); - Notifikaatiot.onnistui("muokkaus-koulutuksen-osa-tallennettu"); - $scope.haeVersiot(true, function() { - VersionHelper.setUrl($scope.versiot); - }); - Tutke2Service.fetch($scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi); - } - - function lukitse(cb) { - Lukitus.lukitsePerusteenosa($scope.tutkinnonOsaViite.tutkinnonOsa.id, cb); - } - - //var fetch = muokkausCtrlCommons.scoped($scope).fetch; - var tutkinnonOsaDefer = $q.defer(); - $scope.tutkinnonOsaPromise = tutkinnonOsaDefer.promise; - - { - // Defaults - //muokkausCtrlCommons.setupScope($scope, doDelete); - Kommentit.haeKommentit(KommentitByPerusteenOsa, { - id: $stateParams.perusteProjektiId, - perusteenOsaId: $stateParams.tutkinnonOsaViiteId - }); - $scope.$laajuusRangena = false; - $scope.toggleLaajuusRange = function() { - $scope.$laajuusRangena = !$scope.$laajuusRangena; - }; - $scope.tutkinnonOsaViite = {}; - $scope.versiot = {}; - $scope.suoritustapa = $stateParams.suoritustapa; - $scope.rakenne = rakenne; - $scope.test = angular.noop; - $scope.editableTutkinnonOsaViite = {}; - $scope.editEnabled = false; - $scope.editointikontrollit = Editointikontrollit; - $scope.nimiValidationError = false; - $scope.yksikko = Algoritmit.perusteenSuoritustavanYksikko($scope.peruste, $scope.suoritustapa); - - $scope.getTosa = function() { - return !$scope.rakenne.tutkinnonOsat - ? undefined - : $scope.rakenne.tutkinnonOsat[$scope.tutkinnonOsaViite.tutkinnonOsa.id]; - }; - - { - // Versionhallinta - $scope.haeVersiot = function(force, cb) { - VersionHelper.getTutkinnonOsaViiteVersions( - $scope.versiot, - { id: $scope.tutkinnonOsaViite.id }, - force, - cb - ); - }; - - var errorCb = function() { - virheService.virhe("virhe-koulutuksen-ei-löytynyt"); - }; - - var successCb = function(re) { - re.tyyppi = "tutke2"; - setupTutkinnonOsaViite(re); - tutkinnonOsaDefer.resolve($scope.editableTutkinnonOsaViite); - $scope.$laajuusRangena = $scope.editableTutkinnonOsaViite.laajuusMaksimi > 0; - if (TutkinnonOsaEditMode.getMode()) { - $scope.isNew = true; - $scope.muokkaa(); - } - }; - - var versio = $stateParams.versio ? $stateParams.versio.replace(/\//g, "") : null; - if (versio) { - VersionHelper.getTutkinnonOsaViiteVersions( - $scope.versiot, - { id: $stateParams.tutkinnonOsaViiteId }, - true, - function() { - var revNumber = VersionHelper.select($scope.versiot, versio); - if (!revNumber) { - errorCb(); - } else { - TutkinnonOsaViitteet.getVersio( - { - viiteId: $stateParams.tutkinnonOsaViiteId, - versioId: revNumber - }, - successCb, - errorCb - ); - } - } - ); - } else { - PerusteenOsaViite.get( - { - perusteId: $scope.peruste.id, - suoritustapa: $stateParams.suoritustapa, - viiteId: $stateParams.tutkinnonOsaViiteId - }, - successCb, - errorCb - ); - } - } - } - - function mergeOsaAlueet(tutkinnonOsa) { - if (_.includes(YleinenData.yhteisetTutkinnonOsat, $scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi)) { - tutkinnonOsa.osaAlueet = _.map(Tutke2OsaData.get().$editing, function(osaAlue: any) { - var item: any = { nimi: osaAlue.nimi }; - if (osaAlue.id) { - item.id = osaAlue.id; - } - return item; - }); - } - } - - function getSisalto(item) { - if (item) { - return { - tavoitteet: _.map(item.tavoitteet, function(tavoite) { - return _.omit(tavoite, "jarjestys"); - }), - kohde: item.kohde, - selite: item.selite, - nimi: item.nimi - }; - } - return null; - } - - var editointikontrollit = { - edit: function() { - Tutke2Service.fetch($scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi); - }, - asyncValidate: function(done) { - if (!Utils.hasLocalizedText($scope.editableTutkinnonOsaViite.tutkinnonOsa.nimi)) { - $scope.nimiValidationError = true; - return false; - } - - if ( - $scope.$laajuusRangena && - $scope.editableTutkinnonOsaViite.laajuusMaksimi && - $scope.editableTutkinnonOsaViite.laajuus >= $scope.editableTutkinnonOsaViite.laajuusMaksimi - ) { - Notifikaatiot.varoitus("laajuuden-maksimi-ei-voi-olla-pienempi-tai-sama-kuin-minimi"); - } else { - Editointikontrollit.notifySentenceCaseWarnings({ - obj: $scope.editableTutkinnonOsaViite, - paths: [ - 'nimi' - ], - after: done - }); - } - }, - save: function(kommentti) { - if ($scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto) { - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto = { - osaamistavoite: _.map( - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamistavoite, - getSisalto - ), - osaamisenarviointi: getSisalto( - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamisenarviointi - ), - osaamisenarviointiTekstina: - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamisenarviointiTekstina - }; - } - - if (!$scope.$laajuusRangena || !$scope.editableTutkinnonOsaViite.laajuusMaksimi) { - $scope.editableTutkinnonOsaViite.laajuusMaksimi = undefined; - $scope.$laajuusRangena = false; - } - - Tutke2Service.mergeOsaAlueet($scope.editableTutkinnonOsaViite.tutkinnonOsa); - $scope.editableTutkinnonOsaViite.metadata = { kommentti: kommentti }; - - if ($scope.editableTutkinnonOsaViite.tutkinnonOsa.id) { - PerusteTutkinnonosa.save( - { - perusteId: $scope.peruste.id, - suoritustapa: $stateParams.suoritustapa, - osanId: $scope.editableTutkinnonOsaViite.tutkinnonOsa.id - }, - $scope.editableTutkinnonOsaViite, - function(response) { - $scope.editableTutkinnonOsaViite = angular.copy(response); - $scope.tutkinnonOsaViite = angular.copy(response); - Editointikontrollit.lastModified = response; - saveCb(response.tutkinnonOsa); - //getRakenne(); - - tutkinnonOsaDefer = $q.defer(); - $scope.tutkinnonOsaPromise = tutkinnonOsaDefer.promise; - tutkinnonOsaDefer.resolve($scope.editableTutkinnonOsaViite); - }, - Notifikaatiot.serverCb - ); - } else { - PerusteenOsat.saveTutkinnonOsa( - $scope.editableTutkinnonOsaViite.tutkinnonOsa, - function(response) { - Editointikontrollit.lastModified = response; - saveCb(response); - // getRakenne(); - }, - Notifikaatiot.serverCb - ); - } - $scope.isNew = false; - }, - cancel: function() { - if ($scope.isNew) { - doDelete($scope.rakenne.tutkinnonOsat[$scope.tutkinnonOsaViite.tutkinnonOsa.id].id); - $scope.isNew = false; - } else { - Tutke2Service.fetch($scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi); - fetch(function() { - refreshPromise(); - Lukitus.vapautaPerusteenosa($scope.tutkinnonOsaViite.tutkinnonOsa.id); - }); - } - }, - notify: function(mode) { - $scope.editEnabled = mode; - }, - validate: function() { - return true; - } - }; - - function fetch(cb) { - // NOTE! Pitäisikö hakea tutkinnonosaviite eikä tutkinnonosaa - cb = cb || angular.noop; - PerusteenOsat.get({ osanId: $scope.tutkinnonOsaViite.tutkinnonOsa.id }, function(res) { - if (res.valmaTelmaSisalto) { - res.valmaTelmaSisalto.osaamisenarviointi = isEmptyValmaList( - res.valmaTelmaSisalto.osaamisenarviointi - ) - ? null - : res.valmaTelmaSisalto.osaamisenarviointi; - - res.valmaTelmaSisalto.osaamistavoite = isEmptyValmaList(res.valmaTelmaSisalto.osaamistavoite) - ? null - : res.valmaTelmaSisalto.osaamistavoite; - } - - $scope.tutkinnonOsaViite.tutkinnonOsa = res; - cb(res); - }); - } - - $scope.muokkaa = function() { - Editointikontrollit.registerCallback(editointikontrollit); - lukitse(function() { - fetch(function() { - Editointikontrollit.startEditing(); - refreshPromise(); - }); - }); - }; - - var tutke2 = { - fetch: function() { - if ( - _.includes(YleinenData.yhteisetTutkinnonOsat, $scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi) - ) { - if (Tutke2OsaData.get()) { - Tutke2OsaData.get().fetch(); - } - } - }, - mergeOsaAlueet: function(tutkinnonOsa) { - if ( - _.includes(YleinenData.yhteisetTutkinnonOsat, $scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi) - ) { - tutkinnonOsa.osaAlueet = _.map(Tutke2OsaData.get().$editing, function(osaAlue: any) { - var item: any = { nimi: osaAlue.nimi }; - if (osaAlue.id) { - item.id = osaAlue.id; - } - return item; - }); - } - }, - validate: function() { - if ( - _.includes(YleinenData.yhteisetTutkinnonOsat, $scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi) - ) { - return _.all( - _.map(Tutke2OsaData.get().$editing, function(item: any) { - return Utils.hasLocalizedText(item.nimi); - }) - ); - } else { - return true; - } - } - }; - - var normalCallbacks = { - edit: function() { - tutke2.fetch(); - }, - asyncValidate: function(cb) { - lukitse(function() { - cb(); - }); - }, - save: function(kommentti) { - tutke2.mergeOsaAlueet($scope.editableTutkinnonOsaViite.tutkinnonOsa); - $scope.editableTutkinnonOsaViite.metadata = { kommentti: kommentti }; - if ($scope.editableTutkinnonOsaViite.tutkinnonOsa.id) { - PerusteTutkinnonosa.save( - { - perusteId: $scope.peruste.id, - suoritustapa: $stateParams.suoritustapa, - osanId: $scope.editableTutkinnonOsaViite.tutkinnonOsa.id - }, - $scope.editableTutkinnonOsaViite, - function(response) { - $scope.editableTutkinnonOsaViite = angular.copy(response); - $scope.tutkinnonOsaViite = angular.copy(response); - Editointikontrollit.lastModified = response; - saveCb(response.tutkinnonOsa); - //getRakenne(); - - tutkinnonOsaDefer = $q.defer(); - $scope.tutkinnonOsaPromise = tutkinnonOsaDefer.promise; - tutkinnonOsaDefer.resolve($scope.editableTutkinnonOsaViite); - }, - Notifikaatiot.serverCb - ); - } else { - PerusteenOsat.saveTutkinnonOsa( - $scope.editableTutkinnonOsaViite.tutkinnonOsa, - function(response) { - Editointikontrollit.lastModified = response; - saveCb(response); - //getRakenne(); - }, - Notifikaatiot.serverCb - ); - } - $scope.isNew = false; - }, - cancel: function() { - if ($scope.isNew) { - doDelete($scope.rakenne.tutkinnonOsat[$scope.tutkinnonOsaViite.tutkinnonOsa.id].id); - $scope.isNew = false; - } else { - tutke2.fetch(); - fetch(function() { - refreshPromise(); - Lukitus.vapautaPerusteenosa($scope.tutkinnonOsaViite.tutkinnonOsa.id); - }); - } - }, - notify: function(mode) { - $scope.editEnabled = mode; - }, - validate: function() { - if (!Utils.hasLocalizedText($scope.editableTutkinnonOsaViite.tutkinnonOsa.nimi)) { - $scope.nimiValidationError = true; - } - return $scope.tutkinnonOsaHeaderForm && $scope.tutkinnonOsaHeaderForm.$valid && tutke2.validate(); - } - }; - - function setupTutkinnonOsaViite(viite) { - $scope.tutkinnonOsaViite = viite; - ProjektinMurupolkuService.set( - "tutkinnonOsaViiteId", - $scope.tutkinnonOsaViite.id, - $scope.tutkinnonOsaViite.tutkinnonOsa.nimi - ); - $scope.editableTutkinnonOsaViite = angular.copy(viite); - $scope.isNew = !$scope.editableTutkinnonOsaViite.tutkinnonOsa.id; - - if ($scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto) { - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamisenarviointi = isEmptyValmaList( - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamisenarviointi - ) - ? null - : $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamisenarviointi; - - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamistavoite = isEmptyValmaList( - $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamistavoite - ) - ? null - : $scope.editableTutkinnonOsaViite.tutkinnonOsa.valmaTelmaSisalto.osaamistavoite; - } - - if ($state.current.name === "root.perusteprojekti.suoritustapa.tutkinnonosa") { - Editointikontrollit.registerCallback(normalCallbacks); - } - $scope.haeVersiot(); - Lukitus.tarkista($scope.tutkinnonOsaViite.tutkinnonOsa.id, $scope); - } - - function isEmptyValmaList(item) { - return ( - !item || item === null || (item.kohde === null && item.selite === null && item.tavoitteet.length === 0) - ); - } - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/muodostumissaannot.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/muodostumissaannot.ts deleted file mode 100644 index 779d0c8013..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/muodostumissaannot.ts +++ /dev/null @@ -1,319 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller( - "PerusteprojektiMuodostumissaannotCtrl", - ( - $q, - $scope, - $stateParams, - $timeout, - Algoritmit, - AutomaattitallennusService, - Editointikontrollit, - Kommentit, - KommentitBySuoritustapa, - Lukitus, - Muodostumissaannot, - Notifikaatiot, - PerusteProjektiService, - PerusteProjektiSivunavi, - PerusteenOsat, - PerusteenRakenne, - Varmistusdialogi, - VersionHelper, - perusteprojektiTiedot, - virheService, - ) => { - $scope.editoi = false; - $scope.suoritustapa = $stateParams.suoritustapa; - $scope.rakenne = { - $resolved: false, - rakenne: { osat: [] }, - tutkinnonOsat: {} - }; - $scope.versiot = {}; - $scope.isLocked = false; - $scope.peruste = perusteprojektiTiedot.getPeruste(); - $scope.sisalto = perusteprojektiTiedot.getSisalto(); - let muodostumisOtsikko = null; - - function setOtsikko(value = muodostumisOtsikko) { - $scope.rakenne.muodostumisOtsikko = value; - } - - Kommentit.haeKommentit(KommentitBySuoritustapa, { - id: $stateParams.perusteProjektiId, - suoritustapa: $scope.suoritustapa - }); - - function lukitse(cb) { - Lukitus.lukitseSisalto($scope.rakenne.$peruste.id, $scope.suoritustapa, cb); - } - - function errorCb() { - virheService.virhe("virhe-perusteenosaa-ei-löytynyt"); - } - - function successCb(res) { - AutomaattitallennusService.stop(); - res.$suoritustapa = $scope.suoritustapa; - res.$resolved = true; - $scope.rakenne = res; - setOtsikko(); - Muodostumissaannot.laskeLaajuudet( - $scope.rakenne.rakenne, - $scope.rakenne.tutkinnonOsaViitteet, - $scope.rakenne.tutkinnonOsat - ); - haeVersiot(); - Lukitus.tarkista($scope.rakenne.$peruste.id, $scope, $scope.suoritustapa); - } - - function haeRakenne(versio = undefined) { - Algoritmit.kaikilleLapsisolmuille($scope.sisalto, "lapset", lapsi => { - if (lapsi.perusteenOsa && lapsi.perusteenOsa.tunniste === "rakenne") { - muodostumisOtsikko = _.cloneDeep(lapsi.perusteenOsa); - setOtsikko(); - return true; - } - }); - - return $q(function(resolve) { - haeVersiot(true, async function() { - const revNumber = VersionHelper.select($scope.versiot, versio); - if (versio && !$scope.versiot.latest) { - if (!revNumber) { - errorCb(); - } else { - PerusteenRakenne.haeTutkinnonosatVersioByPeruste( - $scope.peruste.id, - $scope.suoritustapa, - revNumber, - function(tutkinnonOsat) { - const vastaus = PerusteenRakenne.pilkoTutkinnonOsat(tutkinnonOsat, {}); - $scope.tutkinnonOsat = vastaus.tutkinnonOsat; - VersionHelper.changeRakenne( - $scope.versiot, - { - id: $scope.peruste.id, - suoritustapa: $scope.suoritustapa - }, - function(response) { - $scope.rakenne.rakenne = response; - $scope.rakenne.$resolved = true; - $scope.rakenne.$suoritustapa = $scope.suoritustapa; - $scope.rakenne.$peruste = $scope.peruste; - $scope.rakenne.tutkinnonOsat = vastaus.tutkinnonOsat; - $scope.rakenne.tutkinnonOsaViitteet = vastaus.tutkinnonOsaViitteet; - resolve(); - } - ); - } - ); - } - } else { - const res = await PerusteenRakenne.haeByPerusteprojekti( - $stateParams.perusteProjektiId, - $scope.suoritustapa - ); - successCb(res); - resolve(); - } - }); - }); - } - - $scope.haeRakenne = haeRakenne; - const versio = $stateParams.versio ? $stateParams.versio.replace(/\//g, "") : null; - - haeRakenne(versio).then(() => { - Editointikontrollit.registerCallback({ - async edit() { - await AutomaattitallennusService.start( - "rakenne" + $scope.rakenne.$peruste.id + $scope.rakenne.$suoritustapa, - () => $scope.rakenne.rakenne, - (data: any) => { - $scope.rakenne.rakenne = angular.copy(data); - }); - $scope.editoi = true; - }, - asyncValidate: cb => { - lukitse(() => { - Muodostumissaannot.skratchpadNotEmpty() - .then(isEmpty => { - return isEmpty ? leikelautaDialogi() : $q.when(); - }) - .then(() => { - Editointikontrollit.notifySentenceCaseWarnings({ - obj: $scope.rakenne.muodostumisOtsikko, - paths: [ - 'nimi' - ], - after: cb - }); - }); - }); - }, - asyncSave: (kommentti, cb) => { - $scope.rakenne.rakenne.metadata = { kommentti: kommentti }; - cb(); - tallennaRakenne($scope.rakenne, () => { - $scope.editoi = false; - }); - }, - cancel: () => { - return $q((resolve, reject) => { - Muodostumissaannot.skratchpadNotEmpty() - .then(isEmpty => { - return isEmpty ? leikelautaDialogi() : $q.when(); - }) - .then(Lukitus.vapautaSisalto($scope.rakenne.$peruste.id, $scope.suoritustapa)) - .then(haeRakenne) - .then(() => { - $scope.editoi = false; - }) - .then(resolve); - }); - } - }); - }); - - function tallennaRakenne(rakenne, cb) { - cb = cb || _.noop; - // TODO Jos tallennettaisiin otsikkotekstikappale viitteen läpi, ei tarvitsisi erillistä perusteenosalukkoa. - // TODO optimointi: älä tallenna otsikkoa jos sitä ei muutettu - const otsikkoId = $scope.rakenne.muodostumisOtsikko.id; - Lukitus.lukitsePerusteenosa(otsikkoId, function() { - PerusteenOsat.saveTekstikappale( - { osanId: otsikkoId }, - $scope.rakenne.muodostumisOtsikko, - function() { - PerusteProjektiSivunavi.refresh(); - Lukitus.vapautaPerusteenosa(otsikkoId); - }, - function(res) { - Lukitus.vapautaPerusteenosa(otsikkoId); - Notifikaatiot.serverCb(res); - } - ); - }); - - PerusteenRakenne.tallennaRakenne( - rakenne, - rakenne.$peruste.id, - $scope.suoritustapa, - function() { - Notifikaatiot.onnistui("tallennus-onnistui"); - haeVersiot(true, function() { - VersionHelper.setUrl($scope.versiot); - }); - Lukitus.vapautaSisalto($scope.rakenne.$peruste.id, $scope.suoritustapa); - cb(); - }, - function() { - Lukitus.vapautaSisalto($scope.rakenne.$peruste.id, $scope.suoritustapa); - cb(); - } - ); - - $scope.isLocked = false; - } - - function haeVersiot(force = false, cb = _.noop) { - VersionHelper.getRakenneVersions( - $scope.versiot, - { - id: $scope.peruste.id, - suoritustapa: $scope.suoritustapa - }, - force, - cb - ); - } - - $scope.vaihdaVersio = function(cb) { - cb = cb || angular.noop; - $scope.versiot.hasChanged = true; - // Ideally we would reload the data and rewrite version to url without changing state - VersionHelper.setUrl($scope.versiot); - // VersionHelper.changeRakenne($scope.versiot, {id: $scope.peruste.id, suoritustapa: $scope.suoritustapa}, function(response) { - // console.log('cb kutsuttu', response); - // $scope.rakenne.rakenne = response; - // $scope.rakenne.$resolved = true; - // //VersionHelper.setUrl($scope.versiot, true); - // cb(); - // }); - }; - - $scope.revert = function() { - haeRakenne().then(function() { - Lukitus.vapautaSisalto($scope.rakenne.$peruste.id, $scope.suoritustapa); - haeVersiot(true); - }); - }; - - $scope.muokkaa = function() { - lukitse(function() { - haeRakenne().then(function() { - $scope.rakenne.rakenne.$virheetMaara = Muodostumissaannot.validoiRyhma( - $scope.rakenne.rakenne, - $scope.rakenne.tutkinnonOsaViitteet, - $scope.tutkinnonOsat - ); - Editointikontrollit.startEditing(); - $scope.editoi = true; - }); - }); - }; - - function leikelautaDialogi() { - return $q((resolve, reject) => { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-liikkuminen", - teksti: "leikelauta-varoitus", - lisaTeksti: "haluatko-jatkaa", - successCb: resolve, - failureCb: reject, - primaryBtn: "poistu-sivulta" - })(); - }); - } - - $scope.$watch( - "rakenne.rakenne", - function(uusirakenne) { - if ($scope.editoi) { - Muodostumissaannot.laskeLaajuudet(uusirakenne, $scope.rakenne.tutkinnonOsaViitteet); - uusirakenne.$virheetMaara = Muodostumissaannot.validoiRyhma( - uusirakenne, - $scope.rakenne.tutkinnonOsaViitteet - ); - } - }, - true - ); - - $scope.$watch("editoi", function(editoi) { - PerusteProjektiSivunavi.setVisible(!editoi); - }); - } - ); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/osanmuokkaus.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/osanmuokkaus.ts deleted file mode 100644 index ee0d423829..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/osanmuokkaus.ts +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .service("OsanMuokkausHelper", ($q, $stateParams, PerusopetusService, LukiokoulutusService, $state, Lukitus) => { - var vuosiluokat = []; - var model = null; - var isLocked = false; - var backState = null; - var vuosiluokka = null; - var path = null; - var oppiaine = null; - var osaamiset = null; - var service = PerusopetusService; - var oppiaineLukitus = { - lukitse: function(and) { - Lukitus.lukitseOppiaine(oppiaine.id, function() { - isLocked = true; - if (and) { - and(); - } - }); - }, - vapauta: function(and?) { - Lukitus.vapautaOppiaine(oppiaine.id, function() { - isLocked = false; - if (and) { - and(); - } - }); - } - }; - - function reset() { - backState = null; - vuosiluokka = null; - osaamiset = null; - path = null; - oppiaine = null; - } - - function getModel() { - return path ? model[path] : model; - } - - function setup(uusiModel, uusiPath, uusiOppiaine, cb) { - cb = cb || angular.noop; - oppiaine = - $stateParams.osanTyyppi === PerusopetusService.OPPIAINEET || - $stateParams.osanTyyppi === LukiokoulutusService.OPPIAINEET_OPPIMAARAT - ? uusiModel - : null; - if (uusiOppiaine) { - oppiaine = uusiOppiaine; - } - model = uusiModel; - path = uusiPath; - isLocked = false; - backState = [$state.current.name, _.clone($stateParams)]; - - var promises = []; - var usesVuosiluokkas = false, - usesOsaamiset = false; - if ($stateParams.suoritustapa === "lukiokoulutus") { - oppiaineLukitus = { - lukitse: function(and) { - Lukitus.lukitseLukioOppiaine(oppiaine.id, function() { - isLocked = true; - if (and) { - and(); - } - }); - }, - vapauta: function(and) { - Lukitus.vapautaLukioOppiaine(oppiaine.id, function() { - isLocked = false; - if (and) { - and(); - } - }); - } - }; - service = LukiokoulutusService; - } else { - usesVuosiluokkas = true; - usesOsaamiset = true; - promises = [ - PerusopetusService.getOsat(PerusopetusService.VUOSILUOKAT, true), - PerusopetusService.getOsat(PerusopetusService.OSAAMINEN, true) - ]; - } - - $q.all(promises).then(function(res) { - if (usesVuosiluokkas) { - vuosiluokat = res[0]; - } - if (usesOsaamiset) { - osaamiset = res[1]; - } - if (usesVuosiluokkas) { - vuosiluokka = uusiModel._vuosiluokkaKokonaisuus - ? _.find(vuosiluokat, function(vl) { - return vl.id === parseInt(model._vuosiluokkaKokonaisuus, 10); - }) - : null; - } - if (isVuosiluokkakokonaisuudenOsa()) { - Lukitus.lukitseOppiaineenVuosiluokkakokonaisuus(oppiaine.id, model.id, function() { - isLocked = true; - cb(); - }); - } else if (oppiaine) { - oppiaineLukitus.lukitse(cb); - } - }); - } - - function save() { - if (isVuosiluokkakokonaisuudenOsa()) { - PerusopetusService.saveVuosiluokkakokonaisuudenOsa(model, oppiaine, function() { - Lukitus.vapautaOppiaineenVuosiluokkakokonaisuus(oppiaine.id, model.id, function() { - isLocked = false; - goBack(); - }); - }); - } else if (path) { - var payload: any = _.pick(model, ["id", path]); - if ($stateParams.suoritustapa === "lukiokoulutus") { - payload.partial = true; - } - service.saveOsa(payload, backState[1], function() { - if (isLocked && oppiaine) { - oppiaineLukitus.vapauta(goBack); - } - }); - } - } - - function goBack() { - if (!backState) { - return; - } - - if (isLocked) { - if (isVuosiluokkakokonaisuudenOsa()) { - Lukitus.vapautaOppiaineenVuosiluokkakokonaisuus(oppiaine.id, model.id, function() { - isLocked = false; - }); - } else if (oppiaine) { - oppiaineLukitus.vapauta(); - } - } - var params = _.clone(backState); - reset(); - $state.go.apply($state, params, { reload: true }); - } - - function isVuosiluokkakokonaisuudenOsa() { - return !!vuosiluokka; - } - - function getOsaamiset() { - return osaamiset; - } - - function getOppiaine() { - return oppiaine; - } - - function getOppiaineenVuosiluokkakokonaisuus() { - if (oppiaine && vuosiluokka) { - return _.find(oppiaine.vuosiluokkakokonaisuudet, function(ovlk: any) { - return vuosiluokka.id === _.parseInt(ovlk._vuosiluokkaKokonaisuus); - }); - } - } - - function getVuosiluokkakokonaisuus() { - return vuosiluokka; - } - - return { - reset: reset, - getModel: getModel, - setup: setup, - save: save, - goBack: goBack, - getOppiaine: getOppiaine, - getOsaamiset: getOsaamiset, - getVuosiluokkakokonaisuus: getVuosiluokkakokonaisuus, - getOppiaineenVuosiluokkakokonaisuus: getOppiaineenVuosiluokkakokonaisuus, - isVuosiluokkakokonaisuudenOsa: isVuosiluokkakokonaisuudenOsa - }; - }) - .controller("OsanMuokkausController", function( - $scope, - $stateParams, - $compile, - OsanMuokkausHelper, - Editointikontrollit, - $rootScope - ) { - $scope.objekti = OsanMuokkausHelper.getModel(); - - if (!$scope.objekti) { - return; - } - - var MAPPING = { - tekstikappale: { - directive: "osanmuokkaus-tekstikappale", - attrs: { - model: "objekti" - }, - callbacks: { - save: function() { - $rootScope.$broadcast("notifyCKEditor"); - OsanMuokkausHelper.save(); - }, - edit: function() {}, - cancel: function() { - OsanMuokkausHelper.goBack(); - } - } - }, - sisaltoalueet: { - directive: "osanmuokkaus-sisaltoalueet", - attrs: { - model: "objekti" - }, - callbacks: { - save: function() { - $rootScope.$broadcast("notifyCKEditor"); - OsanMuokkausHelper.save(); - }, - edit: function() {}, - cancel: function() { - OsanMuokkausHelper.goBack(); - } - } - }, - kohdealueet: { - directive: "osanmuokkaus-kohdealueet", - attrs: { - model: "objekti" - }, - callbacks: { - save: function() { - OsanMuokkausHelper.save(); - }, - edit: function() {}, - cancel: function() { - OsanMuokkausHelper.goBack(); - } - } - }, - tavoitteet: { - directive: "osanmuokkaus-tavoitteet", - attrs: { - model: "objekti" - }, - callbacks: { - save: function() { - OsanMuokkausHelper.save(); - }, - edit: function() {}, - cancel: function() { - OsanMuokkausHelper.goBack(); - } - } - } - }; - - var config = MAPPING[$stateParams.osanTyyppi]; - $scope.config = config; - var muokkausDirective = angular.element("<" + config.directive + ">").attr("config", "config"); - _.each(config.attrs, function(value, key) { - muokkausDirective.attr(key, value); - }); - var el = $compile(muokkausDirective)($scope); - - angular.element("#muokkaus-elementti-placeholder").replaceWith(el); - - Editointikontrollit.registerCallback(config.callbacks); - Editointikontrollit.startEditing(); - // TODO muokkauksesta poistumisvaroitus - }) - .directive("osanmuokkausTekstikappale", function() { - return { - template: require("views/directives/perusopetus/osanmuokkaustekstikappale.html"), - restrict: "E", - scope: { - model: "=", - config: "=", - editMode: "@" - }, - controller: "OsanmuokkausTekstikappaleController", - link: function(scope: any, element, attrs: any) { - attrs.$observe("editMode", function(val) { - scope.editMode = val !== "false"; - }); - scope.editMode = attrs.editMode !== "false"; - } - }; - }) - .controller("OsanmuokkausTekstikappaleController", function( - $scope, - OsanMuokkausHelper, - $rootScope, - YleinenData, - $state, - $stateParams - ) { - $scope.valitseKieli = _.bind(YleinenData.valitseKieli, YleinenData); - $scope.getTitle = function() { - return OsanMuokkausHelper.isVuosiluokkakokonaisuudenOsa() - ? "muokkaus-vuosiluokkakokonaisuuden-osa" - : $scope.model.$isNew ? "luonti-tekstikappale" : "muokkaus-tekstikappale"; - }; - // Odota tekstikenttien alustus ja päivitä editointipalkin sijainti - var received = 0; - $scope.$on("ckEditorInstanceReady", function() { - if (++received === 2) { - $rootScope.$broadcast("editointikontrollitRefresh"); - } - }); - - $scope.edit = function() { - OsanMuokkausHelper.setup($scope.model); - $state.go("root.perusteprojekti.suoritustapa.muokkaus", $stateParams); - }; - }) - .directive("osanmuokkausKohdealueet", function() { - return { - template: require("views/directives/perusopetus/osanmuokkauskohdealueet.html"), - restrict: "E", - scope: { - model: "=", - config: "=" - }, - controller: function($scope) { - $scope.model = $scope.model || []; - $scope.poistaKohdealue = _.partial(_.remove, $scope.model); - $scope.lisaaKohdealue = function() { - $scope.model.push({ nimi: { fi: "" } }); - }; - } - }; - }) - .directive("osanmuokkausTavoitteet", function() { - return { - template: require("views/directives/perusopetus/osanmuokkaustavoitteet.html"), - restrict: "E", - scope: { - model: "=", - config: "=" - }, - controller: function( - $rootScope, - $scope, - $uibModal, - ProxyService, - $q, - Notifikaatiot, - OsanMuokkausHelper, - $document - ) { - function uudetKohdealueetCb(kohdealueet) { - OsanMuokkausHelper.getOppiaine().kohdealueet = kohdealueet; - $rootScope.$broadcast("update:oppiaineenkohdealueet"); - } - - function clickHandler(event) { - var ohjeEl = angular.element(event.target).closest(".popover, .popover-element"); - if (ohjeEl.length === 0) { - $rootScope.$broadcast("ohje:closeAll"); - } - } - - $document.on("click", clickHandler); - $scope.$on("$destroy", function() { - $document.off("click", clickHandler); - }); - - $scope.muokkaaKohdealueita = function() { - $uibModal - .open({ - template: require("views/directives/perusopetus/osanmuokkauskohdealueet.html"), - controller: function($scope, $uibModalInstance, Oppiaineet, OsanMuokkausHelper) { - $scope.kohdealueet = _.map( - _.clone(OsanMuokkausHelper.getOppiaine().kohdealueet) || [], - function(ka: any) { - ka.$vanhaNimi = _.clone(ka.nimi); - return ka; - } - ); - $scope.poistaKohdealue = function(ka) { - Oppiaineet.poistaKohdealue( - { - perusteId: ProxyService.get("perusteId"), - osanId: OsanMuokkausHelper.getOppiaine().id, - kohdealueId: ka.id - }, - function() { - _.remove($scope.kohdealueet, ka); - }, - Notifikaatiot.serverCb - ); - }; - $scope.lisaaKohdealue = function() { - Oppiaineet.lisaaKohdealue( - { - perusteId: ProxyService.get("perusteId"), - osanId: OsanMuokkausHelper.getOppiaine().id - }, - { nimi: { fi: "Uusi tavoitealue" } }, - function(res) { - $scope.kohdealueet.push(res); - } - ); - }; - $scope.ok = function(kohdealueet) { - $q - .all( - _(kohdealueet) - .reject(function(ka) { - return _.isEqual(ka.nimi, ka.$vanhaNimi); - }) - .map(function(ka) { - return Oppiaineet.lisaaKohdealue( - { - perusteId: ProxyService.get("perusteId"), - osanId: OsanMuokkausHelper.getOppiaine().id - }, - ka - ).$promise; - }) - .value() - ) - .then( - Oppiaineet.kohdealueet( - { - perusteId: ProxyService.get("perusteId"), - osanId: OsanMuokkausHelper.getOppiaine().id - }, - $uibModalInstance.close - ) - ); - }; - } - }) - .result.then(uudetKohdealueetCb); - }; - } - }; - }) - .directive("perusopetusMuokkausInfo", function(OsanMuokkausHelper) { - return { - template: require("views/directives/perusopetus/muokkausinfo.html"), - restrict: "AE", - link: function(scope: any, element, attrs: any) { - scope.muokkausinfoOsa = attrs.osa || ""; - }, - controller: function($scope) { - $scope.getOppiaine = function() { - var oppiaine = OsanMuokkausHelper.getOppiaine(); - return oppiaine ? oppiaine.nimi : ""; - }; - $scope.getVuosiluokkakokonaisuus = function() { - var vlk = OsanMuokkausHelper.getVuosiluokkakokonaisuus(); - return vlk ? vlk.nimi : ""; - }; - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/perusteenTiedot.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/perusteenTiedot.ts deleted file mode 100644 index b5e9530480..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/perusteenTiedot.ts +++ /dev/null @@ -1,573 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .service("PerusteenTutkintonimikkeet", function(PerusteTutkintonimikekoodit, YleinenData) { - this.perusteellaTutkintonimikkeet = function(peruste) { - if (_.isObject(peruste)) { - peruste = peruste.koulutustyyppi; - } - return ( - _.isString(peruste) && - YleinenData.koulutustyyppiInfo[peruste] && - YleinenData.koulutustyyppiInfo[peruste].hasTutkintonimikkeet - ); - }; - - this.get = function(perusteId, object) { - PerusteTutkintonimikekoodit.get({ perusteId: perusteId }, function(res) { - object.koodisto = _.map(res, function(osa: any) { - function parsiNimi(kentta) { - if (osa[kentta + "Arvo"]) { - let nimi = osa.b[osa[kentta + "Arvo"]].metadata; - osa["$" + kentta + "Nimi"] = _.zipObject(_.map(nimi, "kieli"), _.map(nimi, "nimi")); - } - } - - parsiNimi("osaamisala"); - parsiNimi("tutkintonimike"); - parsiNimi("tutkinnonOsa"); - delete osa.b; - return osa; - }); - object.koodisto.$resolved = true; - }); - }; - }) - .controller("PerusteenTiedotCtrl", function( - $scope, - $stateParams, - $state, - Restangular, - SERVICE_LOC, - Koodisto, - Perusteet, - YleinenData, - PerusteProjektiService, - perusteprojektiTiedot, - Notifikaatiot, - Editointikontrollit, - Kaanna, - Varmistusdialogi, - $timeout, - $rootScope, - PerusteTutkintonimikekoodit, - $uibModal, - PerusteenTutkintonimikkeet, - valittavatKielet, - Kieli, - Arviointiasteikot, - Upload, - Api - ) { - $scope.kvliiteReadonly = true; - - - (async function lataaKvliite() { - const arviointiasteikotP = Arviointiasteikot.list().$promise; - const kvliite = await Perusteet.kvliite({ perusteId: $scope.peruste.id }).$promise; - const arviointiasteikot = await arviointiasteikotP; - kvliite.tasot = _.filter(kvliite.tasot, taso => (taso as any).nimi); - $scope.arviointiasteikot = arviointiasteikot; - $scope.arviointiasteikotMap = _.indexBy(arviointiasteikot, "id"); - // EP-1315 - const arviointiasteikko = _.find($scope.arviointiasteikotMap, (aa: any) => { - return aa.osaamistasot.length === 1; - }); - if (arviointiasteikko) { - arviointiasteikko.osaamistasot[0].otsikko = {}; - _.each(Kieli.SISALTOKIELET, kieli => { - arviointiasteikko.osaamistasot[0].otsikko[kieli] = Kaanna.kaanna("kvliiteen-yksiportainen-arviointiasteikko", kieli); - }); - } - $scope.koulutustyypit = YleinenData.koulutustyypit; - $scope.kvliite = kvliite; - $scope.kvliitePeriytynyt = !kvliite || kvliite.periytynyt; - $scope.peruste.kvliite = kvliite; - $scope.editablePeruste.kvliite = kvliite; - $scope.useampiSuoritustapa = _.size(kvliite.muodostumisenKuvaus) > 1; - })(); - - $scope.editEnabled = false; - let editingCallbacks = { - edit: function() { - fixTimefield("siirtymaPaattyy"); - fixTimefield("paatospvm"); - fixTimefield("voimassaoloAlkaa"); - fixTimefield("voimassaoloLoppuu"); - $scope.editablePeruste = _.cloneDeep($scope.peruste); - if (!$scope.editablePeruste.kvliite) { - $scope.editablePeruste.kvliite = {}; - } - }, - save: function() { - $scope.tallennaPeruste(); - }, - asyncValidate: function(after) { - Editointikontrollit.notifySentenceCaseWarnings({ - obj: $scope.editablePeruste, - paths: [ - 'nimi' - ], - after: after - }); - }, - validate: function() { - return $scope.projektinPerusteForm.$valid && !_.isEmpty($scope.editablePeruste.kielet); - }, - cancel: function() { - $scope.editablePeruste = $scope.peruste; - }, - notify: function(mode) { - $scope.editEnabled = mode; - // Fix msd-elastic issue of setting incorrect initial height - $timeout(function() { - $rootScope.$broadcast("elastic:adjust"); - }); - } - }; - Editointikontrollit.registerCallback(editingCallbacks); - - $scope.voiMuokata = function() { - // TODO Vain omistaja/sihteeri voi muokata - return true; - }; - - $scope.muokkaa = function() { - Editointikontrollit.startEditing(); - }; - - function noudaKorvattavienDiaarienNimet(korvattavatDiaarinumerot) { - if (korvattavatDiaarinumerot !== null && angular.isDefined(korvattavatDiaarinumerot)) { - angular.forEach(korvattavatDiaarinumerot, function(value) { - noudaDiaarilleNimi(value); - }); - } - $scope.ladataanKorvattavia = false; - } - - function noudaDiaarilleNimi(diaari) { - Perusteet.diaari( - { diaarinumero: diaari }, - function(vastaus) { - $scope.korvattavaDiaariNimiMap[diaari] = vastaus.nimi; - }, - function() { - $scope.korvattavaDiaariNimiMap[diaari] = "korvattavaa-ei-loydy-jarjestelmasta"; - } - ); - } - - $scope.lisaaKorvattavaDiaari = function(uusiKorvattavaDiaari) { - if (_.indexOf($scope.editablePeruste.korvattavatDiaarinumerot, uusiKorvattavaDiaari) !== -1) { - Notifikaatiot.varoitus("diaari-jo-listalla"); - } else if (!YleinenData.isDiaariValid(uusiKorvattavaDiaari)) { - Notifikaatiot.varoitus("diaarinumero-ei-validi"); - } else if (uusiKorvattavaDiaari === $scope.editablePeruste.diaarinumero) { - Notifikaatiot.varoitus("oma-diaarinumero"); - } else { - $scope.editablePeruste.korvattavatDiaarinumerot.push(uusiKorvattavaDiaari); - noudaDiaarilleNimi(uusiKorvattavaDiaari); - $scope.uusiKorvattavaDiaari = ""; - } - }; - - $scope.poistaKorvattavaDiaari = function(diaarinumero) { - const index = _.indexOf($scope.editablePeruste.korvattavatDiaarinumerot, diaarinumero); - if (index >= 0) { - $scope.editablePeruste.korvattavatDiaarinumerot.splice(index, 1); - } - }; - - $scope.ladataanKorvattavia = true; - $scope.korvattavaDiaariNimiMap = {}; - $scope.hakemassa = false; - $scope.peruste = perusteprojektiTiedot.getPeruste(); - - noudaKorvattavienDiaarienNimet($scope.peruste.korvattavatDiaarinumerot); - $scope.editablePeruste = $scope.peruste; - $scope.peruste.nimi = $scope.peruste.nimi || {}; - $scope.peruste.maarayskirje = $scope.peruste.maarayskirje || {}; - $scope.peruste.kuvaus = $scope.peruste.kuvaus || {}; - $scope.projektiId = $stateParams.perusteProjektiId; - // $scope.open = {}; - $scope.suoritustapa = PerusteProjektiService.getSuoritustapa() || "naytto"; - $scope.kielet = YleinenData.kielet; - $scope.dokumentit = {}; - $scope.koodisto = []; - $scope.$koodistoResolved = false; - $scope.$perusteellaTutkintonimikkeet = PerusteenTutkintonimikkeet.perusteellaTutkintonimikkeet($scope.peruste); - $scope.kieliOrder = Kieli.kieliOrder; - $scope.liite = { - files: [] - }; - $scope.liitteet = []; - $scope.liitteetUrl = window.location.origin + SERVICE_LOC + "/perusteet/" + $scope.peruste.id + "/liitteet/"; - - $scope.getLiitteet = async () => { - $scope.liitteet = Restangular.stripRestangular(await Api.one("perusteet", $scope.peruste.id).all("liitteet").getList()); - }; - $scope.getLiitteet(); - - $scope.saveLiite = async (tyyppi) => { - try { - const image = $scope.liite.files[0]; - const url = SERVICE_LOC + "/perusteet/" + $scope.peruste.id + "/liitteet"; - const data = { - url: url, - fields: { - nimi: image.name, - tyyppi: tyyppi - }, - file: image - }; - - await Upload.upload(data); - - $scope.message = "liitetiedosto-tallennettu"; - $scope.liite.files = []; - - await $scope.getLiitteet(); - - } catch (err) { - $scope.message = err.syy || "liitetiedosto-tallennusvirhe"; - $scope.liite.files = []; - } - }; - - $scope.Osaamisala = { - poista: function(oa) { - _.remove($scope.editablePeruste.osaamisalat, oa); - }, - lisaa: function() { - Koodisto.modaali( - function(koodi) { - $scope.editablePeruste.osaamisalat.push({ - nimi: koodi.nimi, - arvo: koodi.koodiArvo, - uri: koodi.koodiUri, - koodisto: koodi.koodisto.koodistoUri - }); - }, - { - tyyppi: function() { - return "osaamisala"; - }, - ylarelaatioTyyppi: function() { - return ""; - } - }, - angular.noop, - null - )(); - } - }; - - function valitseValittavatKielet(kielet = undefined) { - let current = kielet || $scope.editablePeruste.kielet; - $scope.valittavatKielet = _(valittavatKielet) - .sortBy($scope.kieliOrder) - .map(function(kielikoodi) { - return { available: _.indexOf(current, kielikoodi) === -1, koodi: kielikoodi }; - }) - .value(); - } - valitseValittavatKielet($scope.peruste.kielet); - - $scope.lisaaKieli = function(kieli) { - $scope.editablePeruste.kielet.push(kieli); - $scope.editablePeruste.kielet = _.unique($scope.editablePeruste.kielet); - valitseValittavatKielet(); - }; - - $scope.poistaKieli = function(kieli) { - _.remove($scope.editablePeruste.kielet, function(v) { - return v === kieli; - }); - valitseValittavatKielet(); - }; - - $scope.kaikkiKieletValittu = function() { - return _.size($scope.editablePeruste.kielet) === _.size(valittavatKielet); - }; - - $scope.lisaaNimike = function() { - $uibModal - .open({ - template: require("views/modals/lisaaTutkintonimike.html"), - controller: function($q, $scope, $uibModalInstance) { - $scope.koodit = {}; - $scope.valmisCb = function(res) { - $scope.koodit[res.koodisto.koodistoUri] = res; - }; - - $scope.ok = $uibModalInstance.close; - $scope.peru = $uibModalInstance.dismiss; - } - }) - .result.then(function(uusi) { - let obj: any = { - peruste: $scope.peruste.id, - tutkintonimikeUri: uusi.tutkintonimikkeet.koodiUri, - tutkintonimikeArvo: uusi.tutkintonimikkeet.koodiArvo, - $tutkintonimikeNimi: uusi.tutkintonimikkeet.nimi - }; - - if (uusi.osaamisala) { - obj.osaamisalaUri = uusi.osaamisala.koodiUri; - obj.osaamisalaArvo = uusi.osaamisala.koodiArvo; - obj.$osaamisalaNimi = uusi.osaamisala.nimi; - } - - if (uusi.tutkinnonosat) { - obj.tutkinnonOsaUri = uusi.tutkinnonosat.koodiUri; - obj.tutkinnonOsaArvo = uusi.tutkinnonosat.koodiArvo; - obj.$tutkinnonOsaNimi = uusi.tutkinnonosat.nimi; - } - - $scope.koodisto.push(obj); - PerusteTutkintonimikekoodit.save( - { perusteId: $scope.peruste.id }, - obj, - function(res) { - obj.id = res.id; - Notifikaatiot.onnistui("tutkintonimikkeen-lisays-onnistui"); - }, - function() { - _.remove($scope.koodisto, obj); - Notifikaatiot.varoitus("tutkintonimikkeen-lisays-epaonnistui"); - } - ); - }); - }; - - $scope.lisaaMuutosmaarays = () => - $scope.editablePeruste.muutosmaaraykset.push({ - url: {} - }); - $scope.poistaMuutosmaarays = muutosmaarays => _.remove($scope.editablePeruste.muutosmaaraykset, muutosmaarays); - - $scope.poistaLiite = async liite => { - await Api.one("perusteet", $scope.peruste.id).one("liitteet", liite.id).remove(); - _.remove($scope.liitteet, liite); - _.each($scope.editablePeruste.maarayskirje.liitteet, (l: any, kieli) => { - if (l.id === liite.id) { - delete $scope.editablePeruste.maarayskirje.liitteet[kieli]; - delete $scope.peruste.maarayskirje.liitteet[kieli]; - } - }); - _.each($scope.editablePeruste.muutosmaaraykset, muutosmaarays => { - _.each(muutosmaarays.liitteet, (l: any, kieli) => { - if (l.id === liite.id) { - delete muutosmaarays.liitteet[kieli]; - } - }); - }); - _.each($scope.peruste.muutosmaaraykset, muutosmaarays => { - _.each(muutosmaarays.liitteet, (l: any, kieli) => { - if (l.id === liite.id) { - delete muutosmaarays.liitteet[kieli]; - } - }); - }); - }; - - PerusteenTutkintonimikkeet.get($scope.peruste.id, $scope); - - $scope.poistaTutkintonimike = function(nimike) { - PerusteTutkintonimikekoodit.remove( - { - perusteId: $scope.peruste.id, - nimikeId: nimike.id - }, - function() { - _.remove($scope.koodisto, nimike); - Notifikaatiot.onnistui("tutkintonimike-poistettu-onnistuneesti"); - }, - Notifikaatiot.serverCb - ); - }; - - function fixTimefield(field) { - if (typeof $scope.peruste[field] === "number") { - $scope.peruste[field] = new Date($scope.peruste[field]); - } - } - - let currentTime = new Date().getTime(); - - $scope.voimassaOleva = !!( - !$scope.peruste.voimassaoloLoppuu || - ($scope.peruste.voimassaoloAlkaa && - currentTime > $scope.peruste.voimassaoloAlkaa && - currentTime < $scope.peruste.voimassaoloLoppuu) - ); - - fixTimefield("siirtymaPaattyy"); - fixTimefield("voimassaoloAlkaa"); - fixTimefield("voimassaoloLoppuu"); - - $scope.rajaaKoodit = function(koodi) { - return koodi.koodi.indexOf("_3") !== -1; - }; - - $scope.hasContent = function(value) { - if (_.isEmpty(value)) { - return false; - } - if (_.isObject(value)) { - return _.any(_.values(value)); - } - return !!value; - }; - - $scope.koodistoHaku = function(koodisto) { - let added: any = { - nimi: koodisto.nimi, - koulutuskoodiArvo: koodisto.koodiArvo, - koulutuskoodiUri: koodisto.koodiUri - }; - // Kun ensimmäinen koodi lisätään, perusteen nimi kopioidaan koodistosta - if ($scope.editablePeruste.koulutukset.length === 0) { - _.each(_.values(YleinenData.kielet), function(kieli: any) { - if (koodisto.nimi.hasOwnProperty(kieli)) { - $scope.editablePeruste.nimi[kieli] = koodisto.nimi[kieli]; - } - }); - } - $scope.editablePeruste.koulutukset.push(added); - - // $scope.open[koodisto.koodi] = true; - - Koodisto.haeAlarelaatiot( - koodisto.koodiUri, - function(relaatiot) { - _.forEach(relaatiot, function(rel) { - switch (rel.koodisto.koodistoUri) { - case "koulutusalaoph2002": - added.koulutusalakoodi = rel.koodiUri; - break; - case "opintoalaoph2002": - added.opintoalakoodi = rel.koodiUri; - break; - } - }); - }, - Notifikaatiot.fataali - ); - }; - - $scope.tallennaPeruste = function() { - if (!$scope.editablePeruste.voimassaoloLoppuu) { - delete $scope.editablePeruste.siirtymaPaattyy; - } - // Poistetaan määräyskirjeen tyhjät kentät - if ($scope.editablePeruste.maarayskirje.liitteet) { - _.each($scope.editablePeruste.maarayskirje.liitteet, (value, key) => { - if (_.isEmpty(value)) { - delete $scope.editablePeruste.maarayskirje.liitteet[key]; - } - }); - } - // Poistetaan muutoskirjeen tyhjät kentät - _.each($scope.editablePeruste.muutosmaaraykset, muutosmaarays => { - if (muutosmaarays.liitteet) { - _.each(muutosmaarays.liitteet, (value, key) => { - if (_.isEmpty(value)) { - delete muutosmaarays.liitteet[key]; - } - }); - } - }); - Perusteet.save( - { perusteId: $scope.peruste.id }, - $scope.editablePeruste, - res => { - $scope.peruste = res; - PerusteProjektiService.update(); - Notifikaatiot.onnistui("tallennettu"); - }, - err => { - Notifikaatiot.serverCb(err); - } - ); - }; - - $scope.avaaKoodistoModaali = Koodisto.modaali( - $scope.koodistoHaku, - { - tyyppi: _.constant("koulutus"), - // ylarelaatioTyyppi: () => $scope.editablePeruste.koulutustyyppi - ylarelaatioTyyppi: () => "" // Koodistohaun ehto on outo - }, - _.noop, - null - ); - - $scope.poistaKoulutus = function(koulutuskoodiArvo) { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-poisto", - teksti: "poistetaanko-koulutus", - primaryBtn: "poista", - successCb: function() { - $scope.editablePeruste.koulutukset = _.remove($scope.editablePeruste.koulutukset, function( - koulutus - ) { - return (koulutus as any).koulutuskoodiArvo !== koulutuskoodiArvo; - }); - } - })(); - }; - - $scope.koulutusalaNimi = function(koodi) { - return $scope.Koulutusalat.haeKoulutusalaNimi(koodi); - }; - - $scope.opintoalaNimi = function(koodi) { - return $scope.Opintoalat.haeOpintoalaNimi(koodi); - }; - - $scope.$on("event:spinner_on", function() { - $scope.hakemassa = true; - }); - - $scope.$on("event:spinner_off", function() { - $scope.hakemassa = false; - }); - }) - .directive("datepickerPopup", function(uibDatepickerPopupConfig, dateFilter) { - return { - restrict: "A", - require: "^ngModel", - link: function($scope, element, attrs, ngModel: any) { - let dateFormat; - - // FIXME Temp fix for Angular 1.3 support [#2659](https://github.com/angular-ui/bootstrap/issues/2659) - attrs.$observe("uibDatepickerPopup", function(value) { - dateFormat = value || uibDatepickerPopupConfig.datepickerPopup; - ngModel.$render(); - }); - - ngModel.$formatters.push(function(value) { - return ngModel.$isEmpty(value) ? value : dateFilter(value, dateFormat); - }); - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/perusteprojekti.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/perusteprojekti.ts deleted file mode 100644 index a2883e3cb3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/perusteprojekti.ts +++ /dev/null @@ -1,645 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .config($stateProvider => - $stateProvider - .state("root.perusteprojekti", { - abstract: true, - url: "/perusteprojekti/:perusteProjektiId", - template: require("views/perusteprojekti.html"), - controller: "PerusteprojektiCtrl", - resolve: { - koulutusalaService: Koulutusalat => Koulutusalat, - opintoalaService: Opintoalat => Opintoalat, - perusteprojektiTiedot: PerusteprojektiTiedotService => PerusteprojektiTiedotService, - perusteprojektiAlustus: (perusteprojektiTiedot, $stateParams) => - perusteprojektiTiedot.alustaProjektinTiedot($stateParams), - perusteprojektiOikeudet: PerusteprojektiOikeudetService => PerusteprojektiOikeudetService, - perusteprojektiOikeudetNouto: (perusteprojektiOikeudet, $stateParams) => - perusteprojektiOikeudet.noudaOikeudet($stateParams), - perusteprojekti: async (perusteprojektiOikeudetNouto, perusteprojektiTiedot) => { - await perusteprojektiTiedot.projektinTiedotAlustettu(); - return perusteprojektiTiedot.getProjekti(); - }, - peruste: async perusteprojektiTiedot => { - await perusteprojektiTiedot.projektinTiedotAlustettu(); - return perusteprojektiTiedot.getPeruste(); - }, - isOpas: async peruste => { - return peruste.tyyppi === "opas"; - }, - perusteprojektiBackLink: async ( - $state, - $stateParams, - $timeout, - PerusteProjektiService, - perusteprojekti, - peruste - ) => { - return new Promise((resolve, reject) => { - let result = ""; - if (peruste.tyyppi !== "opas") { - result = PerusteProjektiService.getUrl(perusteprojekti, peruste); - } else { - result = $state.href("root.perusteprojekti.suoritustapa.opassisalto", { - ...$stateParams, - perusteProjektiId: perusteprojekti.id, - suoritustapa: "opas" - }); - } - return resolve(result); - }); - } - } - }) - .state("root.perusteprojekti.suoritustapa.lukioosat", { - url: "/lukioosat/:osanTyyppi?{versio?:int}", - template: require("views/partials/lukio/osat/osalistaus.html"), - controller: "LukioOsalistausController", - resolve: { - perusteprojektiTiedot: PerusteprojektiTiedotService => PerusteprojektiTiedotService, - projektinTiedotAlustettu: perusteprojektiTiedot => perusteprojektiTiedot.projektinTiedotAlustettu(), - perusteenSisaltoAlustus: (perusteprojektiTiedot, projektinTiedotAlustettu, $stateParams) => - perusteprojektiTiedot.alustaPerusteenSisalto($stateParams) - }, - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(true); - } - }) - .state("root.perusteprojekti.suoritustapa.lukioosaalue", { - url: "/lukioosat/:osanTyyppi/:osanId/:tabId/:editEnabled?{versio?:int}", - template: require("views/partials/lukio/osat/osaalue.html"), - controller: "LukioOsaAlueController", - resolve: { - perusteprojektiTiedot: PerusteprojektiTiedotService => PerusteprojektiTiedotService, - projektinTiedotAlustettu: perusteprojektiTiedot => perusteprojektiTiedot.projektinTiedotAlustettu(), - perusteenSisaltoAlustus: (perusteprojektiTiedot, projektinTiedotAlustettu, $stateParams) => - perusteprojektiTiedot.alustaPerusteenSisalto($stateParams) - }, - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - } - }) - .state("root.perusteprojekti.suoritustapa.osalistaus", { - url: "/osat/:osanTyyppi", - template: require("views/partials/perusteprojekti/osalistaus.html"), - controller: "OsalistausController", - resolve: { - perusteprojektiTiedot: PerusteprojektiTiedotService => PerusteprojektiTiedotService, - projektinTiedotAlustettu: perusteprojektiTiedot => perusteprojektiTiedot.projektinTiedotAlustettu(), - perusteenSisaltoAlustus: (perusteprojektiTiedot, projektinTiedotAlustettu, $stateParams) => - perusteprojektiTiedot.alustaPerusteenSisalto($stateParams) - }, - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - } - }) - .state("root.perusteprojekti.suoritustapa.osaalue", { - url: "/osat/:osanTyyppi/:osanId/:tabId", - template: require("views/partials/perusteprojekti/osaalue.html"), - controller: "OsaAlueController", - resolve: { - perusteprojektiTiedot: PerusteprojektiTiedotService => PerusteprojektiTiedotService, - projektinTiedotAlustettu: perusteprojektiTiedot => perusteprojektiTiedot.projektinTiedotAlustettu(), - perusteenSisaltoAlustus: (perusteprojektiTiedot, projektinTiedotAlustettu, $stateParams) => - perusteprojektiTiedot.alustaPerusteenSisalto($stateParams) - }, - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - } - }) - .state("root.perusteprojekti.suoritustapa.muokkaus", { - url: "/muokkaus/:osanTyyppi/:osanId", - template: require("views/muokkaus.html"), - controller: "OsanMuokkausController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa", { - url: "/:suoritustapa", - template: "
    ", - navigaationimi: "navi-perusteprojekti", - resolve: { - perusteprojektiTiedot: PerusteprojektiTiedotService => PerusteprojektiTiedotService, - projektinTiedotAlustettu: (perusteprojektiTiedot) => - perusteprojektiTiedot.projektinTiedotAlustettu(), - perusteenSisaltoAlustus: (perusteprojektiTiedot, projektinTiedotAlustettu, $stateParams) => - perusteprojektiTiedot.alustaPerusteenSisalto($stateParams) - }, - controller: ( - $timeout, - $scope, - $state, - $stateParams, - YleinenData, - Kielimapper, - perusteprojektiTiedot - ) => { - // !!! Alustetaan kaikkia alitiloja varten !!!! - $scope.isVaTe = YleinenData.isValmaTelma(perusteprojektiTiedot.getPeruste()); - $scope.vateConverter = Kielimapper.mapTutkinnonosatKoulutuksenosat($scope.isVaTe); - const hasCurrentSuoritustapa = _.any( - $scope.peruste.suoritustavat, - (st: any) => st.suoritustapakoodi === $stateParams.suoritustapa - ); - if (!hasCurrentSuoritustapa && !_.isEmpty($scope.peruste.suoritustavat)) { - $state.go( - $state.current.name, - _.merge({ - suoritustapa: $scope.peruste.suoritustavat[0].suoritustapakoodi - }) - ); - } - }, - abstract: true - }) - .state("root.perusteprojekti.suoritustapa.muodostumissaannot", { - url: "/rakenne?{versio?:int}", - template: require("views/partials/perusteprojekti/muodostumissaannot.html"), - controller: "PerusteprojektiMuodostumissaannotCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - } - }) - .state("root.perusteprojekti.suoritustapa.koulutuksenosat", { - url: "/koulutuksenosat", - template: require("views/partials/perusteprojekti/tutkinnonosat.html"), - controller: "PerusteprojektiTutkinnonOsatCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - } - }) - .state("root.perusteprojekti.suoritustapa.koulutuksenosa", { - url: "/koulutuksenosa/{tutkinnonOsaViiteId}?{versio?:int}", - template: require("views/partials/muokkaus/koulutuksenosa.html"), - controller: "muokkausKoulutuksenosaCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - }, - resolve: { - rakenne: ($stateParams, PerusteenRakenne) => - PerusteenRakenne.haeByPerusteprojekti($stateParams.perusteProjektiId, $stateParams.suoritustapa) - } - }) - .state("root.perusteprojekti.suoritustapa.tutkinnonosat", { - url: "/tutkinnonosat", - template: require("views/partials/perusteprojekti/tutkinnonosat.html"), - controller: "PerusteprojektiTutkinnonOsatCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - } - }) - .state("root.perusteprojekti.suoritustapa.tutkinnonosa", { - url: "/tutkinnonosa/{tutkinnonOsaViiteId}?{versio?:int}", - template: require("views/partials/muokkaus/tutkinnonosa.html"), - controller: "muokkausTutkinnonosaCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - } - }) - .state("root.perusteprojekti.suoritustapa.taiteenala", { - url: "/taiteenala/{perusteenOsaViiteId}?{versio?:int}", - template: require("views/partials/muokkaus/taiteenala.html"), - controller: "taiteenalaCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - } - }) - .state("root.perusteprojekti.suoritustapa.tekstikappale", { - url: "/tekstikappale/{perusteenOsaViiteId}?{versio?:int}", - template: require("views/partials/muokkaus/tekstikappale.html"), - controller: "muokkausTekstikappaleCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(); - } - }) - .state("root.perusteprojekti.suoritustapa.tutkinnonosa.osaalue", { - url: "/osaalue/{osaAlueId}", - template: require("views/partials/muokkaus/tutkinnonOsaOsaAlue.html"), - controller: "TutkinnonOsaOsaAlueCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.koulutuksenosa.osaalue", { - url: "/osaalue/{osaAlueId}", - template: require("views/partials/muokkaus/koulutuksenOsaOsaAlue.html"), - controller: "KoulutuksenOsaOsaAlueCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.sisalto", { - url: "/sisalto", - template: require("views/partials/perusteprojekti/sisalto.html"), - controller: "PerusteprojektisisaltoCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.posisalto", { - url: "/posisalto", - template: require("views/partials/perusteprojekti/perusopetus.html"), - controller: "PerusopetusSisaltoController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.lukiosisalto", { - url: "/lukiosisalto", - template: require("views/partials/perusteprojekti/lukiokoulutus.html"), - controller: "LukiokoulutussisaltoController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.lops2019", { - url: "/lops2019", - template: require("views/partials/perusteprojekti/lops2019.html"), - controller: "Lops2019Controller", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.lops2019laajaalaiset", { - url: "/lops2019/laajaalaiset?{versio?:int}", - template: require("views/partials/lops2019/laajaalaiset.html"), - resolve: { - laajaalaiset: (Api, projektinTiedotAlustettu, perusteprojektiTiedot) => { - return Api - .one("perusteet", perusteprojektiTiedot.getPeruste().id) - .one("lops2019") - .one("laajaalaiset") - .get() - } - }, - controller: "Lops2019LaajaalaisetController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.lops2019oppiaineet", { - url: "/lops2019/oppiaineet?{versio?:int}", - template: require("views/partials/lops2019/oppiaineet.html"), - controller: "Lops2019OppiaineetController", - resolve: { - oppiaineet: (Api, projektinTiedotAlustettu, perusteprojektiTiedot) => { - return Api - .one("perusteet", perusteprojektiTiedot.getPeruste().id) - .one("lops2019") - .all("oppiaineet") - .getList() - } - }, - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.lops2019oppiaine", { - url: "/lops2019/oppiaineet/{oppiaineId}?{versio?:int}", - template: require("views/partials/lops2019/oppiaine.html"), - controller: "Lops2019OppiaineController", - resolve: { - oppiaine: (Api, projektinTiedotAlustettu, perusteprojektiTiedot, $stateParams) => { - return Api - .one("perusteet", perusteprojektiTiedot.getPeruste().id) - .one("lops2019") - .one("oppiaineet", $stateParams.oppiaineId) - .get() - } - }, - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.lops2019moduuli", { - url: "/lops2019/oppiaineet/{oppiaineId}/moduulit/{moduuliId}?{versio?:int}", - template: require("views/partials/lops2019/moduuli.html"), - controller: "Lops2019ModuuliController", - resolve: { - moduuli: (Api, projektinTiedotAlustettu, perusteprojektiTiedot, $stateParams) => { - return Api - .one("perusteet", perusteprojektiTiedot.getPeruste().id) - .one("lops2019") - .one("oppiaineet", $stateParams.oppiaineId) - .one("moduulit", $stateParams.moduuliId) - .get() - } - }, - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.losisalto", { - url: "/losisalto", - template: require("views/partials/perusteprojekti/esiopetus.html"), - controller: "EsiopetusSisaltoController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.tposisalto", { - url: "/tposisalto", - template: require("views/partials/perusteprojekti/tpoopetus.html"), - controller: "TpoSisaltoController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.vksisalto", { - url: "/vksisalto", - template: require("views/partials/perusteprojekti/esiopetus.html"), - controller: "EsiopetusSisaltoController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.suoritustapa.eosisalto", { - url: "/eosisalto", - template: require("views/partials/perusteprojekti/esiopetus.html"), - controller: "EsiopetusSisaltoController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.tiedot", { - url: "/perustiedot", - template: require("views/partials/perusteprojekti/tiedot.html"), - controller: "ProjektinTiedotCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojekti.peruste", { - url: "/peruste", - template: require("views/partials/perusteprojekti/peruste.pug"), - controller: "PerusteenTiedotCtrl", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - }, - resolve: { - valittavatKielet: Perusteet => { - return Perusteet.valittavatKielet().$promise; - } - } - }) - .state("root.perusteprojekti.termisto", { - url: "/termisto", - template: require("views/partials/perusteprojekti/termisto.html"), - controller: "TermistoController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(false); - } - }) - .state("root.perusteprojektiwizard", { - url: "/perusteprojekti", - template: "
    ", - abstract: true - }) - .state("root.perusteprojektiwizard.pohja", { - url: "/perustepohja", - template: require("views/partials/perusteprojekti/tiedot.html"), - controller: "ProjektinTiedotCtrl", - resolve: { - perusteprojektiTiedot: PerusteprojektiTiedotService => PerusteprojektiTiedotService - } - }) - .state("root.perusteprojektiwizard.tuonti", { - url: "/tuonti", - template: require("views/partials/perusteprojekti/tuonti.pug"), - controller: "ProjektinTuontiCtrl", - resolve: { - perusteprojektiTiedot: PerusteprojektiTiedotService => PerusteprojektiTiedotService - } - }) - .state("root.perusteprojektiwizard.tiedot", { - url: "/perustiedot", - template: require("views/partials/perusteprojekti/tiedot.html"), - controller: "ProjektinTiedotCtrl", - resolve: { - perusteprojektiTiedot: PerusteprojektiTiedotService => PerusteprojektiTiedotService - } - }) - .state("root.perusteprojekti.suoritustapa.lisaaLukioKurssi", { - url: "/lukiokurssi/luo", - template: require("views/partials/lukio/lisaaKurssi.html"), - controller: "LisaaLukioKurssiController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(true); - } - }) - .state("root.perusteprojekti.suoritustapa.kurssi", { - url: "/lukiokurssi/:kurssiId", - template: require("views/partials/lukio/kurssi.html"), - controller: "NaytaLukiokurssiController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(true); - } - }) - .state("root.perusteprojekti.suoritustapa.muokkaakurssia", { - url: "/lukiokurssi/:kurssiId/muokkaa", - template: require("views/partials/lukio/muokkaaKurssia.html"), - controller: "MuokkaaLukiokurssiaController", - onEnter: PerusteProjektiSivunavi => { - PerusteProjektiSivunavi.setVisible(true); - } - }) - ) - .controller( - "PerusteprojektiCtrl", - ( - $scope, - $state, - $stateParams, - Api, - Kieli, - Navigaatiopolku, - Notifikaatiot, - PdfCreation, - PerusteProjektiService, - PerusteProjektiSivunavi, - ProxyService, - SuoritustapaSisalto, - TermistoService, - TiedoteService, - TutkinnonOsaEditMode, - ValidointivirheService, - YleinenData, - isOpas, - koulutusalaService, - opintoalaService, - perusteprojektiBackLink, - perusteprojektiOikeudet, - perusteprojektiTiedot, - ) => { - function init() { - $scope.projekti = perusteprojektiTiedot.getProjekti(); - $scope.peruste = perusteprojektiTiedot.getPeruste(); - Kieli.setAvailableSisaltokielet($scope.peruste.kielet); - $scope.pdfEnabled = PerusteProjektiService.isPdfEnabled($scope.peruste); - TermistoService.setPeruste($scope.peruste); - ProxyService.set("perusteId", $scope.peruste.id); - } - init(); - - $scope.isOpas = isOpas; // Käytetään alinäkymissä - const isAmmatillinen = koulutustyyppi => _.includes(YleinenData.ammatillisetkoulutustyypit, koulutustyyppi); - $scope.isAmmatillinen = isAmmatillinen($scope.peruste.koulutustyyppi); - $scope.muokkausEnabled = false; - $scope.backLink = perusteprojektiBackLink; - $scope.$$kaannokset = perusteprojektiTiedot.getPerusteprojektiKaannokset($scope.isOpas && "opas"); - - $scope.lisaaTiedote = () => { - TiedoteService.lisaaTiedote({ julkinen: true }, $stateParams.perusteProjektiId); - }; - - $scope.validoiPeruste = async () => { - await ValidointivirheService.validoiProjekti($scope.projekti.id); - }; - - $scope.luoPdf = () => { - PdfCreation.setPeruste($scope.peruste); - PdfCreation.openModal($scope.isOpas, $scope.isAmmatillinen); - }; - - // Generoi uudestaan "Projektin päänäkymä"-linkki kun suoritustapa vaihtuu - if (_.size($scope.peruste.suoritustavat) > 1) { - $scope.$watch( - () => PerusteProjektiService.getSuoritustapa(), - () => ($scope.backLink = PerusteProjektiService.getUrl($scope.projekti, $scope.peruste)) - ); - } - - const amFooter = - '"; - $scope.Koulutusalat = koulutusalaService; - $scope.Opintoalat = opintoalaService; - $scope.sivunavi = { - suoritustapa: PerusteProjektiService.getSuoritustapa(), - items: [], - footer: amFooter, - type: "AM" - }; - const sivunaviItemsChanged = items => { - $scope.sivunavi.items = items; - }; - const sivunaviTypeChanged = type => { - $scope.sivunavi.type = type; - switch (type) { - case "YL": - $scope.sivunavi.suoritustapa = ""; - $scope.sivunavi.footer = ""; - break; - case "AIPE": - $scope.sivunavi.suoritustapa = ""; - $scope.sivunavi.footer = ""; - break; - default: - $scope.sivunavi.footer = amFooter; - $scope.sivunavi.suoritustapa = PerusteProjektiService.getSuoritustapa(); - break; - } - }; - PerusteProjektiSivunavi.register("itemsChanged", sivunaviItemsChanged); - PerusteProjektiSivunavi.register("typeChanged", sivunaviTypeChanged); - PerusteProjektiSivunavi.refresh(true); - - $scope.$on("$stateChangeSuccess", () => { - const newSuoritustapa = PerusteProjektiService.getSuoritustapa(); - if (newSuoritustapa !== $scope.sivunavi.suoritustapa) { - PerusteProjektiSivunavi.refresh(true); - } - $scope.sivunavi.suoritustapa = $scope.sivunavi.type === "AM" ? newSuoritustapa : ""; - }); - - Navigaatiopolku.setProject($scope.projekti, $scope.peruste); - - $scope.koulutusalaNimi = koodi => koulutusalaService.haeKoulutusalaNimi(koodi); - - $scope.canChangePerusteprojektiStatus = () => - perusteprojektiOikeudet.onkoOikeudet("perusteprojekti", "tilanvaihto"); - - $scope.showBackLink = () => - !( - $state.is("root.perusteprojekti.suoritustapa.sisalto") || - $state.is("root.perusteprojekti.suoritustapa.opassisalto") || - $state.is("root.perusteprojekti.suoritustapa.posisalto") || - $state.is("root.perusteprojekti.suoritustapa.aipesisalto") || - $state.is("root.perusteprojekti.suoritustapa.vksisalto") || - $state.is("root.perusteprojekti.suoritustapa.eosisalto") || - $state.is("root.perusteprojekti.suoritustapa.losisalto") || - $state.is("root.perusteprojekti.suoritustapa.tposisalto") || - $state.is("root.perusteprojekti.suoritustapa.lukiosisalto") || - $state.is("root.perusteprojekti.suoritustapa.lops2019") || - $state.is("root.perusteprojekti.suoritustapa.lops2019oppiaine") || - $state.is("root.perusteprojekti.suoritustapa.lops2019moduuli") - ); - - $scope.isNaviVisible = () => PerusteProjektiSivunavi.isVisible(); - - $scope.$on("update:perusteprojekti", () => { - $scope.projekti = perusteprojektiTiedot.getProjekti(); - perusteprojektiTiedot.alustaProjektinTiedot($stateParams).then(() => { - init(); - PerusteProjektiSivunavi.refresh(true); - }); - }); - - $scope.lisaaTekstikappale = () => { - function lisaaSisalto(method, sisalto, cb) { - cb = cb || angular.noop; - SuoritustapaSisalto[method]( - { - perusteId: $scope.projekti._peruste, - suoritustapa: PerusteProjektiService.getSuoritustapa() - }, - sisalto, - cb, - Notifikaatiot.serverCb - ); - } - - lisaaSisalto("save", {}, res => { - TutkinnonOsaEditMode.setMode(true); // Uusi luotu, siirry suoraan muokkaustilaan - $state.go("root.perusteprojekti.suoritustapa.tekstikappale", { - perusteenOsaViiteId: res.id, - versio: "" - }); - }); - }; - - $scope.$on("enableEditing", () => { - $scope.muokkausEnabled = true; - }); - $scope.$on("disableEditing", () => { - $scope.muokkausEnabled = false; - }); - - $scope.$on("$destroy", () => { - Kieli.resetSisaltokielet(); - }); - } - ); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektinTiedot.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektinTiedot.ts deleted file mode 100644 index c60bc8fd31..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektinTiedot.ts +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; -import { saveAs } from 'file-saver'; - - -angular - .module("eperusteApp") - .controller("ProjektiTiedotSisaltoModalCtrl", function( - $scope, - $uibModalInstance, - YleinenData, - PerusteprojektiResource, - Notifikaatiot, - Perusteet, - pohja - ) { - $scope.ominaisuudet = {}; - $scope.suoritustavat = []; - $scope.nykyinen = 1; - $scope.itemsPerPage = YleinenData.defaultItemsInModal; - $scope.totalItems = 0; - - var dhaku = _.debounce( - function(haku) { - Perusteet.internal( - { - nimi: haku, - sivu: $scope.nykyinen - 1, - sivukoko: $scope.itemsPerPage, - tila: "valmis", - perusteTyyppi: pohja ? "pohja" : "normaali", - koulutusvienti: "kaikki" - }, - function(perusteet) { - $scope.perusteet = perusteet.data; - $scope.totalItems = perusteet["kokonaismäärä"]; - $scope.itemsPerPage = perusteet.sivukoko; - } - ); - }, - 300, - { maxWait: 1000 } - ); - - $scope.haku = function(haku) { - dhaku(haku); - }; - $scope.haku(""); - - $scope.valitseSivu = function(sivu) { - if (sivu > 0 && sivu <= Math.ceil($scope.totalItems / $scope.itemsPerPage)) { - $scope.nykyinen = sivu; - } - $scope.haku($scope.syote); - }; - - $scope.takaisin = function() { - $scope.projekti = null; - $scope.peruste = null; - $scope.ominaisuudet = {}; - }; - $scope.ok = function(peruste) { - $uibModalInstance.close(peruste); - }; - $scope.peruuta = function() { - $uibModalInstance.dismiss(); - }; - }) - .controller("ProjektinTuontiCtrl", function( - $scope, - $state, - Api, - Notifikaatiot, - ) { - $scope.loadFile = () => { - const files = (document.getElementById("tiedostohaku") as any).files; - if (files.length === 0) { - Notifikaatiot.varoitus("tiedosto-puuttuu"); - return; - } - - const file = files.item(0); - - const formData = new FormData(); - const req = new XMLHttpRequest(); - req.onreadystatechange = () => { - if (req.readyState === XMLHttpRequest.DONE) { - if (req.status === 200) { - Notifikaatiot.onnistui("tallennettu"); - $state.go("root.admin.perusteprojektit"); - } else { - console.error(req.status); - Notifikaatiot.fataali("tiedosto-lahetys-epaonnistui"); - } - } - }; - - formData.append("file", file); - req.open("POST", Api.one("maintenance/import").getRequestedUrl()); - req.send(formData); - }; - }) - .controller("ProjektinTiedotCtrl", function( - $scope, - $state, - $stateParams, - $timeout, - $translate, - $uibModal, - Api, - Editointikontrollit, - Notifikaatiot, - Organisaatioryhmat, - PerusteProjektiService, - Perusteet, - PerusteprojektiResource, - YleinenData, - perusteprojektiTiedot, - ) { - PerusteProjektiService.watcher($scope, "projekti"); - $scope.lang = $translate.use() || $translate.preferredLanguage(); - $scope.editEnabled = false; - $scope.$ryhmaNimi = ""; - $scope.toteutukset = YleinenData.toteutukset; - var originalProjekti = null; - - var editingCallbacks = { - edit: function() { - originalProjekti = PerusteProjektiService.get(); - }, - save: function() { - $scope.tallennaPerusteprojekti(); - }, - validate: function() { - return $scope.perusteprojektiForm.$valid; - }, - cancel: function() { - $scope.projekti = originalProjekti; - }, - notify: function(mode) { - $scope.editEnabled = mode; - } - }; - Editointikontrollit.registerCallback(editingCallbacks); - - $scope.pohja = function() { - return ( - $state.is("root.perusteprojektiwizard.pohja") || ($scope.peruste && $scope.peruste.tyyppi === "pohja") - ); - }; - $scope.wizardissa = function() { - return $state.is("root.perusteprojektiwizard.tiedot") || $state.is("root.perusteprojektiwizard.pohja"); - }; - - $scope.voiMuokata = function() { - // TODO Vain omistaja/sihteeri voi muokata - return true; - }; - - $scope.muokkaa = function() { - Editointikontrollit.startEditing(); - }; - - $scope.lataaProjektiData = async function() { - location.href = await Api.one("maintenance/export/" + $scope.projekti._peruste).getRequestedUrl(); - }; - - $scope.puhdistaValinta = function() { - PerusteProjektiService.clean(); - if ($scope.wizardissa()) { - perusteprojektiTiedot.cleanData(); - $scope.peruste = undefined; - $scope.projekti = {}; - } - }; - $scope.puhdistaValinta(); - - $scope.projekti = perusteprojektiTiedot.getProjekti(); - $scope.projekti.laajuusYksikko = $scope.projekti.laajuusYksikko || "OSAAMISPISTE"; - const tyyppiIsLukio = tyyppi => - _.any(["koulutustyyppi_2", "koulutustyyppi_23", "koulutustyyppi_14"], i => i === tyyppi); - $scope.isLukiokoulutus = () => $scope.peruste && tyyppiIsLukio($scope.peruste.koulutustyyppi); - - $scope.tabs = [ - { - otsikko: "projekti-perustiedot", - url: "views/partials/perusteprojekti/perustiedot.html" - } - ]; - if (!$scope.pohja() && !$scope.isOpas) { - $scope.tabs.push({ - otsikko: "projekti-toimikausi", - url: "views/partials/perusteprojekti/toimikausi.html" - }); - } - - if ($scope.projekti.ryhmaOid) { - Organisaatioryhmat.yksi({ oid: $scope.projekti.ryhmaOid }, function(res) { - $scope.$ryhmaNimi = res.nimi; - }); - } - - $scope.haeRyhma = function() { - $uibModal - .open({ - template: require("views/modals/tuotyoryhma.html"), - controller: "TyoryhmanTuontiModalCtrl" - }) - .result.then(function(ryhma) { - $scope.projekti.ryhmaOid = ryhma.oid; - $scope.$ryhmaNimi = ryhma.nimi; - }); - }; - - $scope.mergeProjekti = function(tuoPohja) { - PerusteProjektiService.mergeProjekti($scope.projekti, tuoPohja).then(function(peruste, projekti) { - _.merge($scope.projekti, projekti); - $scope.peruste = peruste; - }); - }; - - $scope.tallennaPerusteprojekti = function() { - $scope.perusteprojektiForm.$saving = true; - let projekti = PerusteProjektiService.get(); - if ($scope.isLukiokoulutus()) { - //Lukiokoulutus - projekti.laajuusYksikko = "KURSSI"; - } - - if (projekti.id) { - delete projekti.koulutustyyppi; - delete projekti.laajuusYksikko; - } else { - projekti.id = null; - if (projekti.isReforminMukainen) { - projekti.suoritustavat = ["reformi"]; - } - } - - if ($scope.pohja()) { - projekti = _.merge( - _.pick( - projekti, - "id", - "nimi", - "koulutustyyppi", - "ryhmaOid", - "perusteId", - "reforminMukainen", - "esikatseltavissa", - "_peruste" - ), - { - tyyppi: "pohja" - } - ); - } - - PerusteprojektiResource.update( - projekti, - function(vastaus) { - if ($scope.wizardissa()) { - PerusteProjektiService.goToProjektiState(vastaus, projekti); - } else { - Notifikaatiot.onnistui("tallennettu"); - $scope.projekti = vastaus; - perusteprojektiTiedot.setProjekti(vastaus); - PerusteProjektiService.update(); - } - }, - Notifikaatiot.serverCb - ); - }; - }) - .controller("TyoryhmanTuontiModalCtrl", function( - $scope, - $uibModalInstance, - $translate, - Organisaatioryhmat, - Algoritmit - ) { - $scope.haetaan = true; - $scope.error = false; - $scope.rajaus = ""; - $scope.lang = "nimi." + $translate.use() || $translate.preferredLanguage(); - - $scope.totalItems = 0; - $scope.itemsPerPage = 10; - $scope.nykyinen = 1; - - Organisaatioryhmat.get( - function(res) { - $scope.haetaan = false; - $scope.ryhmat = _(res).value(); - $scope.totalItems = _.size($scope.ryhmat); - }, - function() { - $scope.haetaan = false; - $scope.error = true; - } - ); - - $scope.paivitaRajaus = function(rajaus) { - $scope.rajaus = rajaus; - }; - - $scope.rajaa = function(ryhma) { - return Algoritmit.match($scope.rajaus, ryhma.nimi); - }; - - $scope.valitseSivu = function(sivu) { - if (sivu > 0 && sivu <= Math.ceil($scope.totalItems / $scope.itemsPerPage)) { - $scope.nykyinen = sivu; - } - }; - - $scope.valitse = $uibModalInstance.close; - $scope.peruuta = $uibModalInstance.dismiss; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektinTila.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektinTila.ts deleted file mode 100644 index b4b92a18e5..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektinTila.ts +++ /dev/null @@ -1,135 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL, Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .service("PerusteprojektinTilanvaihto", function($uibModal) { - var that = this; - this.start = function(parametrit, setFn, successCb) { - successCb = successCb || angular.noop; - if (_.isFunction(setFn)) { - that.setFn = setFn; - } - $uibModal - .open({ - template: require("views/modals/perusteprojektinTila.html"), - controller: "PerusteprojektinTilaModalController", - resolve: { - data: function() { - return { - oldStatus: parametrit.currentStatus, - mahdollisetTilat: parametrit.mahdollisetTilat, - korvattavatDiaarinumerot: parametrit.korvattavatDiaarinumerot, - statuses: _.map(parametrit.mahdollisetTilat, function(item) { - return { key: item, description: "tilakuvaus-" + item }; - }), - tiedote: {} - }; - } - } - }) - .result.then(successCb); - }; - this.set = function(status, tiedote, successCb) { - that.setFn(status, tiedote, successCb); - }; - }) - .controller("PerusteprojektinTilaModalController", function($scope, $uibModal, $uibModalInstance, $state, data) { - $scope.data = data; - $scope.data.selected = null; - $scope.data.editable = false; - - $scope.valitse = function() { - $uibModalInstance.close(); - $uibModal.open({ - template: require("views/modals/perusteprojektinTilaVarmistus.html"), - controller: "PerusteprojektinTilaVarmistusModalController", - resolve: { - data: function() { - return $scope.data; - } - } - }); - }; - - $scope.peruuta = function() { - $uibModalInstance.dismiss(); - }; - }) - .controller("PerusteprojektinTilaVarmistusModalController", function( - $scope, - $uibModalInstance, - data, - PerusteprojektinTilanvaihto, - Perusteet, - YleinenData - ) { - $scope.data = data; - - $scope.datePicker = { - options: YleinenData.dateOptions, - format: YleinenData.dateFormatDatepicker, - state: false, - open: function($event) { - $event.preventDefault(); - $event.stopPropagation(); - $scope.datePicker.state = !$scope.datePicker.state; - } - }; - - $scope.korvattavatNimiMap = {}; - $scope.ladataanDiaareja = false; - if ( - data.korvattavatDiaarinumerot !== null && - data.korvattavatDiaarinumerot !== undefined && - data.korvattavatDiaarinumerot.length > 0 - ) { - $scope.ladataanDiaareja = true; - angular.forEach(data.korvattavatDiaarinumerot, function(diaari) { - Perusteet.diaari( - { diaarinumero: diaari }, - function(vastaus) { - $scope.korvattavatNimiMap[diaari] = vastaus.nimi; - }, - function() { - $scope.korvattavatNimiMap[diaari] = "korvattavaa-ei-loydy-jarjestelmasta"; - } - ); - }); - $scope.ladataanDiaareja = false; - } - - $scope.edellinen = function() { - $uibModalInstance.dismiss(); - PerusteprojektinTilanvaihto.start({ - currentStatus: data.oldStatus, - mahdollisetTilat: data.mahdollisetTilat, - korvattavatDiaarinumerot: data.korvattavatDiaarinumerot - }); - }; - - $scope.ok = function() { - PerusteprojektinTilanvaihto.set(data.selected, $scope.data.tiedote); - $uibModalInstance.close(); - }; - - $scope.peruuta = function() { - $uibModalInstance.dismiss(); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektinperustiedot.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektinperustiedot.ts deleted file mode 100644 index 89abb6ad75..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektinperustiedot.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("ProjektinperustiedotCtrl", function($scope, PerusteProjektiService, YleinenData, $stateParams) { - PerusteProjektiService.watcher($scope, "projekti"); - // $scope.isOpas = $stateParams.suoritustapa === "opas"; - - if (typeof $scope.projekti.paatosPvm === "number") { - $scope.projekti.paatosPvm = new Date($scope.projekti.paatosPvm); - } - - $scope.yksikot = YleinenData.yksikot; - - $scope.tehtavaluokat = ["Tehtäväluokka-1", "Tehtäväluokka-2", "Tehtäväluokka-3", "Tehtäväluokka-4"]; - - $scope.koulutustyypit = YleinenData.koulutustyypit; - - $scope.reforminMukainen = YleinenData.isReformoitava; - - $scope.tarvitseeLaajuuden = koulutustyyppi => - koulutustyyppi && _.indexOf(YleinenData.laajuudellisetKoulutustyypit, koulutustyyppi) !== -1; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektiryhma.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektiryhma.ts deleted file mode 100644 index 1202656692..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/projektiryhma.ts +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .directive("projektiryhmaHenkilot", function() { - return { - template: require("views/partials/projektiTyoryhmanKayttajat.html"), - restrict: "E", - scope: { - tyyppi: "=", - tyoryhmat: "=", - ryhma: "=" - }, - controller: function($scope, ColorCalculator, kayttajaToiminnot) { - $scope.nimikirjaimet = kayttajaToiminnot.nimikirjaimet; - $scope.filterRyhma = function(ryhma) { - return _.some(ryhma, $scope.filterJasen); - }; - $scope.filterJasen = function(jasen) { - return $scope.tyyppi === "kaikki" || $scope.tyoryhmat[$scope.tyyppi][jasen.oidHenkilo]; - }; - $scope.styleFor = function(jasen) { - return jasen.color - ? { - "background-color": "#" + jasen.color, - color: ColorCalculator.readableTextColorForBg(jasen.color) - } - : {}; - }; - } - }; - }) - .controller("ProjektiryhmaModalCtrl", function($scope, $uibModalInstance) { - $scope.ok = function() { - $uibModalInstance.close(); - }; - $scope.peruuta = function() { - $uibModalInstance.dismiss(); - }; - }) - .controller("ProjektiryhmaCtrl", function( - $scope, - $uibModal, - $stateParams, - Notifikaatiot, - Projektiryhma, - PerusteProjektiService, - kayttajaToiminnot, - PerusteprojektiTyoryhmat - ) { - PerusteProjektiService.watcher($scope, "projekti"); - - $scope.ryhma = {}; - $scope.tyyppi = "kaikki"; - $scope.lataa = true; - $scope.error = false; - - $scope.vaihdaTyyppi = function(tyyppi) { - $scope.tyyppi = tyyppi; - }; - - function errorCb(err) { - Notifikaatiot.serverCb(err); - $scope.error = true; - $scope.lataa = false; - } - - Projektiryhma.jasenetJaTyoryhmat( - $stateParams.perusteProjektiId, - function(re) { - $scope.jasenet = re.jasenet; - $scope.tyoryhmat = re.tyoryhmat; - $scope.ryhma = re.ryhma; - $scope.lataa = false; - }, - errorCb - ); - - $scope.muokkaaTyoryhmaa = function(ryhma) { - $uibModal - .open({ - template: require("views/modals/lisaaTyoryhma.html"), - controller: "LuoTyoryhmaModalCtrl", - resolve: { - ryhmat: function() { - return _.clone($scope.tyoryhmat) || {}; - }, - ryhma: function() { - return _.clone($scope.tyoryhmat[ryhma]) || null; - }, - jasenet: function() { - return _.clone($scope.jasenet); - } - } - }) - .result.then(function(muokattu) { - if (muokattu) { - PerusteprojektiTyoryhmat.save( - { - id: $stateParams.perusteProjektiId, - nimi: muokattu.nimi - }, - muokattu.jasenet, - function(lisatyt) { - delete $scope.tyoryhmat[ryhma]; - $scope.tyyppi = (_.first(lisatyt) as any).nimi; - $scope.tyoryhmat[$scope.tyyppi] = _.zipObject(_.map(lisatyt, "kayttajaOid"), lisatyt); - }, - errorCb - ); - } else { - PerusteprojektiTyoryhmat.delete( - { - id: $stateParams.perusteProjektiId, - nimi: ryhma - }, - function() { - delete $scope.tyoryhmat[ryhma]; - $scope.tyyppi = "kaikki"; - }, - Notifikaatiot.serverCb - ); - } - }); - }; - }) - .controller("LuoTyoryhmaModalCtrl", function($scope, $uibModalInstance, Varmistusdialogi, ryhma, ryhmat, jasenet) { - $scope.uusi = ryhma ? false : true; - - $scope.ryhma = { - nimi: ryhma ? (_.first(_.values(ryhma)) as any).nimi : "", - jasenet: ryhma ? _.keys(ryhma) : [] - }; - - $scope.validoiRyhma = function(nimi) { - $scope.virheellinenNimi = ryhmat[nimi] ? true : false; - }; - - $scope.jasenet = jasenet || []; - $scope.jasenMap = _.zipObject(_.map($scope.jasenet, "oidHenkilo"), $scope.jasenet); - $scope.to = []; - $scope.from = []; - - $scope.lista = []; - var lisatyt = ryhma || {}; - - if (!$scope.ryhma) { - $scope.ryhma = {}; - $scope.ryhma.jasenet = []; - } - - $scope.poistaLisatyt = function(t) { - return !lisatyt[t.oidHenkilo]; - }; - $scope.apulajittelija = function(oid) { - return $scope.jasenMap[oid].sukunimi; - }; - - $scope.siirraOikealle = function(from) { - _.forEach(from, function(t) { - $scope.ryhma.jasenet.push(t.oidHenkilo); - lisatyt[t.oidHenkilo] = true; - }); - from = []; - }; - - $scope.siirraVasemmalle = function(to) { - $scope.ryhma.jasenet = _.remove($scope.ryhma.jasenet, function(j: any) { - var remove = !_.some(to, function(t: any) { - return t === j; - }); - if (!remove) { - delete lisatyt[j]; - } - return remove; - }); - to = []; - }; - - $scope.ok = _.partial($uibModalInstance.close, $scope.ryhma); - $scope.peruuta = $uibModalInstance.dismiss; - $scope.poista = function() { - Varmistusdialogi.dialogi({ - otsikko: "poistetaanko-tyoryhma", - successCb: _.partial($uibModalInstance.close, null) - })(); - }; - }) - .service("kayttajaToiminnot", function() { - this.nimikirjaimet = function(nimi) { - return _.reduce( - nimi.split(" "), - function(memo, osa) { - return memo + (osa ? osa[0] : ""); - }, - "" - ).toUpperCase(); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/sisalto.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/sisalto.ts deleted file mode 100644 index 8788160a0c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/sisalto.ts +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("PerusteprojektisisaltoCtrl", function( - $scope, - $state, - $stateParams, - $timeout, - $uibModal, - PerusteenOsat, - PerusteenOsaViitteet, - SuoritustapaSisalto, - PerusteProjektiService, - perusteprojektiTiedot, - TutkinnonOsaEditMode, - Notifikaatiot, - Kaanna, - Algoritmit, - Editointikontrollit, - TEXT_HIERARCHY_MAX_DEPTH, - PerusteProjektiSivunavi, - Projektiryhma, - PerusteprojektiTyoryhmat, - TekstikappaleOperations, - SuoritustavanSisalto, - $location, - YleinenData - ) { - $scope.textMaxDepth = TEXT_HIERARCHY_MAX_DEPTH; - function lisaaSisalto(method, sisalto, cb) { - cb = cb || angular.noop; - SuoritustapaSisalto[method]( - { - perusteId: $scope.projekti._peruste, - suoritustapa: PerusteProjektiService.getSuoritustapa() - }, - sisalto, - cb, - Notifikaatiot.serverCb - ); - } - - $scope.rajaus = ""; - $scope.projekti = perusteprojektiTiedot.getProjekti(); - $scope.peruste = perusteprojektiTiedot.getPeruste(); - TekstikappaleOperations.setPeruste($scope.peruste); - $scope.peruste.sisalto = perusteprojektiTiedot.getSisalto(); - $scope.valittuSuoritustapa = PerusteProjektiService.getSuoritustapa(); - $scope.naytaTutkinnonOsat = true; - $scope.naytaRakenne = true; - $scope.muokkausTutkintokohtaisetOsat = false; - $scope.tyyppi = "kaikki"; - $scope.tyoryhmaMap = {}; - $scope.tiivistelma = $scope.peruste.kuvaus; - const isEsiopetus = _.any( - ["koulutustyyppi_15", "koulutustyyppi_22"], - tyyppi => tyyppi === $scope.peruste.koulutustyyppi - ); - $scope.muodostumisKompensaattori = isEsiopetus ? 1 : 0; - $scope.esitysurl = YleinenData.getPerusteEsikatseluLink($scope.projekti, - $scope.peruste, $stateParams.suoritustapa); - - $scope.onTyoryhmia = function() { - return !_.isEmpty($scope.tyoryhmat); - }; - - if ( - _.size($scope.peruste.suoritustavat) > 1 && - (_.first($scope.peruste.suoritustavat) as any).suoritustapakoodi !== "ops" - ) { - $scope.peruste.suoritustavat = (_ as any).arraySwap($scope.peruste.suoritustavat, 0, 1); - } - - PerusteprojektiTyoryhmat.getAll({ id: $stateParams.perusteProjektiId }, function(res) { - var tyoryhmaMap: any = {}; - _.each(_.sortBy(res, "nimi"), function(tr: any) { - if (!_.isArray(tyoryhmaMap[tr._perusteenosa])) { - tyoryhmaMap[tr._perusteenosa] = []; - } - tyoryhmaMap[tr._perusteenosa].push(tr.nimi); - }); - tyoryhmaMap.$resolved = true; - $scope.tyoryhmaMap = tyoryhmaMap; - }); - - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", SuoritustavanSisalto.asetaUrl); - - $scope.aakkosJarjestys = function(data) { - return Kaanna.kaanna(data.perusteenOsa.nimi); - }; - - $scope.filterJasen = function(jasen) { - return $scope.tyyppi === "kaikki" || $scope.tyoryhmat[$scope.tyyppi][jasen.oidHenkilo]; - }; - $scope.filterRyhma = function(ryhma) { - return _.some(ryhma, $scope.filterJasen); - }; - $scope.naytaRyhmanHenkilot = function(tyyppi, tyoryhmat, ryhma) { - $uibModal.open({ - template: - "" + - '' + - '" + - '", - controller: function($scope, $uibModalInstance, tyoryhmat, ryhma) { - $scope.tyyppi = tyyppi; - $scope.tyoryhmat = tyoryhmat; - $scope.ryhma = ryhma; - $scope.ok = $uibModalInstance.dismiss; - }, - resolve: { - tyyppi: function() { - return tyyppi; - }, - tyoryhmat: function() { - return tyoryhmat; - }, - ryhma: function() { - return ryhma; - } - } - }); - }; - - $scope.rajaaSisaltoa = function(value, tyyppi) { - if (_.isUndefined(value)) { - return; - } - $scope.tyyppi = tyyppi; - Algoritmit.kaikilleTutkintokohtaisilleOsille($scope.peruste.sisalto, function(osa, lapsellaOn) { - var tyoryhmat = osa.perusteenOsa ? $scope.tyoryhmaMap[osa.perusteenOsa.id] || [] : []; - var omistaaTyoryhman = tyyppi === "kaikki" || tyoryhmat.indexOf(tyyppi) !== -1; - osa.$filtered = - (lapsellaOn || Algoritmit.rajausVertailu(value, osa, "perusteenOsa", "nimi")) && omistaaTyoryhman; - return osa.$filtered; - }); - $scope.naytaTutkinnonOsat = - Kaanna.kaanna("tutkinnonosat") - .toLowerCase() - .indexOf(value.toLowerCase()) !== -1; - $scope.naytaRakenne = - Kaanna.kaanna("tutkinnon-rakenne") - .toLowerCase() - .indexOf(value.toLowerCase()) !== -1; - }; - - Projektiryhma.jasenetJaTyoryhmat($stateParams.perusteProjektiId, function(re) { - $scope.jasenet = _.zipObject(_.map(re.jasenet, "oidHenkilo"), re.jasenet); - $scope.ryhma = re.ryhma; - $scope.tyoryhmat = re.tyoryhmat; - $scope.lataa = false; - }); - - $scope.tuoSisalto = SuoritustavanSisalto.tuoSisalto(); - - $scope.createSisalto = function() { - lisaaSisalto("save", {}, function(response) { - TutkinnonOsaEditMode.setMode(true); // Uusi luotu, siirry suoraan muokkaustilaan - $state.go("root.perusteprojekti.suoritustapa.tekstikappale", { - perusteenOsaViiteId: response.id, - versio: "" - }); - }); - }; - - $scope.avaaSuljeKaikki = function(state) { - var open = false; - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - open = open || lapsi.$opened; - }); - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - lapsi.$opened = _.isUndefined(state) ? !open : state; - }); - }; - - $scope.vaihdaSuoritustapa = function(suoritustapakoodi) { - $scope.valittuSuoritustapa = suoritustapakoodi; - PerusteProjektiService.setSuoritustapa(suoritustapakoodi); - - $state.go("root.perusteprojekti.suoritustapa.sisalto", { - perusteProjektiId: $stateParams.perusteProjektiId, - suoritustapa: suoritustapakoodi - }); - }; - - (function() { - Algoritmit.kaikilleTutkintokohtaisilleOsille($scope.peruste.sisalto, function(osa) { - osa.$opened = false; - }); - $scope.rajaaSisaltoa(); - })(); - - Editointikontrollit.registerCallback({ - edit: function() { - $scope.muokkausTutkintokohtaisetOsat = true; - $scope.rajaus = ""; - $scope.avaaSuljeKaikki(true); - }, - save: function() { - TekstikappaleOperations.updateViitteet($scope.peruste.sisalto, function() { - $scope.muokkausTutkintokohtaisetOsat = false; - Notifikaatiot.onnistui("osien-rakenteen-päivitys-onnistui"); - PerusteProjektiSivunavi.refresh(true); - }); - }, - cancel: function() { - $state.go($state.current.name, $stateParams, { - reload: true - }); - }, - validate: function() { - return true; - }, - notify: angular.noop - }); - - $scope.aloitaMuokkaus = function() { - Editointikontrollit.startEditing(); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/taiteenala.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/taiteenala.ts deleted file mode 100644 index a172a34e2b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/taiteenala.ts +++ /dev/null @@ -1,532 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; - -export function taiteenalaCtrl( - $location, - $q, - $rootScope, - $scope, - $state, - $stateParams, - Editointikontrollit, - Kaanna, - Kommentit, - KommentitByPerusteenOsa, - Koodisto, - Lukitus, - Notifikaatiot, - PerusteProjektiSivunavi, - PerusteenOsanTyoryhmat, - PerusteenOsat, - PerusteprojektiTiedotService, - PerusteprojektiTyoryhmat, - ProjektinMurupolkuService, - TEXT_HIERARCHY_MAX_DEPTH, - TekstikappaleOperations, - TutkinnonOsaEditMode, - Tyoryhmat, - Utils, - Varmistusdialogi, - VersionHelper, - YleinenData, - perusteprojektiBackLink, - virheService -) { - async function init() { - $scope.taiteenala = {}; - $scope.versiot = {}; - const pts = await PerusteprojektiTiedotService; - $scope.peruste = pts.getPeruste(); - - $scope.sisalto = {}; - $scope.viitteet = {}; - $scope.valitseKieli = _.bind(YleinenData.valitseKieli, YleinenData); - - $scope.koodistoClick = Koodisto.modaali( - ({ nimi, koodiArvo, koodiUri, koodisto: { koodistoUri } }) => { - $scope.editableTaiteenala.koodi = { - nimi, - arvo: koodiArvo, - uri: koodiUri, - koodisto: koodistoUri - }; - }, - { - tyyppi: () => { - return "oppiaineetyleissivistava2"; - }, - ylarelaatioTyyppi: () => { - return ""; - }, - tarkista: _.constant(true) - } - ); - - $scope.cleanKoodi = () => { - $scope.editableTaiteenala.koodi = null; - }; - - var taiteenalaDefer = $q.defer(); - $scope.taiteenalaPromise = taiteenalaDefer.promise; - - $scope.valitseOsaamisala = function(oa) { - $scope.editableTaiteenala.osaamisala = oa; - }; - - $scope.kopioiMuokattavaksi = function() { - TekstikappaleOperations.clone($scope.viitteet[$scope.taiteenala.id].viite); - }; - - $scope.muokkaa = async () => { - Editointikontrollit.startEditing(await lukitse()); - }; - - $scope.canAddLapsi = function() { - return ( - $scope.taiteenala.id && - $scope.viitteet[$scope.taiteenala.id] && - $scope.viitteet[$scope.taiteenala.id].level < TEXT_HIERARCHY_MAX_DEPTH - 1 - ); - }; - - $scope.addLapsi = function() { - TekstikappaleOperations.addChild($scope.viiteId(), $stateParams.suoritustapa); - }; - - $scope.$watch("editEnabled", function(editEnabled) { - PerusteProjektiSivunavi.setVisible(!editEnabled); - }); - - $scope.fields = [ - { - path: "nimi", - hideHeader: false, - localeKey: "teksikappaleen-nimi", - type: "editor-header", - localized: true, - mandatory: true, - mandatoryMessage: "mandatory-otsikkoa-ei-asetettu", - order: 1 - }, - { - path: "teksti", - hideHeader: false, - localeKey: "tekstikappaleen-teksti", - type: "editor-area", - localized: true, - mandatory: false, - order: 2 - } - ]; - - $scope.taiteenalaFields = [ - { - path: "aikuistenOpetus", - localeKey: "taiteenala-aikuisten-opetus" - }, - { - path: "kasvatus", - localeKey: "taiteenala-kasvatus" - }, - { - path: "oppimisenArviointiOpetuksessa", - localeKey: "taiteenala-oppimisen-arvionti" - }, - { - path: "teemaopinnot", - localeKey: "taiteenala-teemaopinnot" - }, - { - path: "tyotavatOpetuksessa", - localeKey: "taiteenala-tyotavat" - }, - { - path: "yhteisetOpinnot", - localeKey: "taiteenala-yhteisetOpinnot" - } - ]; - - function fieldCount(): number { - let result = 0; - for (const field of $scope.taiteenalaFields) { - if ($scope.editableTaiteenala[field.path]) { - result += 1; - } - } - return result; - } - - const sisaltoCache = {}; - $scope.lisaaTaiteenalasisalto = path => { - $scope.editableTaiteenala[path] = sisaltoCache[path] ? sisaltoCache[path] : {}; - $scope.editableTaiteenala[path].jrno = fieldCount(); - }; - - $scope.sortableOptions = { - cursor: "move", - cursorAt: { top: 2, left: 2 }, - handle: ".handle", - delay: 100, - tolerance: "pointer" - }; - - $scope.removeTaiteenalasisalto = path => { - sisaltoCache[path] = $scope.editableTaiteenala[path]; - $scope.editableTaiteenala[path] = null; - }; - - $scope.sortedFields = []; - - const updateSortedFields = () => { - $scope.sortedFields = _($scope.taiteenalaFields) - .filter((val: any) => $scope.taiteenala[val.path]) - .map((val: any) => ({ - ...$scope.taiteenala[val.path], - localeKey: val.localeKey - })) - .sortBy("jnro") - .value(); - $scope.taiteenalaFields = _.sortBy($scope.taiteenalaFields, (field: any) => { - return $scope.taiteenala[field.path] && $scope.taiteenala[field.path].jnro; - }); - }; - - $scope.poistaTyoryhma = function(tr) { - Varmistusdialogi.dialogi({ - successCb: function() { - var uusi = _.remove(_.clone($scope.tyoryhmat), function(vanha) { - return vanha !== tr; - }); - paivitaRyhmat(uusi, function() { - $scope.tyoryhmat = uusi; - }); - }, - otsikko: "poista-tyoryhma-perusteenosasta", - teksti: Kaanna.kaanna("poista-tyoryhma-teksti", { nimi: tr }) - })(); - }; - - $scope.lisaaTyoryhma = function() { - Tyoryhmat.valitse(_.clone($scope.kaikkiTyoryhmat), _.clone($scope.tyoryhmat), function(uudet) { - var uusi = _.clone($scope.tyoryhmat).concat(uudet); - paivitaRyhmat(uusi, function() { - $scope.tyoryhmat = uusi; - }); - }); - }; - - $scope.tree = { - init: function() { - updateViitteet(); - }, - get: function() { - var items: any[] = []; - var id = $scope.taiteenala.id; - if ($scope.viitteet[id]) { - do { - items.push({ - label: $scope.viitteet[id].nimi, - url: - $scope.taiteenala.id === id - ? null - : $state.href("root.perusteprojekti.suoritustapa.tekstikappale", { - perusteenOsaViiteId: $scope.viitteet[id].viite, - versio: "" - }) - }); - id = $scope.viitteet[id] ? $scope.viitteet[id].parent : null; - } while (id); - } - items.reverse(); - return items.length > 1 ? items : []; - } - }; - - $scope.vaihdaVersio = function(versio) { - $scope.versiot.hasChanged = true; - VersionHelper.setUrl($scope.versiot); - //VersionHelper.changePerusteenosa($scope.versiot, {id: $scope.taiteenala.id}, responseFn); - }; - - $scope.revertCb = function(response) { - responseFn(response); - saveCb(response); - }; - - $scope.poista = function() { - var nimi = Kaanna.kaanna($scope.taiteenala.nimi); - - Varmistusdialogi.dialogi({ - successCb: doDelete, - otsikko: "poista-tekstikappale-otsikko", - teksti: Kaanna.kaanna("poista-tekstikappale-teksti", { nimi: nimi }) - })(); - }; - - function successCb(re) { - if (re.osanTyyppi !== "taiteenala") { - $location.path(perusteprojektiBackLink.substring(1)); - } - - $scope.taiteenala = re; - setupTekstikappale($scope.taiteenala); - taiteenalaDefer.resolve($scope.taiteenala); - updateSortedFields(); - if (TutkinnonOsaEditMode.getMode()) { - $scope.isNew = true; - $scope.muokkaa(); - } - } - - function errorCb() { - virheService.virhe("virhe-tekstikappaletta-ei-löytynyt"); - } - - var versio = $stateParams.versio; - if (versio) { - VersionHelper.getPerusteenOsaVersionsByViite( - $scope.versiot, - { id: $stateParams.perusteenOsaViiteId }, - true, - function() { - var revNumber = VersionHelper.select($scope.versiot, versio); - if (!revNumber) { - errorCb(); - } else { - PerusteenOsat.getVersioByViite( - { - viiteId: $stateParams.perusteenOsaViiteId, - versioId: revNumber - }, - successCb, - errorCb - ); - } - } - ); - } else { - PerusteenOsat.getByViite({ viiteId: $stateParams.perusteenOsaViiteId }, successCb, errorCb); - } - - TekstikappaleOperations.setPeruste($scope.$parent.peruste); - $scope.kaikkiTyoryhmat = []; - - function paivitaRyhmat(uudet, cb) { - PerusteenOsanTyoryhmat.save( - { - projektiId: $stateParams.perusteProjektiId, - osaId: $scope.taiteenala.id - }, - uudet, - cb, - Notifikaatiot.serverCb - ); - } - - Utils.scrollTo("#ylasivuankkuri"); - Kommentit.haeKommentit(KommentitByPerusteenOsa, { - id: $stateParams.perusteProjektiId, - perusteenOsaId: $stateParams.perusteenOsaViiteId - }); - - async function haeSisalto() { - if ($scope.tiedotService) { - const res = await $scope.tiedotService.haeSisalto($scope.$parent.peruste.id, $stateParams.suoritustapa); - $scope.sisalto = res; - setNavigation(); - } - } - - if ( - $stateParams.suoritustapa || - YleinenData.isPerusopetus($scope.$parent.peruste) || - YleinenData.isLukiokoulutus($scope.$parent.peruste) || - YleinenData.isAipe($scope.$parent.peruste) - ) { - const instance = await PerusteprojektiTiedotService; - $scope.tiedotService = instance; - await haeSisalto(); - } - - function lukitse() { - return $q(resolve => { - Lukitus.lukitsePerusteenosa($scope.taiteenala.id, resolve); - }); - } - - function fetch(cb) { - PerusteenOsat.get( - { osanId: $scope.taiteenala.id }, - (_ as any).setWithCallback($scope, "tekstikappale", cb) - ); - } - - async function setNavigation() { - $scope.tree.init(); - ProjektinMurupolkuService.setCustom($scope.tree.get()); - VersionHelper.setUrl($scope.versiot); - } - - $scope.viiteId = function() { - return $scope.viitteet[$scope.taiteenala.id] ? $scope.viitteet[$scope.taiteenala.id].viite : null; - }; - - async function storeTree(sisalto, level = 0) { - sisalto = await sisalto; - _.each(sisalto.lapset, function(lapsi) { - if (lapsi.perusteenOsa) { - if (!_.isObject($scope.viitteet[lapsi.perusteenOsa.id])) { - $scope.viitteet[lapsi.perusteenOsa.id] = {}; - } - $scope.viitteet[lapsi.perusteenOsa.id].viite = lapsi.id; - $scope.viitteet[lapsi.perusteenOsa.id].level = level; - $scope.viitteet[lapsi.perusteenOsa.id].nimi = lapsi.perusteenOsa.nimi; - if (sisalto.perusteenOsa) { - $scope.viitteet[lapsi.perusteenOsa.id].parent = sisalto.perusteenOsa.id; - } - storeTree(lapsi, level + 1); - } - }); - } - - function updateViitteet() { - $scope.viitteet = {}; - storeTree($scope.sisalto); - } - - function refreshPromise() { - $scope.editableTaiteenala = angular.copy($scope.taiteenala); - taiteenalaDefer = $q.defer(); - $scope.taiteenalaPromise = taiteenalaDefer.promise; - taiteenalaDefer.resolve($scope.editableTaiteenala); - } - - async function saveCb(res) { - // Päivitä versiot - const versiot = await haeVersiot(true); - VersionHelper.setUrl($scope.versiot); - PerusteProjektiSivunavi.refresh(); - Lukitus.vapautaPerusteenosa(res.id); - Notifikaatiot.onnistui("muokkaus-tekstikappale-tallennettu"); - await haeSisalto(); - updateSortedFields(); - } - - function doDelete(isNew) { - TekstikappaleOperations.delete($scope.viiteId(), isNew); - } - - async function setupTekstikappale(kappale) { - try { - const data = await $q.all([ - PerusteenOsanTyoryhmat.get({ - projektiId: $stateParams.perusteProjektiId, - osaId: $scope.taiteenala.id - }).$promise, - PerusteprojektiTyoryhmat.get({ id: $stateParams.perusteProjektiId }).$promise - ]); - $scope.tyoryhmat = data[0]; - $scope.kaikkiTyoryhmat = _.unique(_.map(data[1], "nimi")); - } catch (error) { - Notifikaatiot.serverCb(error); - } - - $scope.editableTaiteenala = angular.copy(kappale); - - Editointikontrollit.registerCallback({ - edit: () => { - return $q((resolve, reject) => { - TekstikappaleOperations.noDeleteWasDoneYet(); - lukitse().then(() => { - fetch(function() { - refreshPromise(); - resolve(); - }); - }); - }); - }, - asyncValidate: function(cb) { - Editointikontrollit.notifySentenceCaseWarnings({ - obj: $scope.editableTaiteenala, - paths: [ - 'nimi' - ], - after: cb - }); - }, - save: kommentti => { - return $q((resolve, reject) => { - let idx = 0; - for (const field of $scope.taiteenalaFields) { - if ($scope.editableTaiteenala[field.path]) { - $scope.editableTaiteenala[field.path].jnro = idx++; - } - } - $scope.editableTaiteenala.metadata = { kommentti: kommentti }; - PerusteenOsat.saveTekstikappale( - { - osanId: $scope.editableTaiteenala.id - }, - $scope.editableTaiteenala, - function(res) { - saveCb(res); - $scope.taiteenala = angular.copy($scope.editableTaiteenala); - $scope.isNew = false; - resolve(); - }, - Notifikaatiot.serverCb - ); - }); - }, - cancel: () => { - return $q((resolve, reject) => { - if (!TekstikappaleOperations.wasDeleted()) { - Lukitus.vapautaPerusteenosa($scope.taiteenala.id, function() { - if ($scope.isNew) { - doDelete(true); - } else { - fetch(function() { - refreshPromise(); - }); - } - $scope.isNew = false; - }); - } - resolve(); - }); - }, - notify: mode => { - $scope.editEnabled = mode; - }, - validate: mandatoryValidator => { - return mandatoryValidator($scope.fields, $scope.editableTaiteenala); - } - }); - - await haeVersiot(); - await setNavigation(); - Lukitus.tarkista($scope.taiteenala.id, $scope); - } - async function haeVersiot(force?) { - return VersionHelper.getPerusteenosaVersions($scope.versiot, { id: $scope.taiteenala.id }, force); - } - - async function responseFn(response) { - $scope.taiteenala = response; - await setupTekstikappale(response); - taiteenalaDefer = $q.defer(); - $scope.taiteenalaPromise = taiteenalaDefer.promise; - await taiteenalaDefer.resolve($scope.editableTaiteenala); - VersionHelper.setUrl($scope.versiot); - } - - // Odota tekstikenttien alustus ja päivitä editointipalkin sijainti - var received = 0; - $scope.$on("ckEditorInstanceReady", function() { - if (++received === $scope.fields.length) { - $rootScope.$broadcast("editointikontrollitRefresh"); - } - }); - } - init(); -} diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tekstikappale.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tekstikappale.ts deleted file mode 100644 index 174a2792bb..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tekstikappale.ts +++ /dev/null @@ -1,626 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .service("TekstikappaleOperations", function( - YleinenData, - PerusteenOsaViitteet, - Editointikontrollit, - Notifikaatiot, - $state, - SuoritustapaSisalto, - TutkinnonOsaEditMode, - PerusopetusService, - $stateParams, - LukiokoulutusService, - Api - ) { - var peruste = null; - var deleteDone = false; - - this.setPeruste = function(value) { - peruste = value; - }; - - function goToView(response, id = response.id) { - var params = { - perusteenOsaViiteId: id, - versio: "" - }; - $state.go("root.perusteprojekti.suoritustapa.tekstikappale", params, { reload: true }); - } - - this.add = async function() { - if (YleinenData.isPerusopetus(peruste)) { - PerusopetusService.saveOsa( - {}, - { - osanTyyppi: "tekstikappale" - }, - response => { - TutkinnonOsaEditMode.setMode(true); // Uusi luotu, siirry suoraan muokkaustilaan - goToView(response); - } - ); - } else if (YleinenData.isLukiokoulutus(peruste)) { - if (peruste.toteutus === 'lops2019') { - const response = await Api - .one("perusteet", peruste.id) - .all("lops2019") - .customPOST({}, "sisalto"); - TutkinnonOsaEditMode.setMode(true); - goToView(response); - } else { - LukiokoulutusService.saveOsa( - {}, - { - osanTyyppi: "tekstikappale" - }, - response => { - TutkinnonOsaEditMode.setMode(true); // Uusi luotu, siirry suoraan muokkaustilaan - goToView(response); - } - ); - } - } - }; - - this.wasDeleted = function() { - var ret = deleteDone; - deleteDone = false; - return ret; - }; - this.noDeleteWasDoneYet = function() { - deleteDone = false; - }; - - this.delete = async function(viiteId, isNew, then?) { - function commonCb(tyyppi) { - deleteDone = true; - if (isNew !== true) { - Editointikontrollit.cancelEditing(); - Notifikaatiot.onnistui("poisto-onnistui"); - } - $state.go("root.perusteprojekti.suoritustapa." + tyyppi, {}, { reload: true }); - } - - let successCb; - if (peruste && peruste.tyyppi === "opas") { - successCb = _.partial(commonCb, "opassisalto"); - } - else if (peruste && peruste.toteutus === "lops2019") { - successCb = _.partial(commonCb, "lops2019"); - } - else { - successCb = _.partial(commonCb, YleinenData.koulutustyyppiInfo[peruste.koulutustyyppi].sisaltoTunniste); - } - if (YleinenData.isPerusopetus(peruste)) { - PerusopetusService.deleteOsa({ $url: "dummy", id: viiteId }, successCb, Notifikaatiot.serverCb); - } else if (YleinenData.isLukiokoulutus(peruste)) { - if (peruste.toteutus === "lops2019") { - try { - await Api - .one("perusteet", peruste.id) - .all("lops2019") - .one("sisalto", viiteId) - .remove(); - successCb(); - } catch (e) { - Notifikaatiot.serverCb(e); - } - } else { - LukiokoulutusService.deleteOsa({ $url: "dummy", id: viiteId }, successCb, Notifikaatiot.serverCb); - } - } else { - PerusteenOsaViitteet.delete({ viiteId: viiteId }, {}, successCb, Notifikaatiot.serverCb); - } - }; - - this.addChild = function(viiteId, suoritustapa) { - SuoritustapaSisalto.addChild( - { - perusteId: peruste.id, - suoritustapa: suoritustapa, - perusteenosaViiteId: viiteId - }, - {}, - function(response) { - TutkinnonOsaEditMode.setMode(true); - goToView(response); - }, - Notifikaatiot.varoitus - ); - }; - - this.clone = function(viiteId) { - if (YleinenData.isPerusopetus(peruste) || YleinenData.isLukiokoulutus(peruste)) { - } else { - PerusteenOsaViitteet.kloonaaTekstikappale( - { - perusteId: peruste.id, - suoritustapa: $stateParams.suoritustapa, - viiteId: viiteId - }, - function(tk) { - TutkinnonOsaEditMode.setMode(true); // Uusi luotu, siirry suoraan muokkaustilaan - Notifikaatiot.onnistui("tekstikappale-kopioitu-onnistuneesti"); - goToView(tk, tk.id); - } - ); - } - }; - - function mapSisalto(root) { - return { - id: root.id, - perusteenOsa: null, - lapset: _.map(root.lapset, mapSisalto) - }; - } - - this.updateViitteet = function(sisalto, successCb) { - var success = successCb || angular.noop; - var mapped = mapSisalto(sisalto); - - if (YleinenData.isPerusopetus(peruste)) { - PerusopetusService.updateSisaltoViitteet(sisalto, mapped, successCb); - } else if (YleinenData.isLukiokoulutus(peruste)) { - LukiokoulutusService.updateSisaltoViitteet(sisalto, mapped, successCb); - } else { - PerusteenOsaViitteet.update( - { - viiteId: sisalto.id - }, - mapped, - success, - Notifikaatiot.serverCb - ); - } - }; - }) - .controller("muokkausTekstikappaleCtrl", async function( - $location, - $q, - $rootScope, - $scope, - $state, - $stateParams, - AutomaattitallennusService, - Editointikontrollit, - Kaanna, - Kommentit, - KommentitByPerusteenOsa, - Lukitus, - MuutProjektitService, - Notifikaatiot, - PerusteProjektiSivunavi, - PerusteenOsanTyoryhmat, - PerusteenOsat, - PerusteprojektiTiedotService, - PerusteprojektiTyoryhmat, - ProjektinMurupolkuService, - TEXT_HIERARCHY_MAX_DEPTH, - TekstikappaleOperations, - TutkinnonOsaEditMode, - Tyoryhmat, - Utils, - Varmistusdialogi, - VersionHelper, - YleinenData, - perusteprojektiBackLink, - virheService, - ) { - $scope.tekstikappale = {}; - $scope.versiot = {}; - const pts = await PerusteprojektiTiedotService; - $scope.peruste = pts.getPeruste(); - - $scope.sisalto = {}; - $scope.viitteet = {}; - $scope.valitseKieli = _.bind(YleinenData.valitseKieli, YleinenData); - - var tekstikappaleDefer = $q.defer(); - $scope.tekstikappalePromise = tekstikappaleDefer.promise; - - $scope.valitseOsaamisala = function(oa) { - if (oa && oa.nimi) { - $scope.editableTekstikappale.nimi = { - ...$scope.editableTekstikappale.nimi, - ...oa.nimi, - }; - } - $scope.editableTekstikappale.osaamisala = oa; - }; - - $scope.kopioiMuokattavaksi = function() { - Varmistusdialogi.dialogi({ - otsikko: "kopioidaanko-tekstikappale", - primaryBtn: "kopioi", - successCb: () => { - TekstikappaleOperations.clone($scope.viitteet[$scope.tekstikappale.id].viite); - } - })(); - }; - - $scope.muokkaa = async () => { - await MuutProjektitService.varmistusdialogi($scope.tekstikappale.id); - Editointikontrollit.startEditing(await lukitse()); - }; - - $scope.canAddLapsi = function() { - return ( - $scope.tekstikappale.id && - $scope.viitteet[$scope.tekstikappale.id] && - $scope.viitteet[$scope.tekstikappale.id].level < TEXT_HIERARCHY_MAX_DEPTH - 1 - ); - }; - - $scope.addLapsi = function() { - TekstikappaleOperations.addChild($scope.viiteId(), $stateParams.suoritustapa); - }; - - $scope.$watch("editEnabled", function(editEnabled) { - PerusteProjektiSivunavi.setVisible(!editEnabled); - }); - - $scope.fields = [ - { - path: "nimi", - hideHeader: false, - localeKey: "teksikappaleen-nimi", - type: "editor-header", - localized: true, - mandatory: true, - mandatoryMessage: "mandatory-otsikkoa-ei-asetettu", - order: 1 - }, - { - path: "teksti", - hideHeader: false, - localeKey: "tekstikappaleen-teksti", - type: "editor-area", - localized: true, - mandatory: false, - order: 2 - } - ]; - - $scope.poistaTyoryhma = function(tr) { - Varmistusdialogi.dialogi({ - successCb: function() { - var uusi = _.remove(_.clone($scope.tyoryhmat), function(vanha) { - return vanha !== tr; - }); - paivitaRyhmat(uusi, function() { - $scope.tyoryhmat = uusi; - }); - }, - otsikko: "poista-tyoryhma-perusteenosasta", - teksti: Kaanna.kaanna("poista-tyoryhma-teksti", { nimi: tr }) - })(); - }; - - $scope.lisaaTyoryhma = function() { - Tyoryhmat.valitse(_.clone($scope.kaikkiTyoryhmat), _.clone($scope.tyoryhmat), function(uudet) { - var uusi = _.clone($scope.tyoryhmat).concat(uudet); - paivitaRyhmat(uusi, function() { - $scope.tyoryhmat = uusi; - }); - }); - }; - - $scope.tree = { - init: function() { - updateViitteet(); - }, - get: function() { - var items: any = []; - var id = $scope.tekstikappale.id; - if ($scope.viitteet[id]) { - do { - items.push({ - label: $scope.viitteet[id].nimi, - url: - $scope.tekstikappale.id === id - ? null - : $state.href("root.perusteprojekti.suoritustapa.tekstikappale", { - perusteenOsaViiteId: $scope.viitteet[id].viite, - versio: "" - }) - }); - id = $scope.viitteet[id] ? $scope.viitteet[id].parent : null; - } while (id); - } - items.reverse(); - return items.length > 1 ? items : []; - } - }; - - $scope.vaihdaVersio = function() { - $scope.versiot.hasChanged = true; - VersionHelper.setUrl($scope.versiot); - //VersionHelper.changePerusteenosa($scope.versiot, {id: $scope.tekstikappale.id}, responseFn); - }; - - $scope.revertCb = function(response) { - responseFn(response); - saveCb(response); - }; - - $scope.poista = function() { - var nimi = Kaanna.kaanna($scope.tekstikappale.nimi); - - Varmistusdialogi.dialogi({ - successCb: doDelete, - otsikko: "poista-tekstikappale-otsikko", - teksti: Kaanna.kaanna("poista-tekstikappale-teksti", { nimi: nimi }) - })(); - }; - - async function successCb(re) { - if (re.osanTyyppi !== "tekstikappale") { - $location.path(perusteprojektiBackLink.substring(1)); - } - - $scope.tekstikappale = re; - setupTekstikappale($scope.tekstikappale); - tekstikappaleDefer.resolve($scope.tekstikappale); - if (TutkinnonOsaEditMode.getMode()) { - $scope.isNew = true; - $scope.muokkaa(); - } - $scope.kaytossaMonessaProjektissa = _.size(await MuutProjektitService.projektitJoissaKaytossa(re.id)) > 1; - } - - function errorCb() { - virheService.virhe("virhe-tekstikappaletta-ei-löytynyt"); - } - - var versio = $stateParams.versio ? $stateParams.versio.replace(/\//g, "") : null; - if (versio) { - VersionHelper.getPerusteenOsaVersionsByViite( - $scope.versiot, - { id: $stateParams.perusteenOsaViiteId }, - true, - function() { - var revNumber = VersionHelper.select($scope.versiot, versio); - if (!revNumber) { - errorCb(); - } else { - PerusteenOsat.getVersioByViite( - { - viiteId: $stateParams.perusteenOsaViiteId, - versioId: revNumber - }, - successCb, - errorCb - ); - } - } - ); - } else { - PerusteenOsat.getByViite({ viiteId: $stateParams.perusteenOsaViiteId }, successCb, errorCb); - } - - TekstikappaleOperations.setPeruste($scope.$parent.peruste); - $scope.kaikkiTyoryhmat = []; - - function paivitaRyhmat(uudet, cb) { - PerusteenOsanTyoryhmat.save( - { - projektiId: $stateParams.perusteProjektiId, - osaId: $scope.tekstikappale.id - }, - uudet, - cb, - Notifikaatiot.serverCb - ); - } - - Utils.scrollTo("#ylasivuankkuri"); - Kommentit.haeKommentit(KommentitByPerusteenOsa, { - id: $stateParams.perusteProjektiId, - perusteenOsaId: $stateParams.perusteenOsaViiteId - }); - - async function haeSisalto() { - if ($scope.tiedotService) { - const res = await $scope.tiedotService.haeSisalto($scope.$parent.peruste.id, $stateParams.suoritustapa); - $scope.sisalto = res; - setNavigation(); - } - } - - if ( - $stateParams.suoritustapa || - YleinenData.isPerusopetus($scope.$parent.peruste) || - YleinenData.isLukiokoulutus($scope.$parent.peruste) || - YleinenData.isAipe($scope.$parent.peruste) - ) { - const instance = await PerusteprojektiTiedotService; - $scope.tiedotService = instance; - await haeSisalto(); - } - - function lukitse() { - return $q(resolve => { - Lukitus.lukitsePerusteenosa($scope.tekstikappale.id, resolve); - }); - } - - function fetch(cb) { - PerusteenOsat.get( - { osanId: $scope.tekstikappale.id }, - (_ as any).setWithCallback($scope, "tekstikappale", cb) - ); - } - - async function setNavigation() { - $scope.tree.init(); - ProjektinMurupolkuService.setCustom($scope.tree.get()); - VersionHelper.setUrl($scope.versiot); - } - - $scope.viiteId = function() { - return $scope.viitteet[$scope.tekstikappale.id] ? $scope.viitteet[$scope.tekstikappale.id].viite : null; - }; - - async function storeTree(sisalto, level = 0) { - sisalto = await sisalto; - _.each(sisalto.lapset, function(lapsi) { - if (lapsi.perusteenOsa) { - if (!_.isObject($scope.viitteet[lapsi.perusteenOsa.id])) { - $scope.viitteet[lapsi.perusteenOsa.id] = {}; - } - $scope.viitteet[lapsi.perusteenOsa.id].viite = lapsi.id; - $scope.viitteet[lapsi.perusteenOsa.id].level = level; - $scope.viitteet[lapsi.perusteenOsa.id].nimi = lapsi.perusteenOsa.nimi; - if (sisalto.perusteenOsa) { - $scope.viitteet[lapsi.perusteenOsa.id].parent = sisalto.perusteenOsa.id; - } - storeTree(lapsi, level + 1); - } - }); - } - - function updateViitteet() { - $scope.viitteet = {}; - storeTree($scope.sisalto); - } - - async function refreshPromise() { - $scope.editableTekstikappale = angular.copy($scope.tekstikappale); - tekstikappaleDefer = $q.defer(); - $scope.tekstikappalePromise = tekstikappaleDefer.promise; - tekstikappaleDefer.resolve($scope.editableTekstikappale); - } - - async function saveCb(res) { - // Päivitä versiot - AutomaattitallennusService.stop(); - const versiot = await haeVersiot(true); - VersionHelper.setUrl($scope.versiot); - PerusteProjektiSivunavi.refresh(); - Lukitus.vapautaPerusteenosa(res.id); - Notifikaatiot.onnistui("muokkaus-tekstikappale-tallennettu"); - await haeSisalto(); - } - - function doDelete(isNew) { - TekstikappaleOperations.delete($scope.viiteId(), isNew); - } - - async function setupTekstikappale(kappale) { - try { - const data = await $q.all([ - PerusteenOsanTyoryhmat.get({ - projektiId: $stateParams.perusteProjektiId, - osaId: $scope.tekstikappale.id - }).$promise, - PerusteprojektiTyoryhmat.get({ id: $stateParams.perusteProjektiId }).$promise - ]); - $scope.tyoryhmat = data[0]; - $scope.kaikkiTyoryhmat = _.unique(_.map(data[1], "nimi")); - } catch (error) { - Notifikaatiot.serverCb(error); - } - - $scope.editableTekstikappale = angular.copy(kappale); - - Editointikontrollit.registerCallback({ - edit: () => { - return $q(async (resolve, reject) => { - TekstikappaleOperations.noDeleteWasDoneYet(); - await lukitse(); - fetch(async function() { - if ($scope.tekstikappale.id) { - await AutomaattitallennusService.start( - "tekstikappale" + $scope.tekstikappale.id, - () => $scope.editableTekstikappale, - (data: any) => { - $scope.tekstikappale = angular.copy(data); - }); - } - await refreshPromise(); - resolve(); - }); - }); - }, - save: kommentti => { - return $q((resolve, reject) => { - $scope.editableTekstikappale.metadata = { kommentti: kommentti }; - PerusteenOsat.saveTekstikappale( - { - osanId: $scope.editableTekstikappale.id - }, - $scope.editableTekstikappale, - function(res) { - saveCb(res); - $scope.tekstikappale = angular.copy($scope.editableTekstikappale); - $scope.isNew = false; - resolve(); - }, - Notifikaatiot.serverCb - ); - }); - }, - cancel: () => { - return $q((resolve, reject) => { - if (!TekstikappaleOperations.wasDeleted()) { - Lukitus.vapautaPerusteenosa($scope.tekstikappale.id, function() { - if ($scope.isNew) { - doDelete(true); - } else { - fetch(async function() { - await refreshPromise(); - }); - } - $scope.isNew = false; - }); - } - resolve(); - }); - }, - notify: mode => { - $scope.editEnabled = mode; - }, - asyncValidate: function(after) { - Editointikontrollit.notifySentenceCaseWarnings({ - obj: $scope.editableTekstikappale, - paths: [ - 'nimi' - ], - after: after - }); - }, - validate: mandatoryValidator => { - return mandatoryValidator($scope.fields, $scope.editableTekstikappale); - } - }); - - await haeVersiot(); - await setNavigation(); - Lukitus.tarkista($scope.tekstikappale.id, $scope); - } - async function haeVersiot(force?) { - return VersionHelper.getPerusteenosaVersions($scope.versiot, { id: $scope.tekstikappale.id }, force); - } - - function responseFn(response) { - $scope.tekstikappale = response; - setupTekstikappale(response); - tekstikappaleDefer = $q.defer(); - $scope.tekstikappalePromise = tekstikappaleDefer.promise; - tekstikappaleDefer.resolve($scope.editableTekstikappale); - VersionHelper.setUrl($scope.versiot); - } - - // Odota tekstikenttien alustus ja päivitä editointipalkin sijainti - var received = 0; - $scope.$on("ckEditorInstanceReady", function() { - if (++received === $scope.fields.length) { - $rootScope.$broadcast("editointikontrollitRefresh"); - } - }); - } as any); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/termisto.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/termisto.ts deleted file mode 100644 index 12dd63d7f9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/termisto.ts +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .factory("TermistoCRUD", function($resource, SERVICE_LOC) { - return $resource(SERVICE_LOC + "/perusteet/:perusteId/termisto/:id", { - id: "@id", - perusteId: "@perusteId" - }); - }) - .service("TermistoService", function(TermistoCRUD, Notifikaatiot, $q, $timeout, YleinenData, $rootScope) { - var peruste = null; - var cached = {}; - var loading = false; - this.newTermi = function(termi) { - var newtermi = { - termi: {}, - selitys: {}, - id: null - }; - if (termi) { - _.each(_.values(YleinenData.kielet), function(lang: any) { - newtermi.termi[lang] = termi; - }); - } - return newtermi; - }; - this.preload = function() { - if (!cached[peruste.id] && !loading) { - loading = true; - var self = this; - $timeout(function() { - self.getAll().then(function() { - loading = false; - }); - }); - } - }; - this.getAll = function() { - return TermistoCRUD.query({ perusteId: peruste.id }, function(res) { - cached[peruste.id] = res; - }).$promise; - }; - this.delete = function(item) { - return TermistoCRUD.delete( - { perusteId: peruste.id, id: item.id }, - {}, - function() { - cached[peruste.id] = null; - $rootScope.$broadcast("termisto:update"); - }, - Notifikaatiot.serverCb - ).$promise; - }; - function makeKey(item) { - var termi: string = _.first(_.compact(_.values(item.termi))) || ""; - return termi.replace(/[^a-zA-Z0-9]/g, "") + new Date().getTime(); - } - this.save = function(item) { - if (!item.avain) { - item.avain = makeKey(item); - } - return TermistoCRUD.save( - { perusteId: peruste.id }, - item, - function() { - cached[peruste.id] = null; - $rootScope.$broadcast("termisto:update"); - }, - Notifikaatiot.serverCb - ).$promise; - }; - this.setPeruste = function(value) { - peruste = value; - }; - function findTermi(avain) { - return _.find(cached[peruste.id], function(item: any) { - return item.avain === avain; - }); - } - this.getWithAvain = function(avain, cached) { - if (cached) { - return findTermi(avain); - } - var deferred = $q.defer(); - if (cached[peruste.id]) { - deferred.resolve(findTermi(avain)); - } else { - this.getAll().then(function() { - deferred.resolve(findTermi(avain)); - }); - } - return deferred.promise; - }; - }) - .controller("TermistoController", function( - $scope, - TermistoService, - YleinenData, - Algoritmit, - Kaanna, - $uibModal, - Varmistusdialogi - ) { - $scope.valitseKieli = _.bind(YleinenData.valitseKieli, YleinenData); - $scope.termisto = []; - $scope.filtered = []; - - function sorter(item) { - return Kaanna.kaanna(item.termi).toLowerCase(); - } - - $scope.search = { - phrase: "", - changed: function(value) { - $scope.filtered = _($scope.termisto) - .filter(function(termi) { - return !value - ? true - : Algoritmit.match(value, termi.termi) || Algoritmit.match(value, termi.selitys); - }) - .sortBy(sorter) - .value(); - $scope.paginate.current = 1; - } - }; - - $scope.paginate = { - perPage: 7, - current: 1 - }; - - $scope.filterer = function(item) { - return !item.$hidden; - }; - - function refresh() { - TermistoService.getAll().then(function(data) { - $scope.termisto = data; - $scope.filtered = _(data) - .sortBy(sorter) - .value(); - }); - } - - function doDelete(item) { - TermistoService.delete(item).then(function() { - $scope.search.phrase = ""; - refresh(); - }); - } - - function doSave(item) { - TermistoService.save(item).then(function(res) { - var index = _.findIndex($scope.termisto, { avain: res.avain }); - if (index >= 0) { - $scope.termisto[index] = res; - } else { - $scope.termisto.push(res); - } - $scope.search.changed($scope.search.phrase); - }); - } - - $scope.delete = function(item) { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-poisto", - teksti: "poistetaanko-termi" - })(function() { - doDelete(item); - $scope.search.changed($scope.search.phrase); - }); - }; - - $scope.edit = function(item) { - $uibModal - .open({ - template: require("views/modals/termisto.html"), - controller: "TermistoMuokkausController", - size: "lg", - resolve: { - termimodel: function() { - return _.cloneDeep(item); - } - } - }) - .result.then(function(data) { - if (data.$delete) { - doDelete(data); - } else { - doSave(data); - } - }); - }; - - refresh(); - }) - .controller("TermistoMuokkausController", function( - $scope, - termimodel, - Varmistusdialogi, - $uibModalInstance, - $rootScope, - TermistoService - ) { - $scope.termimodel = termimodel; - $scope.creating = !termimodel; - if ($scope.creating) { - $scope.termimodel = TermistoService.newTermi(); - } - - $scope.ok = function() { - $rootScope.$broadcast("notifyCKEditor"); - $uibModalInstance.close($scope.termimodel); - }; - - $scope.delete = function() { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-poisto", - teksti: "poistetaanko-termi" - })(function() { - $uibModalInstance.close(_.extend($scope.termimodel, { $delete: true })); - }); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/toimikausi.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/toimikausi.ts deleted file mode 100644 index ac09e00712..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/toimikausi.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").controller("PerusteprojektiToimikausiCtrl", function($scope, YleinenData) { - if (typeof $scope.projekti.toimikausiAlku === "number") { - $scope.projekti.toimikausiAlku = new Date($scope.projekti.toimikausiAlku); - } - if (typeof $scope.projekti.toimikausiLoppu === "number") { - $scope.projekti.toimikausiLoppu = new Date($scope.projekti.toimikausiLoppu); - } - - $scope.kalenteriTilat = { - toimikausiAlkuButton: false, - toimikausiLoppuButton: false - }; - - $scope.open = function($event) { - $event.preventDefault(); - $event.stopPropagation(); - - for (var key in $scope.kalenteriTilat) { - if ($scope.kalenteriTilat.hasOwnProperty(key) && key !== $event.target.id) { - $scope.kalenteriTilat[key] = false; - } - } - $scope.kalenteriTilat[$event.target.id] = !$scope.kalenteriTilat[$event.target.id]; - }; - - $scope.dateOptions = YleinenData.dateOptions; - $scope.format = YleinenData.dateFormatDatepicker; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tpoopetus.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tpoopetus.ts deleted file mode 100644 index 9dccc0ba32..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tpoopetus.ts +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2014 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("TpoSisaltoController", function( - $scope, - $state, - $stateParams, - Api, - perusteprojektiTiedot, - Algoritmit, - SuoritustavanSisalto, - TekstikappaleOperations, - SuoritustapaSisalto, - TutkinnonOsaEditMode, - Notifikaatiot, - Editointikontrollit, - YleinenData - ) { - $scope.projekti = perusteprojektiTiedot.getProjekti(); - $scope.peruste = perusteprojektiTiedot.getPeruste(); - TekstikappaleOperations.setPeruste($scope.peruste); - $scope.rajaus = ""; - $scope.peruste.sisalto = perusteprojektiTiedot.getSisalto(); - $scope.esitysurl = YleinenData.getPerusteEsikatseluLink($scope.projekti, $scope.peruste); - - $scope.tuoSisalto = SuoritustavanSisalto.tuoSisalto(); - - $scope.$watch( - "peruste.sisalto", - function() { - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - const sisaltotyyppi = - (lapsi && lapsi.perusteenOsa && lapsi.perusteenOsa.osanTyyppi) || "tekstikappale"; - lapsi.$url = $state.href("root.perusteprojekti.suoritustapa." + sisaltotyyppi, { - suoritustapa: $stateParams.suoritustapa, - perusteenOsaViiteId: lapsi.id, - versio: "" - }); - }); - }, - true - ); - - $scope.rajaaSisaltoa = function(value) { - if (_.isUndefined(value)) { - return; - } - const sisaltoFilterer = function(osa, lapsellaOn) { - osa.$filtered = lapsellaOn || Algoritmit.rajausVertailu(value, osa, "perusteenOsa", "nimi"); - return osa.$filtered; - }; - Algoritmit.kaikilleTutkintokohtaisilleOsille($scope.peruste.sisalto, sisaltoFilterer); - }; - - $scope.avaaSuljeKaikki = function(value) { - var open = false; - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - open = open || lapsi.$opened; - }); - Algoritmit.kaikilleLapsisolmuille($scope.peruste.sisalto, "lapset", function(lapsi) { - lapsi.$opened = _.isUndefined(value) ? !open : value; - }); - }; - - $scope.addSisalto = (tyyppi: "tekstikappale" | "taiteenala") => { - SuoritustapaSisalto.save( - { - perusteId: $scope.projekti._peruste, - suoritustapa: $stateParams.suoritustapa - }, - { - perusteenOsa: { - osanTyyppi: tyyppi - } - }, - function(response) { - TutkinnonOsaEditMode.setMode(true); // Uusi luotu, siirry suoraan muokkaustilaan - $state.go( - "root.perusteprojekti.suoritustapa." + tyyppi, - { - perusteenOsaViiteId: response.id, - versio: "" - }, - { - reload: true - } - ); - }, - Notifikaatiot.serverCb - ); - }; - - $scope.edit = function() { - Editointikontrollit.startEditing(); - }; - - Editointikontrollit.registerCallback({ - edit: function() { - $scope.rajaus = ""; - $scope.avaaSuljeKaikki(true); - }, - save: function() { - TekstikappaleOperations.updateViitteet($scope.peruste.sisalto, function() { - Notifikaatiot.onnistui("osien-rakenteen-päivitys-onnistui"); - }); - }, - cancel: function() { - $state.go($state.current.name, $stateParams, { - reload: true - }); - }, - validate: function() { - return true; - }, - notify: function(value) { - $scope.editing = value; - } - }); - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tutkinnonosa.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tutkinnonosa.ts deleted file mode 100644 index 4df0facbcd..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tutkinnonosa.ts +++ /dev/null @@ -1,712 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL, Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .factory("TutkinnonOsanKoodiUniqueResource", ($resource, SERVICE_LOC) => { - return $resource(SERVICE_LOC + "/tutkinnonosat/koodi/uniikki/:tutkinnonosakoodi"); - }) - .service("TutkinnonosanTiedotService", (PerusteenOsat, $q, TutkinnonOsanOsaAlue, Osaamistavoite, YleinenData) => { - const FIELD_ORDER = { - tavoitteet: 3, - ammattitaitovaatimukset: 4, - ammattitaitovaatimuksetLista: 4, - ammattitaidonOsoittamistavat: 7, - arviointi: 5, - lisatiedot: 5, - arvioinninKohdealueet: 6 - }; - - let tutkinnonOsa; - - function noudaTutkinnonOsa(stateParams) { - const deferred = $q.defer(); - - PerusteenOsat.get({ osanId: stateParams.perusteenOsaId }, function(vastaus) { - tutkinnonOsa = vastaus; - if (_.includes(YleinenData.yhteisetTutkinnonOsat, vastaus.tyyppi)) { - TutkinnonOsanOsaAlue.list({ osanId: stateParams.perusteenOsaId }, function(osaAlueet) { - tutkinnonOsa.osaAlueet = osaAlueet; - - if (osaAlueet && osaAlueet.length > 0) { - const promisesList = []; - _.each(osaAlueet, function(osaAlue) { - const valmis = Osaamistavoite.list( - { - osanId: stateParams.perusteenOsaId, - osaalueenId: osaAlue.id - }, - function(osaamistavoitteet) { - osaAlue.osaamistavoitteet = osaamistavoitteet; - } - ); - promisesList.push(valmis.promise); - }); - $q.all(promisesList).then( - function() { - deferred.resolve(); - }, - function() { - deferred.reject(); - } - ); - } else { - deferred.resolve(); - } - }); - } else { - deferred.resolve(); - } - }); - - return deferred.promise; - } - - function getTutkinnonOsa() { - return _.clone(tutkinnonOsa); - } - - return { - noudaTutkinnonOsa: noudaTutkinnonOsa, - getTutkinnonOsa: getTutkinnonOsa, - order: function(key) { - return FIELD_ORDER[key] || -1; - }, - keys: function() { - return _.keys(FIELD_ORDER); - } - }; - }) - .controller( - "muokkausTutkinnonosaCtrl", - ( - $q, - $rootScope, - $scope, - $state, - $stateParams, - $timeout, - Algoritmit, - AmmattitaitoHelper, - ArviointiHelper, - AutomaattitallennusService, - Editointikontrollit, - FieldSplitter, - Kommentit, - KommentitByPerusteenOsa, - Koodisto, - Lukitus, - MuokkausUtils, - MuutProjektitService, - Notifikaatiot, - PerusteProjektiSivunavi, - PerusteTutkinnonosa, - PerusteenOsaViite, - PerusteenOsaViitteet, - PerusteenOsat, - PerusteenRakenne, - ProjektinMurupolkuService, - Tutke2OsaData, - TutkinnonOsaEditMode, - TutkinnonOsaLeikelautaService, - TutkinnonOsaViitteet, - TutkinnonosanTiedotService, - Utils, - Varmistusdialogi, - VersionHelper, - YleinenData, - localStorageService, - virheService, - Kaanna - ) => { - Utils.scrollTo("#ylasivuankkuri"); - - Kommentit.haeKommentit(KommentitByPerusteenOsa, { - id: $stateParams.perusteProjektiId, - perusteenOsaId: $stateParams.tutkinnonOsaViiteId - }); - - $scope.tutkinnonOsaViite = {}; - $scope.versiot = {}; - - $scope.suoritustapa = $stateParams.suoritustapa; - $scope.rakenne = {}; - $scope.test = angular.noop; - $scope.menuItems = []; - $scope.editableTutkinnonOsaViite = {}; - $scope.editEnabled = false; - $scope.editointikontrollit = Editointikontrollit; - $scope.nimiValidationError = false; - - $scope.isLeikelautaOpen = false; - if (localStorageService.isSupported) { - $scope.isLeikelautaOpen = localStorageService.get("leikeautaOpen"); - } - $scope.toggleLeikelauta = () => { - if (localStorageService.isSupported) { - $scope.isLeikelautaOpen = !$scope.isLeikelautaOpen; - localStorageService.set("leikeautaOpen", $scope.isLeikelautaOpen); - } else { - Notifikaatiot.varoitus("selain-ei-tue"); - } - }; - - $scope.isTutke2 = YleinenData.isTutke2; - $scope.isReformi = - _.find($scope.peruste.suoritustavat, (st: any) => st.suoritustapakoodi === "reformi") != null; - - let tutkinnonOsaDefer = $q.defer(); - $scope.tutkinnonOsaPromise = tutkinnonOsaDefer.promise; - - async function successCb(re) { - setupTutkinnonOsaViite(re); - tutkinnonOsaDefer.resolve($scope.editableTutkinnonOsaViite); - $scope.kaytossaMonessaProjektissa = - _.size( - await MuutProjektitService.projektitJoissaKaytossa( - $scope.editableTutkinnonOsaViite.tutkinnonOsa.id - ) - ) > 1; - } - - function errorCb() { - virheService.virhe("virhe-tutkinnonosaa-ei-löytynyt"); - } - - const versio = $stateParams.versio ? $stateParams.versio.replace(/\//g, "") : null; - if (versio) { - VersionHelper.getTutkinnonOsaViiteVersions( - $scope.versiot, - { id: $stateParams.tutkinnonOsaViiteId }, - true, - function() { - const revNumber = VersionHelper.select($scope.versiot, versio); - if (!revNumber) { - errorCb(); - } else { - TutkinnonOsaViitteet.getVersio( - { - viiteId: $stateParams.tutkinnonOsaViiteId, - versioId: revNumber - }, - successCb, - errorCb - ); - } - } - ); - } else { - PerusteenOsaViite.get( - { - perusteId: $scope.peruste.id, - suoritustapa: $stateParams.suoritustapa, - viiteId: $stateParams.tutkinnonOsaViiteId - }, - successCb, - errorCb - ); - } - - $scope.osaAlueAlitila = $state.includes("**.tutkinnonosa.osaalue"); - - $rootScope.$on("$stateChangeStart", function(event, toState) { - $scope.osaAlueAlitila = toState.name === "root.perusteprojekti.suoritustapa.tutkinnonosa.osaalue"; - }); - - $scope.$watch( - "editableTutkinnonOsa.nimi", - function() { - $scope.nimiValidationError = false; - }, - true - ); - - $scope.yksikko = Algoritmit.perusteenSuoritustavanYksikko($scope.peruste, $scope.suoritustapa); - - async function getRakenne() { - $scope.rakenne = await PerusteenRakenne.haeByPerusteprojekti( - $stateParams.perusteProjektiId, - $stateParams.suoritustapa - ); - if (TutkinnonOsaEditMode.getMode()) { - $scope.isNew = true; - $scope.muokkaa(); - } - } - - getRakenne(); - - function lukitse(cb) { - Lukitus.lukitsePerusteenosa($scope.tutkinnonOsaViite.tutkinnonOsa.id, cb); - } - - function fetch(cb) { - cb = cb || angular.noop; - PerusteenOsat.get({ osanId: $scope.tutkinnonOsaViite.tutkinnonOsa.id }, res => { - $scope.tutkinnonOsaViite.tutkinnonOsa = res; - cb(res); - }); - } - - $scope.removeByIdx = (vapaatTekstit, idx) => { - vapaatTekstit.splice(idx, 1); - }; - - $scope.removeVapaaTeksti = function(vapaatTekstit, sisalto) { - _.remove(vapaatTekstit, sisalto); - }; - - $scope.addVapaaTeksti = vapaatTekstit => { - vapaatTekstit.push({ - nimi: {}, - teksti: {} - }); - Utils.scrollTo("#vapaatTekstit"); - }; - - $scope.sortableOptions = TutkinnonOsaLeikelautaService.createConnectedSortable({ - connectWith: ".container-items, .container-items-leikelauta", - handle: ".handle", - cursorAt: { top: 10, left: 10 } - }); - - $scope.fields = [ - { - path: "tutkinnonOsa.tavoitteet", - localeKey: "tutkinnon-osan-tavoitteet", - type: "editor-area", - localized: true, - collapsible: true - }, - { - path: "tutkinnonOsa.ammattitaitovaatimukset", - localeKey: "tutkinnon-osan-ammattitaitovaatimukset-teksti", - type: "editor-area", - localized: true, - collapsible: true - }, - { - path: "tutkinnonOsa.ammattitaitovaatimuksetLista", - localeKey: "tutkinnon-osan-ammattitaitovaatimukset-taulukko", - type: "ammattitaito", - collapsible: true - }, - { - path: "tutkinnonOsa.ammattitaidonOsoittamistavat", - localeKey: "tutkinnon-osan-ammattitaidon-osoittamistavat", - type: "editor-area", - localized: true, - collapsible: true - }, - { - path: "tutkinnonOsa.ammattitaitovaatimukset2019", - localeKey: "tutkinnon-osan-ammattitaitovaatimukset-2019", - type: "ammattitaitovaatimukset2019", - collapsible: true, - }, - { - path: "tutkinnonOsa._geneerinenArviointiasteikko", - localeKey: "tutkinnon-osan-geneerinen-arviointi", - type: "geneerinenarviointi", - collapsible: true, - }, - { - path: "tutkinnonOsa.arviointi.lisatiedot", - localeKey: "tutkinnon-osan-arviointi-teksti", - type: "editor-area", - localized: true, - collapsible: true - }, - { - path: "tutkinnonOsa.arviointi.arvioinninKohdealueet", - localeKey: "tutkinnon-osan-arviointi-taulukko", - type: "arviointi", - collapsible: true - } - ]; - - _.each($scope.fields, field => { - field.order = TutkinnonosanTiedotService.order(_.last(field.path.split("."))); - }); - - $scope.koodistoClick = Koodisto.modaali( - koodisto => { - if (koodisto != null && koodisto.koodisto != null) { - $scope.editableTutkinnonOsaViite.tutkinnonOsa.koodi = { - uri: koodisto.koodiUri, - arvo: koodisto.koodiArvo, - versio: koodisto.versio, - koodisto: koodisto.koodisto.koodistoUri - }; - } - }, - { - tyyppi: () => { - return "tutkinnonosat"; - }, - ylarelaatioTyyppi: () => { - return ""; - }, - tarkista: _.constant(true) - } - ); - - $scope.koodistoLisaysClick = function() { - Varmistusdialogi.dialogi({ - otsikko: "varmista-lisays", - teksti: Kaanna.kaanna("koodi-lisays-varmistus"), - primaryBtn: "ok", - successCb: async function() { - - const koodi = await Koodisto.lisaaKoodistoKoodi("tutkinnonosat", $scope.editableTutkinnonOsaViite.tutkinnonOsa.nimi); - - $scope.editableTutkinnonOsaViite.tutkinnonOsa.koodi = { - uri: koodi.koodiUri, - arvo: koodi.koodiArvo, - versio: koodi.versio, - koodisto: koodi.koodisto.koodistoUri - }; - - } - })(); - }; - - $scope.tutkinnonOsanimiOk = () => { - return Utils.hasLocalizedText($scope.editableTutkinnonOsaViite.tutkinnonOsa.nimi); - } - - $scope.cleanKoodi = () => { - $scope.editableTutkinnonOsaViite.tutkinnonOsa.koodi = null; - $scope.editableTutkinnonOsaViite.tutkinnonOsa.koodiUri = null; - $scope.editableTutkinnonOsaViite.tutkinnonOsa.koodiArvo = null; - }; - - $scope.kopioiMuokattavaksi = async () => { - Varmistusdialogi.dialogi({ - otsikko: "kopioidaanko-tekstikappale", - primaryBtn: "kopioi", - successCb: () => { - PerusteenOsaViitteet.kloonaaTutkinnonOsa( - { - viiteId: $scope.tutkinnonOsaViite.id - }, - tk => { - TutkinnonOsaEditMode.setMode(true); - Notifikaatiot.onnistui("tutkinnonosa-kopioitu-onnistuneesti"); - $state.go( - "root.perusteprojekti.suoritustapa.tutkinnonosa", - { - perusteenOsaViiteId: tk.id, - versio: "" - }, - { - reload: true - } - ); - } - ); - } - })(); - }; - - function refreshPromise() { - $scope.tutkinnonOsaViite.tutkinnonOsa.kuvaus = $scope.tutkinnonOsaViite.tutkinnonOsa.kuvaus || {}; - $scope.editableTutkinnonOsaViite = angular.copy($scope.tutkinnonOsaViite); - tutkinnonOsaDefer = $q.defer(); - $scope.tutkinnonOsaPromise = tutkinnonOsaDefer.promise; - tutkinnonOsaDefer.resolve($scope.editableTutkinnonOsaViite); - } - - function saveCb(res) { - Lukitus.vapautaPerusteenosa(res.id); - AutomaattitallennusService.stop(); - ProjektinMurupolkuService.set( - "tutkinnonOsaViiteId", - $scope.tutkinnonOsaViite.id, - $scope.tutkinnonOsaViite.tutkinnonOsa.nimi - ); - Notifikaatiot.onnistui("muokkaus-tutkinnon-osa-tallennettu"); - $scope.haeVersiot(true, () => { - VersionHelper.setUrl($scope.versiot); - }); - tutke2.fetch(); - } - - function doDelete(osaId) { - PerusteenRakenne.poistaTutkinnonOsaViite( - osaId, - $scope.peruste.id, - $stateParams.suoritustapa, - function() { - Notifikaatiot.onnistui("tutkinnon-osa-rakenteesta-poistettu"); - $state.go("root.perusteprojekti.suoritustapa.tutkinnonosat"); - } - ); - } - - const tutke2 = { - fetch: () => { - if ( - _.includes( - YleinenData.yhteisetTutkinnonOsat, - $scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi - ) - ) { - if (Tutke2OsaData.get()) { - Tutke2OsaData.get().fetch(); - } - } - }, - mergeOsaAlueet: tutkinnonOsa => { - if ( - _.includes( - YleinenData.yhteisetTutkinnonOsat, - $scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi - ) - ) { - tutkinnonOsa.osaAlueet = _.map(Tutke2OsaData.get().$editing, (osaAlue: any) => { - const item: any = { nimi: osaAlue.nimi }; - if (osaAlue.id) { - item.id = osaAlue.id; - } - return item; - }); - } - }, - validate: () => { - if ( - _.includes( - YleinenData.yhteisetTutkinnonOsat, - $scope.editableTutkinnonOsaViite.tutkinnonOsa.tyyppi - ) - ) { - return _.all( - _.map(Tutke2OsaData.get().$editing, (item: any) => { - return Utils.hasLocalizedText(item.nimi); - }) - ); - } else { - return true; - } - } - }; - - const normalCallbacks = { - async edit() { - tutke2.fetch(); - if ($scope.editableTutkinnonOsaViite.id) { - await AutomaattitallennusService.start( - "tutkinnonosa" + $scope.editableTutkinnonOsaViite.id, - () => $scope.editableTutkinnonOsaViite, - (data: any) => { - $scope.editableTutkinnonOsaViite = angular.copy(data); - }); - } - }, - asyncValidate: cb => { - Editointikontrollit.notifySentenceCaseWarnings({ - obj: $scope.editableTutkinnonOsaViite, - paths: [ - 'nimi' - ], - after: cb - }); - }, - save: kommentti => { - tutke2.mergeOsaAlueet($scope.editableTutkinnonOsaViite.tutkinnonOsa); - $scope.editableTutkinnonOsaViite.metadata = { kommentti: kommentti }; - if ($scope.editableTutkinnonOsaViite.tutkinnonOsa.id) { - PerusteTutkinnonosa.save( - { - perusteId: $scope.peruste.id, - suoritustapa: $stateParams.suoritustapa, - osanId: $scope.editableTutkinnonOsaViite.tutkinnonOsa.id - }, - $scope.editableTutkinnonOsaViite, - res => { - $scope.editableTutkinnonOsaViite = angular.copy(res); - $scope.tutkinnonOsaViite = angular.copy(res); - Editointikontrollit.lastModified = res; - saveCb(res.tutkinnonOsa); - getRakenne(); - - tutkinnonOsaDefer = $q.defer(); - $scope.tutkinnonOsaPromise = tutkinnonOsaDefer.promise; - tutkinnonOsaDefer.resolve($scope.editableTutkinnonOsaViite); - }, - Notifikaatiot.serverCb - ); - } else { - PerusteenOsat.saveTutkinnonOsa( - $scope.editableTutkinnonOsaViite.tutkinnonOsa, - res => { - Editointikontrollit.lastModified = res; - saveCb(res); - getRakenne(); - }, - Notifikaatiot.serverCb - ); - } - $scope.isNew = false; - }, - cancel: () => { - if ($scope.isNew) { - doDelete($scope.rakenne.tutkinnonOsat[$scope.tutkinnonOsaViite.tutkinnonOsa.id].id); - $scope.isNew = false; - } else { - tutke2.fetch(); - fetch(() => { - refreshPromise(); - Lukitus.vapautaPerusteenosa($scope.tutkinnonOsaViite.tutkinnonOsa.id); - }); - } - }, - notify: mode => { - $scope.editEnabled = mode; - }, - validate: () => { - if (!Utils.hasLocalizedText($scope.editableTutkinnonOsaViite.tutkinnonOsa.nimi)) { - $scope.nimiValidationError = true; - } - return $scope.tutkinnonOsaHeaderForm.$valid && tutke2.validate(); - } - }; - - function setupTutkinnonOsaViite(viite) { - $scope.tutkinnonOsaViite = viite; - ProjektinMurupolkuService.set( - "tutkinnonOsaViiteId", - $scope.tutkinnonOsaViite.id, - $scope.tutkinnonOsaViite.tutkinnonOsa.nimi - ); - $scope.editableTutkinnonOsaViite = angular.copy(viite); - $scope.isNew = !$scope.editableTutkinnonOsaViite.tutkinnonOsa.id; - if ($state.current.name === "root.perusteprojekti.suoritustapa.tutkinnonosa") { - Editointikontrollit.registerCallback(normalCallbacks); - } - $scope.haeVersiot(); - Lukitus.tarkista($scope.tutkinnonOsaViite.tutkinnonOsa.id, $scope); - } - - $scope.poistaTutkinnonOsa = function(osaId) { - const onRakenteessa = PerusteenRakenne.validoiRakennetta($scope.rakenne.rakenne, osa => { - return ( - osa._tutkinnonOsaViite && - $scope.rakenne.tutkinnonOsaViitteet[osa._tutkinnonOsaViite].id === osaId - ); - }); - if (onRakenteessa) { - Notifikaatiot.varoitus("tutkinnon-osa-rakenteessa-ei-voi-poistaa"); - } else { - Varmistusdialogi.dialogi({ - otsikko: "poistetaanko-tutkinnonosa", - primaryBtn: "poista", - successCb: () => { - $scope.isNew = false; - Editointikontrollit.cancelEditing(); - doDelete(osaId); - } - })(); - } - }; - - $scope.muokkaa = async () => { - await MuutProjektitService.varmistusdialogi($scope.editableTutkinnonOsaViite.tutkinnonOsa.id); - Editointikontrollit.registerCallback(normalCallbacks); - lukitse(() => { - fetch(() => { - Editointikontrollit.startEditing(); - refreshPromise(); - }); - }); - }; - $scope.$watch("editEnabled", editEnabled => { - PerusteProjektiSivunavi.setVisible(!editEnabled); - }); - - $scope.haeVersiot = (force, cb) => { - VersionHelper.getTutkinnonOsaViiteVersions( - $scope.versiot, - { id: $scope.tutkinnonOsaViite.id }, - force, - cb - ); - }; - - function responseFn(response) { - $scope.tutkinnonOsaViite.tutkinnonOsa = response; - setupTutkinnonOsaViite(response); - const objDefer = $q.defer(); - $scope.tutkinnonOsaPromise = objDefer.promise; - objDefer.resolve($scope.editableTutkinnonOsaViite); - VersionHelper.setUrl($scope.versiot); - } - - $scope.vaihdaVersio = () => { - $scope.versiot.hasChanged = true; - VersionHelper.setUrl($scope.versiot); - }; - - $scope.revertCb = res => { - responseFn(res); - saveCb(res); - }; - - $scope.addFieldToVisible = field => { - field.visible = true; - // Varmista että menu sulkeutuu klikin jälkeen - $timeout(function() { - angular.element("h1").click(); - // TODO ei toimi koska localeKey voi olla muu kuin string, - // joku muu tapa yksilöidä/löytää juuri lisätty kenttä? - Utils.scrollTo("li." + FieldSplitter.getClass(field)); - }); - }; - - // Palauttaa true jos kaikki mahdolliset osiot on jo lisätty - $scope.allVisible = () => { - const lisatty = _.all($scope.fields, (field: any) => { - return _.contains(field.path, "arviointi.") - || !field.inMenu - || (field.inMenu && field.visible); - }); - return lisatty && $scope.arviointiHelper.exists(); - }; - - $scope.updateMenu = () => { - if (!$scope.arviointiHelper) { - $scope.arviointiHelper = ArviointiHelper.create(); - } - if (!$scope.ammattitaitoHelper) { - $scope.ammattitaitoHelper = AmmattitaitoHelper.create(); - } - - $scope.arviointiFields = $scope.arviointiHelper.initFromFields($scope.fields); - $scope.ammattitaitoHelper.initFromFields($scope.fields); - - $scope.menuItems = _.reject($scope.fields, "mandatory"); - if ($scope.arviointiHelper) { - $scope.arviointiHelper.setMenu($scope.menuItems); - } - }; - - $scope.$watch("arviointiFields.teksti.visible", $scope.updateMenu); - $scope.$watch("arviointiFields.taulukko.visible", $scope.updateMenu); - } - ); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tutkinnonosaosaalue.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tutkinnonosaosaalue.ts deleted file mode 100644 index 2bee886b25..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tutkinnonosaosaalue.ts +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("TutkinnonOsaOsaAlueCtrl", function( - $scope, - $state, - $stateParams, - Editointikontrollit, - TutkinnonOsanOsaAlue, - Lukitus, - Notifikaatiot, - Utils, - Koodisto, - Kielimapper, - YleinenData, - MuokkausUtils - ) { - $scope.osaamistavoitepuu = []; - var tempId = 0; - - $scope.isVaTe = YleinenData.isValmaTelma($scope.peruste); - $scope.vateConverter = Kielimapper.mapTutkinnonosatKoulutuksenosat($scope.isVaTe); - $scope.alarelaatiotLadattu = false; - - $scope.osaAlue = { - nimi: {}, - kuvaus: {} - }; - - if ($scope.isVaTe) { - $scope.$$osaamistavoiteOpen = true; - $scope.$$osaamisenArviointiOpen = true; - $scope.osaAlue.valmaTelmaSisalto = { - osaamistavoitteet: { - kohde: {}, - kriteerit: [], - tekstina: {} - }, - osaamisenArviointi: { - kuvaus: {}, - kriteerit: [], - tekstina: {} - } - }; - } - - $scope.valitseAlarelaatio = function(ar) { - $scope.osaAlue.koodi = $scope.osaAlue.koodi ? $scope.osaAlue.koodi : {}; - $scope.osaAlue.koodi.uri = _.get(ar, 'koodiUri', null); - $scope.osaAlue.koodi.koodisto = _.get(ar, 'koodisto.koodistoUri', null); - $scope.osaAlue.koodi.versio = _.get(ar, 'versio', null); - $scope.osaAlue.koodiUri = _.get(ar, 'koodiUri', null); - }; - - function luoOsaamistavoitepuu() { - if ($scope.osaAlue && $scope.osaAlue.osaamistavoitteet) { - $scope.osaamistavoitepuu = _($scope.osaAlue.osaamistavoitteet) - .filter("pakollinen") - .each(function(o: any) { - o.$poistettu = false; - }) - .value(); - - // Alustetaan tutkinnon osaan liittyvät asiat - if ($scope.tutkinnonOsaViite.tutkinnonOsa.tyyppi === "reformi_tutke2") { - if ($scope.osaamistavoitepuu.length == 0) { - $scope.lisaaOsaamistavoite(); - } - } - - _($scope.osaAlue.osaamistavoitteet) - .filter({ pakollinen: false }) - .each(function(r: any) { - r.$poistettu = false; - if (r._esitieto) { - lisaaOsaamistavoitteelleLapsi(r); - } else { - $scope.osaamistavoitepuu.push(r); - } - }) - .value(); - } - } - - function lisaaOsaamistavoitteelleLapsi(lapsi) { - _.each($scope.osaamistavoitepuu, function(osaamistavoite) { - if (osaamistavoite.id === parseInt(lapsi._esitieto, 10)) { - osaamistavoite.lapsi = lapsi; - } - }); - } - - $scope.lisaaOsaamistavoite = function() { - const osaamistavoitePakollinen: any = { - pakollinen: true, - nimi: {}, - koodi: null, - $open: true, - $poistettu: false - }; - const osaamistavoiteValinnainen = { - pakollinen: false, - koodi: null, - $poistettu: false - }; - osaamistavoitePakollinen.lapsi = osaamistavoiteValinnainen; - $scope.osaamistavoitepuu.push(osaamistavoitePakollinen); - }; - - $scope.tuoOsaamistavoite = function() { - //TODO - }; - - $scope.poistaTavoite = function(tavoite) { - if (tavoite.pakollinen === true) { - if (_.isObject(tavoite.lapsi)) { - tavoite.lapsi.nimi = tavoite.nimi; - tavoite.lapsi.$open = tavoite.$open; - tavoite.lapsi._esitieto = null; - $scope.osaamistavoitepuu.push(tavoite.lapsi); - } - tavoite.$poistettu = true; - } else { - tavoite.$poistettu = true; - } - }; - - function goBack() { - $state.go("^", {}, { reload: true }); - } - - $scope.openKoodisto = function(osaAlue) { - if (!osaAlue.koodi) { - osaAlue.koodi = {}; - } - var openDialog = Koodisto.modaali( - function(koodisto) { - osaAlue.koodi = { - uri: koodisto.koodiUri, - arvo: koodisto.koodiArvo, - versio: koodisto.versio, - koodisto: koodisto.koodisto.koodistoUri - }; - MuokkausUtils.nestedSet(osaAlue.koodi, "koodiUri", ",", koodisto.koodiUri); - MuokkausUtils.nestedSet(osaAlue.koodi, "koodiArvo", ",", koodisto.koodiArvo); - }, - { - tyyppi: function() { - return "ammatillisenoppiaineet"; - }, - ylarelaatioTyyppi: function() { - return ""; - }, - tarkista: _.constant(true) - } - ); - openDialog(); - }; - - var osaAlueCallbacks = { - edit: function() { - TutkinnonOsanOsaAlue.get( - { - viiteId: $stateParams.tutkinnonOsaViiteId, - osaalueenId: $stateParams.osaAlueId - }, - function(vastaus) { - $scope.osaAlue = vastaus; - luoOsaamistavoitepuu(); - }, - function(virhe) { - Notifikaatiot.serverCb(virhe); - goBack(); - } - ); - }, - cancel: function() { - Lukitus.vapautaPerusteenosaByTutkinnonOsaViite($stateParams.tutkinnonOsaViiteId); - goBack(); - }, - save: function() { - $scope.osaAlue.osaamistavoitteet = kokoaOsaamistavoitteet(); - - TutkinnonOsanOsaAlue.save( - { - viiteId: $stateParams.tutkinnonOsaViiteId, - osaalueenId: $stateParams.osaAlueId - }, - $scope.osaAlue, - function(res) { - Lukitus.vapautaPerusteenosaByTutkinnonOsaViite($stateParams.tutkinnonOsaViiteId); - goBack(); - }, - function(virhe) { - Notifikaatiot.serverCb(virhe); - goBack(); - } - ); - }, - validate: function() { - if (!Utils.hasLocalizedText($scope.osaAlue.nimi)) { - return false; - } else { - return ( - $scope.isVaTe || - _.includes(YleinenData.yhteisetTutkinnonOsat, $scope.tutkinnonOsaViite.tutkinnonOsa.tyyppi) || - _.all($scope.osaamistavoitepuu, function(osaamistavoite: any) { - return Utils.hasLocalizedText(osaamistavoite.nimi); - }) - ); - } - } - }; - - function setOsaamistavoiteKoodi(osaamistavoite) { - if ( - osaamistavoite.koodi && - !_.isEmpty(osaamistavoite.koodi.koodiArvo) && - !_.isEmpty(osaamistavoite.koodi.koodiUri) - ) { - osaamistavoite.koodiArvo = osaamistavoite.koodi.koodiArvo; - osaamistavoite.koodiUri = osaamistavoite.koodi.koodiUri; - } - } - - var kokoaOsaamistavoitteet = function() { - var osaamistavoitteet = []; - _.each($scope.osaamistavoitepuu, function(osaamistavoite) { - if (osaamistavoite.pakollinen && !osaamistavoite.$poistettu) { - if (!osaamistavoite.id) { - tempId = tempId - 1; - osaamistavoite.id = tempId; - } - - setOsaamistavoiteKoodi(osaamistavoite); - setOsaamistavoiteKoodi(osaamistavoite.lapsi); - - osaamistavoitteet.push(osaamistavoite); - if (osaamistavoite.lapsi && !osaamistavoite.lapsi.$poistettu) { - osaamistavoite.lapsi._esitieto = osaamistavoite.id; - osaamistavoite.lapsi.nimi = osaamistavoite.nimi; - if (!osaamistavoite.lapsi.id) { - tempId = tempId - 1; - osaamistavoite.lapsi.id = tempId; - } - osaamistavoitteet.push(osaamistavoite.lapsi); - } - } else if (!osaamistavoite.pakollinen && !osaamistavoite.$poistettu) { - if (!osaamistavoite.id) { - tempId = tempId - 1; - osaamistavoite.id = tempId; - } - osaamistavoitteet.push(osaamistavoite); - } - }); - return osaamistavoitteet; - }; - - function lukitse(cb) { - Lukitus.lukitsePerusteenosaByTutkinnonOsaViite($stateParams.tutkinnonOsaViiteId, cb); - } - - Editointikontrollit.registerCallback(osaAlueCallbacks); - lukitse(function() { - Editointikontrollit.startEditing(); - }); - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tutkinnonosat.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tutkinnonosat.ts deleted file mode 100644 index 283d9fad58..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/perusteprojekti/tutkinnonosat.ts +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("PerusteprojektiTutkinnonOsatCtrl", function( - $scope, - $state, - $stateParams, - $rootScope, - Api, - perusteprojektiTiedot, - PerusteProjektiService, - PerusteenRakenne, - Notifikaatiot, - PerusteTutkinnonosat, - PerusteTutkinnonosa, - TutkinnonOsanTuonti, - TutkinnonOsaEditMode - ) { - $scope.peruste = perusteprojektiTiedot.getPeruste(); - $scope.suoritustapa = PerusteProjektiService.getSuoritustapa(); - $scope.tutkinnonOsat = []; - $scope.editoi = false; - - if (perusteprojektiTiedot.getPeruste().suoritustavat) { - $scope.naytaToisestaSuoritustavastaTuonti = perusteprojektiTiedot.getPeruste().suoritustavat - ? perusteprojektiTiedot.getPeruste().suoritustavat.length > 1 - : false; - } - - $scope.yksikko = _.zipObject( - _.map($scope.peruste.suoritustavat, "suoritustapakoodi"), - _.map($scope.peruste.suoritustavat, "laajuusYksikko") - ); - - function haeTutkinnonosat() { - PerusteTutkinnonosat.tilat({ - perusteId: $scope.peruste.id, - suoritustapa: $scope.suoritustapa - }).$promise.then(tilat => { - const tilatMapped = _(tilat) - .indexBy("id") - .value(); - - PerusteenRakenne.haeTutkinnonosat($stateParams.perusteProjektiId, $scope.suoritustapa, function(res) { - $scope.tutkinnonOsat = _(res) - .map(tosa => { - tosa.$$tila = tilatMapped[tosa._tutkinnonOsa]; - return tosa; - }) - .value(); - }); - }); - } - haeTutkinnonosat(); - - $scope.lisaaKoodittomat = async () => { - try { - $scope.avDisabled = true; - const koodit = _(await Api.all(`/perusteet/${$scope.peruste.id}/tutkinnonosat/ammattitaitovaatimuskoodisto`).customPOST()) - .value(); - $scope.tarkistaAmmattitaitovaatimukset(); - Notifikaatiot.onnistui("koodien-lisays-onnistui"); - } - catch (err) { - console.error("Koodittomien lisäys epäonnistui", err); - } - finally { - $scope.avDisabled = false; - } - }; - - $scope.tarkistaAmmattitaitovaatimukset = async () => { - try { - $scope.avDisabled = true; - const vaatimukset = _(await Api.all(`/perusteet/${$scope.peruste.id}/tutkinnonosat/ammattitaitovaatimukset`).getList()) - .map(x => x.plain()) - .value(); - $scope.koodilliset = _.filter(vaatimukset, "koodi"); - $scope.koodittomat = _.reject(vaatimukset, "koodi"); - } - catch (err) { - console.error("Lataus epäonnistui", err); - } - finally { - $scope.avDisabled = false; - } - }; - - $scope.tuoSuoritustavasta = TutkinnonOsanTuonti.suoritustavoista( - perusteprojektiTiedot.getPeruste(), - $scope.suoritustapa, - function(osat) { - _.forEach(osat, function(osa) { - $scope.lisaaTutkinnonOsaSuoraan(osa); - }); - } - ); - - $scope.tuoTutkinnonosa = TutkinnonOsanTuonti.kaikista($scope.suoritustapa, function(osat) { - _.forEach(osat, function(osa) { - delete osa.id; - $scope.lisaaTutkinnonOsaSuoraan(osa); - }); - }); - - $scope.lisaaTutkinnonOsaSuoraan = function(osa) { - PerusteTutkinnonosa.save( - { - perusteId: $scope.peruste.id, - suoritustapa: $stateParams.suoritustapa - }, - osa, - function(res) { - $scope.tutkinnonOsat.unshift(res); - }, - Notifikaatiot.serverCb - ); - }; - - $scope.lisaaTutkinnonOsa = function(tyyppi) { - var osa = tyyppi ? { tyyppi: tyyppi } : {}; - - PerusteTutkinnonosa.save( - { - perusteId: $scope.peruste.id, - suoritustapa: $stateParams.suoritustapa - }, - osa, - function(res) { - $scope.tutkinnonOsat.unshift(res); - TutkinnonOsaEditMode.setMode(true); - - $state.go( - "root.perusteprojekti.suoritustapa." + ($scope.isVaTe ? "koulutuksenosa" : "tutkinnonosa"), - { - tutkinnonOsaViiteId: res.id, - versio: "" - } - ); - }, - function(err) { - Notifikaatiot.serverCb(err); - } - ); - }; - - $scope.getHref = function(valittu) { - return $state.href( - "root.perusteprojekti.suoritustapa." + ($scope.isVaTe ? "koulutuksenosa" : "tutkinnonosa"), - { tutkinnonOsaViiteId: valittu.id, versio: "" } - ); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/suosikit.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/suosikit.ts deleted file mode 100644 index 45ef23e1d6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/suosikit.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("SuosikitCtrl", function($scope, Profiili, $uibModal) { - $scope.suosikit = {}; - $scope.naytto = { limit: 5, shown: 5 }; - - var paivitaSuosikit = function() { - $scope.suosikit = Profiili.listaaSuosikit().reverse(); - }; - - paivitaSuosikit(); - - $scope.$on("kayttajaProfiiliPaivittyi", paivitaSuosikit); - - $scope.edit = function() { - $uibModal.open({ - template: require("views/modals/suosikkienMuokkaus.html"), - controller: "SuosikkienMuokkausController", - size: "lg" - }); - }; - }) - .controller("SuosikkienMuokkausController", function($scope, Profiili, Varmistusdialogi) { - $scope.search = { - term: "", - update: function() { - if (_.isEmpty($scope.search.term)) { - $scope.suosikit = $scope.originals; - } else { - $scope.suosikit = _.filter($scope.originals, function(item: any) { - return item.nimi.toLowerCase().indexOf($scope.search.term.toLowerCase()) > -1; - }); - } - } - }; - - function refresh() { - $scope.suosikit = Profiili.listaaSuosikit().reverse(); - $scope.originals = angular.copy($scope.suosikit); - } - refresh(); - - $scope.$on("kayttajaProfiiliPaivittyi", refresh); - - $scope.edit = function(suosikki) { - $scope.editing = angular.copy(suosikki); - }; - $scope.save = function(suosikki) { - var found = _.findIndex($scope.suosikit, { id: suosikki.id }); - if (found > -1) { - $scope.suosikit[found] = $scope.editing; - Profiili.paivitaSuosikki($scope.editing); - } - $scope.editing = null; - }; - $scope.cancel = function() { - $scope.editing = null; - }; - $scope.remove = function(suosikki) { - Varmistusdialogi.dialogi({ - otsikko: "varmista-poisto", - teksti: "varmista-poisto-suosikki-teksti", - primaryBtn: "poista", - successCb: function() { - Profiili.poistaSuosikki(suosikki); - } - })(); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/tiedotteet.test.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/tiedotteet.test.ts deleted file mode 100644 index 5b688e49a4..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/tiedotteet.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { - compiled, - mockApp -} from "../../testutils"; - -describe("tiedotteet", () => { - - beforeEach(async () => { - mockApp(); - }); - - // EP-1390 - test("TiedoteViewControllerTest", async () => { - await compiled(`
    `); - }); - -}); - diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/tiedotteet.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/tiedotteet.ts deleted file mode 100644 index 67d6070fbb..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/tiedotteet.ts +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .factory("TiedotteetCRUD", function($resource, SERVICE_LOC) { - return $resource(SERVICE_LOC + "/tiedotteet/:tiedoteId", { - tiedoteId: "@id" - }); - }) - .factory("TiedotteetHaku", function($resource, SERVICE_LOC) { - return $resource(SERVICE_LOC + "/tiedotteet/haku", {}); - }) - .controller("SivupalkkiTiedotteetController", function( - $scope, - Algoritmit, - $uibModal, - Varmistusdialogi, - TiedotteetCRUD, - Notifikaatiot - ) { - $scope.tiedotteet = []; - $scope.naytto = { limit: 5, shown: 5 }; - - function fetch() { - // Hae tiedotteet viimeisen 6 kuukauden ajalta - var MONTH_OFFSET = 6; - var tempDate = new Date(); - tempDate.setMonth(tempDate.getMonth() - MONTH_OFFSET); - var alkaen = tempDate.getTime(); - - TiedotteetCRUD.query( - { alkaen: alkaen }, - function(res) { - $scope.tiedotteet = res; - }, - Notifikaatiot.serverCb - ); - } - fetch(); - - $scope.orderFn = function(item) { - return -1 * item.luotu; - }; - }) - .controller("TiedotteidenHallintaController", function( - $scope, - Algoritmit, - $uibModal, - Varmistusdialogi, - TiedotteetCRUD, - TiedotteetHaku, - Notifikaatiot, - Utils, - TiedoteService - ) { - $scope.tiedotteet = []; - $scope.jarjestysTapa = "muokattu"; - $scope.jarjestysOrder = false; - - $scope.paginate = { - perPage: 10, - current: 1 - }; - - function fetch() { - TiedotteetCRUD.query( - {}, - function(res) { - $scope.tiedotteet = res; - }, - Notifikaatiot.serverCb - ); - } - fetch(); - - $scope.search = { - term: "", - changed: function() { - $scope.paginate.current = 1; - }, - filterFn: function(item) { - return $scope.search.term ? Algoritmit.match($scope.search.term, item.otsikko) : true; - } - }; - - $scope.setOrderBy = function(key) { - if ($scope.jarjestysTapa === key) { - $scope.jarjestysOrder = !$scope.jarjestysOrder; - } else { - $scope.jarjestysOrder = false; - $scope.jarjestysTapa = key; - } - }; - - $scope.orderFn = function(item) { - switch ($scope.jarjestysTapa) { - case "nimi": - return Utils.nameSort(item, "otsikko"); - case "luotu": - return -1 * item.luotu; - case "muokattu": - return -1 * item.muokattu; - case "julkinen": - return "" + item.julkinen; - case "yleinen": - return "" + item.yleinen; - default: - break; - } - }; - - $scope.delete = function(model) { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-poisto", - teksti: "poistetaanko-tiedote" - })(function() { - TiedoteService.delete(model, function() { - _.remove($scope.tiedotteet, model); - }); - }); - }; - - $scope.edit = function(tiedote) { - TiedoteService.lisaaTiedote(tiedote, tiedote ? tiedote._perusteprojekti : null, fetch, fetch); - }; - }) - .service("TiedoteService", function($uibModal, TiedotteetCRUD, Notifikaatiot, Utils) { - function doDelete(item, cb) { - cb = cb || _.noop; - TiedotteetCRUD.delete( - {}, - item, - function() { - Notifikaatiot.onnistui("poisto-onnistui"); - cb(); - }, - Notifikaatiot.serverCb - ); - } - - function doSave(item, cb) { - cb = cb || _.noop; - TiedotteetCRUD.save( - {}, - Utils.presaveStrip(item), - function() { - Notifikaatiot.onnistui("tallennus-onnistui"); - cb(); - }, - Notifikaatiot.serverCb - ); - } - - function lisaaTiedote(tiedote, perusteprojektiId, saveCb, deleteCb) { - saveCb = saveCb || _.noop; - deleteCb = deleteCb || _.noop; - - $uibModal - .open({ - template: require("views/modals/tiedotteenmuokkaus.html"), - controller: "TiedotteenMuokkausController", - size: "lg", - resolve: { - model: _.constant(tiedote), - perusteprojektiId: _.constant(perusteprojektiId) - } - }) - .result.then(function(data) { - if (data.$dodelete) { - doDelete(data, deleteCb); - } else { - doSave(data, saveCb); - } - }); - } - - return { - delete: doDelete, - lisaaTiedote: lisaaTiedote - }; - }) - .controller("TiedotteenMuokkausController", function( - $scope, - model, - perusteprojektiId, - Varmistusdialogi, - $uibModalInstance, - $rootScope - ) { - $scope.model = _.cloneDeep(model); - $scope.creating = !model; - $scope.perusteprojektiId = perusteprojektiId; - - if ($scope.creating) { - $scope.model = { - otsikko: {}, - sisalto: {}, - id: null - }; - } - - $scope.model.$liitaPerusteprojekti = true; - - $scope.ok = function() { - $rootScope.$broadcast("notifyCKEditor"); - if ($scope.model.$liitaPerusteprojekti) { - $scope.model._perusteprojekti = perusteprojektiId; - } - $uibModalInstance.close($scope.model); - }; - - $scope.delete = function() { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-poisto", - teksti: "poistetaanko-tiedote" - })(function() { - $uibModalInstance.close(_.extend($scope.model, { $dodelete: true })); - }); - }; - }) - .config(function($stateProvider) { - $stateProvider.state("root.tiedote", { - url: "/tiedote/:tiedoteId", - template: require("views/tiedote.html"), - controller: "TiedoteViewController" - }); - }) - .controller("TiedoteViewController", function( - $rootScope, - $state, - $scope, - $stateParams, - TiedotteetCRUD, - Notifikaatiot, - PerusteprojektiResource, - PerusteProjektiService, - Perusteet, - YleinenData - ) { - if ($rootScope.lastState && $rootScope.lastState.state.name === "root.admin.tiedotteet") { - $scope.$backurl = $state.href($rootScope.lastState.state.name, $rootScope.lastState.params); - $scope.$backurlHeader = "takaisin-tiedotteiden-hallintaan"; - } - - $scope.tiedote = null; - TiedotteetCRUD.get( - { tiedoteId: $stateParams.tiedoteId }, - function(tiedote) { - $scope.tiedote = tiedote; - if (tiedote._perusteprojekti) { - PerusteprojektiResource.get( - { - id: tiedote._perusteprojekti - }, - function(perusteprojekti) { - Perusteet.get( - { - perusteId: perusteprojekti._peruste - }, - function(peruste) { - $scope.perusteprojekti = perusteprojekti; - $scope.perusteprojekti.$url = $state.href( - "root.perusteprojekti.suoritustapa." + - PerusteProjektiService.getSisaltoTunniste(perusteprojekti), - { - perusteProjektiId: perusteprojekti.id, - suoritustapa: YleinenData.valitseSuoritustapaKoulutustyypille( - peruste.koulutustyyppi - ) - } - ); - } - ); - } - ); - } - }, - Notifikaatiot.serverCb - ); - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/tuotekstikappale.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/tuotekstikappale.ts deleted file mode 100644 index 526837e6c4..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/tuotekstikappale.ts +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("TuoTekstikappaleController", function( - $q, - $scope, - $uibModalInstance, - Notifikaatiot, - peruste, - suoritustapa, - PerusteenRakenne, - SuoritustapaSisalto, - YleinenData, - Perusteet, - Algoritmit, - Kaanna, - OmatPerusteprojektit, - Kieli - ) { - var sisallot = {}; - $scope.nykyinenPeruste = peruste; - $scope.perusteet = []; - $scope.luonnosPerusteet = []; - $scope.sivuja = 0; - $scope.sivu = 0; - $scope.valittuPeruste = null; - $scope.kaikkiValittu = null; - $scope.valitut = 0; - $scope.search = { - term: "", - changed: function() { - $scope.paginate.current = 1; - }, - filterFn: function(item) { - return Algoritmit.match($scope.search.term, item.perusteenOsa.nimi); - } - }; - - $scope.paginate = { - perPage: 10, - current: 1 - }; - - $scope.fetchOmat = () => { - if ($scope.luonnokset) { - OmatPerusteprojektit.query({}, vastaus => { - $scope.luonnosPerusteet = _(vastaus) - .filter(pp => pp.diaarinumero) - .map("peruste") - .filter(p => (p as any).nimi) - .filter(p => (p as any).id !== $scope.nykyinenPeruste.id) - .value(); - - $scope.haku(""); - }); - } else { - $scope.luonnosPerusteet = []; - $scope.haku(""); - } - }; - - $scope.orderFn = function(item) { - return Kaanna.kaanna(item.perusteenOsa.nimi).toLowerCase(); - }; - - $scope.updateTotal = function() { - $scope.valitut = _.size(_.filter($scope.valittuPeruste.$sisalto, "$valittu")); - }; - - $scope.toggleKaikki = function(valinta) { - _.each($scope.valittuPeruste.$sisalto, function(tulos) { - tulos.$valittu = false; - if ($scope.search.term) { - if ($scope.search.filterFn(tulos)) { - tulos.$valittu = valinta; - } - } else { - tulos.$valittu = valinta; - } - }); - $scope.updateTotal(); - }; - - $scope.haku = function(haku) { - PerusteenRakenne.haePerusteita(haku, function(res) { - $scope.perusteet = _($scope.luonnosPerusteet) - .filter(p => { - return p.nimi[Kieli.getSisaltokieli()].indexOf(haku) !== -1; - }) - .concat(res.data) - .uniq(p => p.id) - .value(); - $scope.sivuja = res.sivuja; - $scope.sivu = res.sivu; - }); - }; - $scope.haku(""); - - $scope.vaihdaSuoritustapa = function(valinta) { - $scope.valitut = 0; - _.each($scope.valittuPeruste.$sisalto, function(s) { - s.$valittu = 0; - }); - $scope.valittuPeruste.$sisalto = sisallot[valinta.suoritustapakoodi]; - }; - - $scope.valitse = function(valittuPeruste) { - Perusteet.get( - { perusteId: valittuPeruste.id }, - function(peruste) { - $scope.valittuPeruste = peruste; - var oletusSuoritustapa = YleinenData.koulutustyyppiInfo[peruste.koulutustyyppi].oletusSuoritustapa; - if (oletusSuoritustapa !== "ops" && oletusSuoritustapa !== "naytto") { - peruste.suoritustavat = peruste.suoritustavat || []; - peruste.suoritustavat.push({ suoritustapakoodi: oletusSuoritustapa }); - } - - $scope.valittuSuoritustapa = (_.first(peruste.suoritustavat) as any).suoritustapakoodi; - $q - .all( - _.map(peruste.suoritustavat, st => SuoritustapaSisalto.get({ - perusteId: valittuPeruste.id, - suoritustapa: (st as any).suoritustapakoodi - }).$promise)) - .then(function(res) { - sisallot = _.zipObject( - _.map(peruste.suoritustavat, "suoritustapakoodi"), - _.map(res, function(hst: any) { - return _.reject(hst.lapset, function(lapsi: any) { - return lapsi.perusteenOsa.tunniste === "rakenne"; - }); - }) - ); - - if (_.indexOf(_.keys(sisallot), suoritustapa) === -1) { - suoritustapa = _.first(_.keys(sisallot)) || oletusSuoritustapa; - } - $scope.valittuPeruste.$sisalto = sisallot[suoritustapa]; - }, Notifikaatiot.serverCb); - }, - Notifikaatiot.serverCb - ); - }; - - $scope.takaisin = function() { - $scope.valittuPeruste = null; - $scope.search.term = ""; - $scope.paginate.current = 1; - $scope.valitut = 0; - }; - $scope.peru = function() { - $uibModalInstance.dismiss(); - }; - $scope.ok = function() { - $uibModalInstance.close(_.filter($scope.valittuPeruste.$sisalto, "$valittu")); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/virhe.test.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/virhe.test.ts deleted file mode 100644 index f327f134b6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/virhe.test.ts +++ /dev/null @@ -1,17 +0,0 @@ -import _ from "lodash"; -import { getComponent, inject, getOfType, testDirective, testModule, mockApp } from "app/testutils"; - -describe("virheService", () => { - let virheService: any; - - beforeEach(async () => { - mockApp(); - virheService = await getComponent("virheService"); - }); - - test("Can be injected", () => expect(virheService).toBeTruthy()); - - test("Virheen lähettäminen", () => { - virheService.virhe("foobar"); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/controllers/virhe.ts b/eperusteet/eperusteet-app/yo/app/scripts/controllers/virhe.ts deleted file mode 100644 index 01130b382d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/controllers/virhe.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import _ from "lodash"; -import * as angular from "angular"; - -angular - .module("eperusteApp") - .config(function($stateProvider) { - $stateProvider.state("root.virhe", { - url: "/virhe", - template: require("views/virhe.html"), - controller: "virheCtrl" - }); - }) - .controller("virheCtrl", function($scope, virheService) { - $scope.$watch(virheService.getData, function(value) { - $scope.data = value; - }); - }) - .service("virheService", function($state) { - var data = {}; - - return { - setData(d) { - data = d; - }, - - getData() { - return data; - }, - - virhe(virhe) { - if (_.isObject(virhe)) { - data = virhe; - } else { - data = { muu: virhe }; - } - $state.go("root.virhe", { - location: "replace" - }); - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/ammattitaitovaatimukset.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/ammattitaitovaatimukset.ts deleted file mode 100644 index 35d8dcd11d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/ammattitaitovaatimukset.ts +++ /dev/null @@ -1,299 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("ammattitaitoCtrl", function($scope, YleinenData, $timeout, Utils, Varmistusdialogi) { - $scope.showNewKohdealueInput = false; - - $scope.kohdealue = { - uusi: function() { - if (!$scope.uudenKohdealueenNimi) { - return; - } - - if (angular.isUndefined($scope.ammattitaito) || $scope.ammattitaito === null) { - $scope.ammattitaito = []; - } - - const kohdealue = { - otsikko: {}, - $$accordionOpen: true - }; - kohdealue.otsikko = $scope.uudenKohdealueenNimi; - - $scope.ammattitaito.push(kohdealue); - - $scope.uudenKohdealueenNimi = null; - $scope.showNewKohdealueInput = false; - }, - cancel: function() { - $scope.showNewKohdealueInput = false; - $scope.uudenKohdealueenNimi = null; - } - }; - - $scope.kohde = { - muokkaa: function(kohde, event) { - if (event) { - event.stopPropagation(); - } - $scope.originalKohde = kohde; - kohde.$editointi = true; - $scope.editableKohde = angular.copy(kohde); - - if (kohde.vaatimukset === 0) { - $scope.editableKohde.vaatimukset = [{}]; - } - }, - poista: function(list, item, event) { - if (event) { - event.stopPropagation(); - } - Varmistusdialogi.dialogi({ - otsikko: "varmista-osion-poisto-otsikko", - teksti: "varmista-osion-poisto-teksti", - primaryBtn: "poista", - successCb: function() { - _.remove(list, item); - } - })(); - }, - uusiWizard: function(kohdealue) { - kohdealue.$$newkohde = { - showInputArea: true - }; - }, - isAdding: function(kohdealue) { - return !_.isEmpty(kohdealue.$$newkohde); - }, - uusi: function(kohdealue) { - if (angular.isUndefined(kohdealue.vaatimuksenKohteet) || kohdealue.vaatimuksenKohteet === null) { - kohdealue.vaatimuksenKohteet = []; - } - - const kohde = { - otsikko: {}, - vaatimukset: [{}], - $$accordionOpen: true - }; - - kohde.otsikko[YleinenData.kieli] = kohdealue.$$newkohde.nimi; - kohdealue.vaatimuksenKohteet.push(kohde); - kohdealue.$$newkohde = {}; - $timeout(function() { - $scope.kohde.muokkaa(kohde); - }); - }, - cancel: function(kohdealue) { - kohdealue.$$newkohde = null; - }, - poistuMuokkauksesta: function(list, index) { - $scope.editableKohde.$editointi = false; - - _.reduce( - $scope.editableKohde.vaatimukset, - (acc, vaatimus) => { - (vaatimus as any).jarjestys = acc; - return acc + 1; - }, - 0 - ); - - _.each($scope.editableKohde.vaatimusRyhmat, function(kriteeri) { - if (kriteeri.vaatimukset.length === 1 && !Utils.hasLocalizedText(kriteeri.vaatimukset[0])) { - kriteeri.vaatimukset = []; - } - }); - - list[index] = angular.copy($scope.editableKohde); - $scope.kohde.peruMuokkaus(); - }, - peruMuokkaus: function() { - $timeout(function() { - $scope.editableKohde = null; - delete $scope.originalKohde.$editointi; - $scope.originalKohde = null; - }); - } - }; - - $scope.rivi = { - poista: function(list, index) { - list.splice(index, 1); - }, - uusi: function(kriteeri, event) { - if (_.isEmpty(kriteeri.vaatimukset)) { - kriteeri.vaatimukset = []; - } - kriteeri.vaatimukset.push({ jarjestys: kriteeri.vaatimukset.length }); - - // Set focus to newly added field - const parent = angular.element(event.currentTarget).closest("table"); - $timeout(function() { - const found = parent.find(".form-control"); - if (found.length > 0) { - found[found.length - 1].focus(); - } - }, 100); - } - }; - - if ($scope.eiKohdealueita && (angular.isUndefined($scope.ammattitaito) || $scope.ammattitaito === null)) { - $scope.uudenKohdealueenNimi = { - fi: "Nimetön ammattitaitovaatimus" - }; - $scope.kohdealue.uusi(); - } - }) - .directive("ammattitaito", function(YleinenData, $timeout, TutkinnonOsaLeikelautaService) { - return { - template: require("views/partials/ammattitaito.html"), - restrict: "E", - scope: { - ammattitaito: "=", - editAllowed: "@?editointiSallittu", - editEnabled: "=", - eiKohdealueita: "@" - }, - controller: "ammattitaitoCtrl", - link: function(scope: any) { - scope.eiKohdealueita = scope.eiKohdealueita === "true" || scope.eiKohdealueita === true; - scope.editAllowed = scope.editAllowed === "true" || scope.editAllowed === true; - - scope.vaatimukset = [ - { - otsikko: "" - } - ]; - - scope.$on("ammattitaitoasteikot", function() { - scope.ammattitaitoasteikot = YleinenData.ammattitaitoasteikot; - }); - - scope.elementDragged = false; - - scope.sortableOptions = TutkinnonOsaLeikelautaService.createConnectedSortable({ - connectWith: ".container-items-ammattitaito, .container-items-leikelauta", - start: function() { - scope.elementDragged = true; - } - }); - - scope.kohdeSortableOptions = TutkinnonOsaLeikelautaService.createConnectedSortable({ - connectWith: ".container-items-vaatimuksenKohteet, .container-items-leikelauta", - start: function() { - scope.elementDragged = true; - } - }); - - scope.kriteeriSortableOptions = TutkinnonOsaLeikelautaService.createConnectedSortable({ - axis: "y", - cancel: ".row-adder", - handle: ".drag-enable", - items: "tr:not(.row-adder)" - }); - - scope.$watch("editEnabled", function(value) { - scope.sortableOptions.disabled = !value; - scope.kriteeriSortableOptions.disabled = !value; - if (!value) { - scope.editableKohde = null; - } - $timeout(function() { - setAccordion(true); - }); - }); - - scope.isElementDragged = function() { - if (scope.elementDragged) { - scope.elementDragged = false; - return true; - } else { - return false; - } - }; - - // is-open attribuutti on annettava modelina accordionille, - // jotta ui-sortable voidaan disabloida lukutilassa. - function setAccordion(mode) { - const obj = scope.ammattitaito; - _.each(obj, function(kohdealue) { - kohdealue.$$accordionOpen = mode; - _.each(kohdealue.vaatimuksenKohteet, function(kohde) { - kohde.$$accordionOpen = mode; - }); - }); - } - - function accordionState() { - const obj = _.first(scope.ammattitaito); - return obj && (obj as any).$$accordionOpen; - } - - scope.toggleAll = function() { - setAccordion(!accordionState()); - }; - - setAccordion(true); - } - }; - }) - .directive("onEnter", function() { - return function(scope, element, attrs) { - element.bind("keydown keypress", function(event) { - if (event.which === 13) { - scope.$apply(function() { - scope.$eval(attrs.onEnter); - }); - - event.preventDefault(); - } - }); - }; - }) - .directive("onEsc", function() { - return function(scope, element, attrs) { - element.bind("keydown keypress", function(event) { - if (event.which === 27) { - scope.$apply(function() { - scope.$eval(attrs.onEsc); - }); - - event.preventDefault(); - } - }); - }; - }) - .directive("focusMe", function($timeout) { - return function(scope, element, attrs) { - scope.$watch(attrs.focusMe, function(value) { - if (value === true) { - $timeout(function() { - element[0].focus(); - }, 100); - } - }); - }; - }); - -// Kustomoitu accordion group, lisätty isElementDragged-tarkastelu -// jotta ui-sortable toimii accordionin kanssa. -angular.module("template/accordion/accordion-group.html", []).run([ - "$templateCache", - function($templateCache) { - $templateCache.put( - "template/accordion/accordion-group.html", - '
    \n' + - '
    \n' + - '

    \n' + - ' {{heading}}\n' + - "

    \n" + - "
    \n" + - '
    \n' + - '
    \n' + - "
    \n" + - "
    " - ); - } -]); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/arviointi.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/arviointi.ts deleted file mode 100644 index 76a6f8be35..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/arviointi.ts +++ /dev/null @@ -1,438 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .controller("arviointiCtrl", function( - $scope, - $translate, - YleinenData, - Varmistusdialogi, - $timeout, - Utils, - ArviointiPreferences, - Kaanna - ) { - $scope.showNewKohdealueInput = false; - - $scope.arviointiasteikkoChanged = function(kohdealue) { - ArviointiPreferences.setting("asteikko", kohdealue.$$newkohde.arviointiasteikko); - }; - - $scope.uudenKohdealueenNimiValid = () => { - return !!$scope.uudenKohdealueenNimi && !!$scope.uudenKohdealueenNimi[YleinenData.kieli]; - } - - $scope.kohdealue = { - uusi: function() { - if (!$scope.uudenKohdealueenNimi) { - return; - } - - if (angular.isUndefined($scope.arviointi) || $scope.arviointi === null) { - $scope.arviointi = []; - } - - var kohdealue = { - otsikko: {}, - $$accordionOpen: true - }; - kohdealue.otsikko = $scope.uudenKohdealueenNimi; - - $scope.arviointi.push(kohdealue); - - $scope.uudenKohdealueenNimi = null; - $scope.showNewKohdealueInput = false; - }, - cancel: function() { - $scope.showNewKohdealueInput = false; - $scope.uudenKohdealueenNimi = null; - } - }; - - const valmisteleKriteerit = function(arr, tasot) { - _.each(tasot, function(taso) { - arr.push({ - _osaamistaso: taso.id, - kriteerit: [{}] - }); - }); - }; - - $scope.kohde = { - muokkaa: function(kohde, event) { - if (event) { - event.stopPropagation(); - } - $scope.originalKohde = kohde; - kohde.$editointi = true; - $scope.editableKohde = angular.copy(kohde); - var kriteerit = $scope.editableKohde.osaamistasonKriteerit; - if (_.isArray(kriteerit) && _.isEmpty(kriteerit)) { - valmisteleKriteerit(kriteerit, $scope.arviointiasteikot[kohde._arviointiAsteikko].osaamistasot); - } - }, - poista: function(list, item, event) { - if (event) { - event.stopPropagation(); - } - Varmistusdialogi.dialogi({ - otsikko: "varmista-osion-poisto-otsikko", - teksti: "varmista-osion-poisto-teksti", - primaryBtn: "poista", - successCb: function() { - _.remove(list, item); - } - })(); - }, - uusiWizard: function(kohdealue) { - kohdealue.$$newkohde = { - showInputArea: true, - arviointiasteikko: ArviointiPreferences.setting("asteikko") - }; - }, - isAdding: function(kohdealue) { - return !_.isEmpty(kohdealue.$$newkohde); - }, - editArviointiasteikko: arvioinninkohde => { - $scope.editableKohde.$editArviointiasteikko = true; - $scope.editableKohde.$editedArviointiasteikko = true; - }, - cancelEditingArviointiasteikko: arvioinninkohde => { - $scope.editableKohde.$editArviointiasteikko = false; - }, - cahngeArviointiasteikko: arvioinninkohde => { - arvioinninkohde.$vanhaArviointiAsteikko = arvioinninkohde._arviointiAsteikko; - arvioinninkohde._arviointiAsteikko = $scope.editableKohde.$uusiArviointiAsteikko.id; - $scope.editableKohde._arviointiAsteikko = $scope.editableKohde.$uusiArviointiAsteikko.id; - $scope.editableKohde.$editArviointiasteikko = false; - - // Jos on sama arviointiasteikko, ei tehdä mitään - if ( - parseInt($scope.editableKohde._arviointiAsteikko) === - parseInt(arvioinninkohde.$vanhaArviointiAsteikko) - ) { - return; - } - - $scope.editableKohde.osaamistasonKriteerit = []; - valmisteleKriteerit( - $scope.editableKohde.osaamistasonKriteerit, - $scope.editableKohde.$uusiArviointiAsteikko.osaamistasot - ); - - // Osaamistasojen vastaavuudet kun käydään läpi alkuperäistä arvioinninkohdetta - const osaamistasoVastaavuudet = { - 1: 1, - 2: 5, - 3: 7, - 4: 9, - 5: 2, - 6: 6, - 7: 3, - 8: 8, - 9: 4 - }; - - _.each($scope.originalKohde.osaamistasonKriteerit, osaamistasonKriteeri => { - const osaamistasoId = parseInt(osaamistasonKriteeri._osaamistaso); - const kohdeOsaamistasoId = osaamistasoVastaavuudet[osaamistasoId]; - - const kohdeOsaamistaso = _.find($scope.editableKohde.osaamistasonKriteerit, editableOaKriteeri => { - return parseInt((editableOaKriteeri as any)._osaamistaso) === kohdeOsaamistasoId; - }); - - // Kopioidaan kriteerit jos osaamistaso löytyy kohteesta - if (kohdeOsaamistaso) { - (kohdeOsaamistaso as any).kriteerit = osaamistasonKriteeri.kriteerit; - } - }); - }, - uusi: function(kohdealue) { - if (angular.isUndefined(kohdealue.arvioinninKohteet) || kohdealue.arvioinninKohteet === null) { - kohdealue.arvioinninKohteet = []; - } - - var kohde = { - otsikko: {}, - selite: { - fi: "Opiskelija", - sv: "Den studerande" - }, - _arviointiAsteikko: kohdealue.$$newkohde.arviointiasteikko.id, - osaamistasonKriteerit: [], - $$accordionOpen: true - }; - - kohde.otsikko[YleinenData.kieli] = kohdealue.$$newkohde.nimi; - - valmisteleKriteerit(kohde.osaamistasonKriteerit, kohdealue.$$newkohde.arviointiasteikko.osaamistasot); - - kohdealue.arvioinninKohteet.push(kohde); - kohdealue.$$newkohde = {}; - $timeout(function() { - $scope.kohde.muokkaa(kohde); - }); - }, - cancel: function(kohdealue) { - kohdealue.$$newkohde = null; - }, - poistuMuokkauksesta: function(list, index) { - $scope.editableKohde.$editointi = false; - _.each($scope.editableKohde.osaamistasonKriteerit, function(kriteeri) { - if (kriteeri.kriteerit.length === 1 && !Utils.hasLocalizedText(kriteeri.kriteerit[0])) { - kriteeri.kriteerit = []; - } - }); - list[index] = angular.copy($scope.editableKohde); - $scope.kohde.peruMuokkaus(); - }, - peruMuokkaus: function() { - $timeout(function() { - $scope.editableKohde = null; - delete $scope.originalKohde.$editointi; - if ($scope.originalKohde.$vanhaArviointiAsteikko) { - $scope.originalKohde._arviointiAsteikko = $scope.originalKohde.$vanhaArviointiAsteikko; - } - $scope.originalKohde = null; - }); - } - }; - - $scope.rivi = { - poista: function(list, index) { - list.splice(index, 1); - }, - uusi: function(kriteeri, event) { - if (_.isEmpty(kriteeri.kriteerit)) { - kriteeri.kriteerit = []; - } - kriteeri.kriteerit.push({}); - // Set focus to newly added field - let parent = angular.element(event.currentTarget).closest("table"); - $timeout(function() { - let found = parent.find(".form-control"); - if (found.length > 0) { - found[found.length - 1].focus(); - } - }, 100); - } - }; - - if ($scope.eiKohdealueita && (angular.isUndefined($scope.arviointi) || $scope.arviointi === null)) { - $scope.uudenKohdealueenNimi = { - fi: "Nimetön" - }; - $scope.kohdealue.uusi(); - } - }) - .directive("arviointi", function(YleinenData, $timeout, TutkinnonOsaLeikelautaService) { - return { - template: require("views/partials/arviointi.html"), - restrict: "E", - scope: { - arviointi: "=", - editAllowed: "@?editointiSallittu", - editEnabled: "=", - eiKohdealueita: "@", - tyyppi: "@?" - }, - controller: "arviointiCtrl", - link: function(scope: any) { - scope.eiKohdealueita = scope.eiKohdealueita === "true" || scope.eiKohdealueita === true; - scope.editAllowed = scope.editAllowed === "true" || scope.editAllowed === true; - - scope.arviointiasteikot = YleinenData.arviointiasteikot || {}; - - YleinenData.haeArviointiasteikot(); - - scope.$on("arviointiasteikot", function() { - scope.arviointiasteikot = YleinenData.arviointiasteikot; - }); - - scope.elementDragged = false; - - scope.sortableOptions = TutkinnonOsaLeikelautaService.createConnectedSortable({ - $$id: "arviointi sortable", - connectWith: ".container-items-kohteet, .container-items-leikelauta" - }); - - scope.kriteeriSortableOptions = TutkinnonOsaLeikelautaService.createConnectedSortable({ - cancel: ".row-adder", - handle: ".drag-enable", - items: "tr:not(.row-adder)" - }); - - scope.$watch("editEnabled", function(value) { - scope.sortableOptions.disabled = !value; - scope.kriteeriSortableOptions.disabled = !value; - if (!value) { - scope.editableKohde = null; - } - $timeout(function() { - setAccordion(true); - }); - }); - - scope.isElementDragged = function() { - if (scope.elementDragged) { - scope.elementDragged = false; - return true; - } else { - return false; - } - }; - - /** - * is-open attribuutti on annettava modelina accordionille, jotta - * ui-sortable voidaan disabloida lukutilassa. - */ - function setAccordion(mode) { - let obj = scope.arviointi; - _.each(obj, function(kohdealue) { - kohdealue.$$accordionOpen = mode; - _.each(kohdealue.arvioinninKohteet, function(kohde) { - kohde.$$accordionOpen = mode; - }); - }); - } - - function accordionState() { - let obj = _.first(scope.arviointi); - return obj && (obj as any).$$accordionOpen; - } - - scope.toggleAll = function() { - setAccordion(!accordionState()); - }; - - setAccordion(true); - } - }; - }) - .directive("onEnter", function() { - return function(scope, element, attrs) { - element.bind("keydown keypress", function(event) { - if (event.which === 13) { - scope.$apply(function() { - scope.$eval(attrs.onEnter); - }); - - event.preventDefault(); - } - }); - }; - }) - .directive("onEsc", function() { - return function(scope, element, attrs) { - element.bind("keydown keypress", function(event) { - if (event.which === 27) { - scope.$apply(function() { - scope.$eval(attrs.onEsc); - }); - - event.preventDefault(); - } - }); - }; - }) - .directive("focusMe", function($timeout) { - return function(scope, element, attrs) { - scope.$watch(attrs.focusMe, function(value) { - if (value === true) { - $timeout(function() { - element[0].focus(); - }, 100); - } - }); - }; - }) - .controller("arvioinninTekstiKenttaCtrl", function($scope, Varmistusdialogi) { - $scope.muokkaustila = false; - $scope.editoitava = null; - - $scope.poistaAlkio = function(item, list, event) { - $scope.estaEventti(event); - if (_.isEmpty(item)) { - _.remove(list, item); - return; - } - Varmistusdialogi.dialogi({ - otsikko: "varmista-osion-poisto-otsikko", - teksti: "varmista-osion-poisto-teksti", - primaryBtn: "poista", - successCb: function() { - _.remove(list, item); - } - })(); - }; - - $scope.estaEventti = function($event) { - if ($event) { - $event.stopPropagation(); - } - }; - - $scope.asetaMuokkaustila = function(mode, $event) { - $scope.muokkaustila = mode; - $scope.editoitava = mode ? angular.copy($scope.sisaltoteksti) : null; - $scope.estaEventti($event); - }; - - $scope.hyvaksyMuutos = function($event, editoitava) { - $scope.editoitava = editoitava; - $scope.estaEventti($event); - $scope.sisaltoteksti = angular.copy($scope.editoitava); - $scope.asetaMuokkaustila(false); - }; - - $scope.peruMuutos = function($event) { - $scope.estaEventti($event); - $scope.asetaMuokkaustila(false); - }; - }) - .directive("arvioinninTekstikentta", function() { - return { - template: require("views/partials/arvioinninTekstikentta.html"), - restrict: "E", - scope: { - sisalto: "=", - sisaltoalue: "=", - editAllowed: "=", - sisaltoteksti: "=", - clickable: "@?", - editmode: "=" - }, - controller: "arvioinninTekstiKenttaCtrl" - }; - }) - .service("ArviointiPreferences", function() { - this.data = {}; - this.setting = function(key, value) { - if (arguments.length === 1) { - return this.data[key]; - } - this.data[key] = value; - }; - }); - -// Kustomoitu accordion group, lisätty isElementDragged-tarkastelu -// jotta ui-sortable toimii accordionin kanssa. -angular.module("template/accordion/accordion-group.html", []).run([ - "$templateCache", - function($templateCache) { - $templateCache.put( - "template/accordion/accordion-group.html", - "
    \n" + - "
    \n" + - "

    \n" + - " {{heading}}\n" + - "

    \n" + - "
    \n" + - "
    \n" + - "
    \n" + - "
    \n" + - "
    " - ); - } -]); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/ckeditor.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/ckeditor.ts deleted file mode 100644 index 5ffec58927..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/ckeditor.ts +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -declare var CKEDITOR: any; - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .run(function() { - CKEDITOR.disableAutoInline = true; - - // load external plugins - let basePath = CKEDITOR.basePath; - basePath = basePath.substr(0, basePath.indexOf("bower_components/")); - CKEDITOR.plugins.addExternal("termi", basePath + "ckeditor-plugins/termi/", "plugin.js"); - CKEDITOR.plugins.addExternal("epimage", basePath + "ckeditor-plugins/epimage/", "plugin.js"); - }) - .constant("editorLayouts", { - minimal: [ - { name: "clipboard", items: ["Cut", "Copy", "-", "Undo", "Redo"] }, - { name: "tools", items: ["About"] } - ], - simplified: [ - { name: "clipboard", items: ["Cut", "Copy", "Paste", "-", "Undo", "Redo"] }, - { name: "basicstyles", items: ["Bold", "Italic", "Underline", "Strike", "-", "RemoveFormat"] }, - { name: "paragraph", items: ["NumberedList", "BulletedList", "-", "Outdent", "Indent"] }, - { name: "tools", items: ["About"] } - ], - normal: [ - { name: "clipboard", items: ["Cut", "Copy", "Paste", "PasteText", "PasteFromWord", "-", "Undo", "Redo"] }, - { name: "basicstyles", items: ["Bold", "Italic", "Underline", "Strike", "-", "RemoveFormat"] }, - { name: "paragraph", items: ["NumberedList", "BulletedList", "-", "Outdent", "Indent", "-", "Blockquote"] }, - { - name: "insert", - items: ["Table", "HorizontalRule", "SpecialChar", "Link", "Termi", "epimage", "Mathjax"] - }, - { name: "tools", items: ["About"] } - ] - }) - .controller("TermiPluginController", function($scope, TermistoService, Kaanna, Algoritmit, $timeout) { - $scope.service = TermistoService; - $scope.filtered = []; - $scope.termit = []; - $scope.model = { - chosen: null, - newTermi: "" - }; - let callback = angular.noop; - let setDeferred = null; - - function setChosenValue(value) { - const found = _.find($scope.termit, function(termi: any) { - return termi.avain === value; - }); - $scope.model.chosen = found || null; - } - - function doSort(items) { - return _.sortBy(items, function(item: any) { - return Kaanna.kaanna(item.termi).toLowerCase(); - }); - } - - $scope.init = function() { - $scope.service.getAll().then(function(res) { - $scope.termit = res; - $scope.filtered = doSort(res); - if (setDeferred) { - setChosenValue(_.cloneDeep(setDeferred)); - setDeferred = null; - } - }); - }; - - $scope.filterTermit = function(value) { - $scope.filtered = _.filter(doSort($scope.termit), function(item) { - return Algoritmit.match(value, item.termi); - }); - }; - - // data from angular model to plugin - $scope.registerListener = function(cb) { - callback = cb; - }; - $scope.$watch("model.chosen", function(value) { - callback(value); - }); - - // data from plugin to angular model - $scope.setValue = function(value) { - $scope.$apply(function() { - if (_.isEmpty($scope.termit)) { - setDeferred = value; - } else { - setChosenValue(value); - } - }); - }; - - $scope.addNew = function() { - $scope.adding = !$scope.adding; - if ($scope.adding) { - $scope.model.newTermi = null; - } - }; - - $scope.closeMessage = function() { - $scope.message = null; - }; - - $scope.saveNew = function() { - const termi = $scope.service.newTermi($scope.model.newTermi); - $scope.service.save(termi).then(function() { - $scope.message = "termi-plugin-tallennettu"; - $timeout(function() { - $scope.closeMessage(); - }, 8000); - $scope.adding = false; - setDeferred = _.clone(termi.avain); - $scope.init(); - }); - }; - - $scope.cancelNew = function() { - $scope.adding = false; - }; - }) - .directive("ckeditor", function($q, $filter, $rootScope, editorLayouts, $timeout, Kaanna, EpImageService) { - return { - priority: 10, - restrict: "A", - require: "ngModel", - scope: { - editorPlaceholder: "@?", - editMode: "@?editingEnabled" - }, - link: function(scope: any, element: any, attrs: any, ctrl: any) { - let placeholderText = null; - let editingEnabled = (scope.editMode || "true") === "true"; - - if (editingEnabled) { - element.addClass("edit-mode"); - } - element.attr("contenteditable", "true"); - - function getPlaceholder() { - if (scope.editorPlaceholder) { - return $filter("kaanna")(scope.editorPlaceholder); - } else { - return ""; - } - } - - let editor = CKEDITOR.instances[attrs.id]; - if (editor) { - return; - } - - let toolbarLayout; - if (!_.isEmpty(attrs.layout) && !_.isEmpty(editorLayouts[attrs.layout])) { - toolbarLayout = editorLayouts[attrs.layout]; - } else { - if (element.is("div")) { - toolbarLayout = editorLayouts.normal; - } else { - toolbarLayout = editorLayouts.minimal; - } - } - - let ready = false; - let deferredcall = null; - editor = CKEDITOR.inline(element[0], { - toolbar: toolbarLayout, - removePlugins: "resize,elementspath,scayt,wsc", - extraPlugins: - "divarea,sharedspace,termi,epimage,dialogui,dialog,clipboard,lineutils,widget,mathjax", - extraAllowedContent: "img[!data-uid,src]; abbr[data-viite]", - disallowedContent: "br; tr td{width,height};", - language: "fi", - entities: false, - entities_latin: false, - sharedSpaces: { - top: "ck-toolbar-top" - }, - readOnly: !editingEnabled, - title: false, - customData: { - kaanna: Kaanna.kaanna - }, - mathJaxLib: "//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML" - }); - - // poistetaan enterin käyttö, jos kyseessä on yhden rivin syöttö - if (!element.is("div")) { - editor.on("key", function(event) { - if (event.data.keyCode === 13) { - event.cancel(); - } - }); - } - - scope.$on("$translateChangeSuccess", function() { - placeholderText = getPlaceholder(); - ctrl.$render(); - }); - - function setReadOnly(state) { - editor.setReadOnly(state); - } - - scope.$on("enableEditing", function() { - editingEnabled = true; - if (ready) { - setReadOnly(!editingEnabled); - } else { - deferredcall = _.partial(setReadOnly, !editingEnabled); - } - element.addClass("edit-mode"); - }); - - scope.$on("disableEditing", function() { - editingEnabled = false; - editor.setReadOnly(!editingEnabled); - element.removeClass("edit-mode"); - }); - - scope.$on("$destroy", function() { - $timeout(function() { - if (editor && editor.status !== "destroyed") { - editor.destroy(false); - } - }); - }); - - editor.on("focus", function() { - if (editingEnabled) { - element.removeClass("has-placeholder"); - $("#toolbar").show(); - if (_.isEmpty(ctrl.$viewValue)) { - editor.setData(""); - } - } - }); - - function trim(obj) { - // Replace all nbsps with normal spaces, remove extra spaces and trim ends. - if (_.isString(obj)) { - obj = obj - .replace(/ /gi, " ") - .replace(/ +/g, " ") - .trim(); - } - return obj; - } - - let dataSavedOnNotification = false; - scope.$on("notifyCKEditor", function(force) { - if (editor.checkDirty() || force) { - dataSavedOnNotification = true; - editor.getSelection().unlock(); - const data = element.hasClass("has-placeholder") ? "" : editor.getData(); - ctrl.$setViewValue(trim(data)); - } - $("#toolbar").hide(); - }); - - function updateModel() { - if (editor.checkDirty()) { - editor.getSelection().unlock(); - const data = editor.getData(); - scope.$apply(function() { - ctrl.$setViewValue(trim(data)); - // scope.$broadcast('edited'); - }); - if (_.isEmpty(data)) { - element.addClass("has-placeholder"); - editor.setData(placeholderText); - } - } - } - - editor.on("blur", function() { - if (dataSavedOnNotification) { - dataSavedOnNotification = false; - return; - } - updateModel(); - $("#toolbar").hide(); - }); - - editor.on("loaded", function() { - editor.filter.addTransformations([ - [ - { - element: "img", - right: function(el) { - el.attributes.src = EpImageService.getUrl({ id: el.attributes["data-uid"] }); - delete el.attributes.height; - delete el.attributes.width; - } - } - ] - ]); - }); - - editor.on("instanceReady", function() { - ready = true; - if (deferredcall) { - deferredcall(); - deferredcall = null; - } - $rootScope.$broadcast("ckEditorInstanceReady"); - }); - - // model -> view - - ctrl.$render = function() { - if (editor) { - if ( - angular.isUndefined(ctrl.$viewValue) || - (angular.isString(ctrl.$viewValue) && _.isEmpty(ctrl.$viewValue) && placeholderText) - ) { - element.addClass("has-placeholder"); - editor.setData(placeholderText); - editor.resetDirty(); - } else { - element.removeClass("has-placeholder"); - editor.setData(ctrl.$viewValue); - } - } - }; - - placeholderText = getPlaceholder(); - ctrl.$render(); - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/contenttree.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/contenttree.ts deleted file mode 100644 index 77a6a63991..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/contenttree.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").directive("contentTree", function(TEXT_HIERARCHY_MAX_DEPTH) { - return { - restrict: "A", - template: require("views/directives/contenttree.html"), - scope: { - model: "=contentTree", - rajaus: "=filterBy", - noContentPlaceholder: "@?", - badges: "=?", - editMode: "=" - }, - controller: function($scope) { - $scope.textMaxDepth = TEXT_HIERARCHY_MAX_DEPTH; - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/datecomparisonvalidator.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/datecomparisonvalidator.ts deleted file mode 100644 index 962df9c3da..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/datecomparisonvalidator.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import _ from "lodash"; -import * as angular from "angular"; -import moment from "moment"; - -angular.module("eperusteApp").directive("dateComparisonValidator", function() { - return { - restrict: "A", - require: "ngModel", - link: function(scope, element, attrs: any, ctrl: any) { - var vertailtavaKenttaNimi = attrs.dateComparisonName; - var aikaisempiAjankohta = attrs.dateComparisonEarlier; - - ctrl.$parsers.push(function(viewValue) { - var form = element.inheritedData("$formController"); - var vertailtavaKentta = form[vertailtavaKenttaNimi].$modelValue; - - if (aikaisempiAjankohta === "true") { - if (moment(vertailtavaKentta).isAfter(viewValue, "day") || !vertailtavaKentta || !viewValue) { - ctrl.$setValidity("dateComparisonValidator", true); - form[vertailtavaKenttaNimi].$setValidity("dateComparisonValidator", true); - return viewValue; - } else { - ctrl.$setValidity("dateComparisonValidator", false); - return viewValue; - } - } else { - if (moment(viewValue).isAfter(vertailtavaKentta, "day") || !vertailtavaKentta || !viewValue) { - ctrl.$setValidity("dateComparisonValidator", true); - form[vertailtavaKenttaNimi].$setValidity("dateComparisonValidator", true); - return viewValue; - } else { - ctrl.$setValidity("dateComparisonValidator", false); - return viewValue; - } - } - }); - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/dateformatter.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/dateformatter.ts deleted file mode 100644 index b4b02396fe..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/dateformatter.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import _ from "lodash"; -import * as angular from "angular"; -import moment from "moment"; - -angular - .module("eperusteApp") - .directive("dateformatter", function(YleinenData) { - return { - restrict: "A", - require: "ngModel", - link: function(scope, element, attrs, ctrl: any) { - ctrl.$parsers.unshift(function(viewValue) { - if (typeof viewValue === "object" || viewValue === "") { - ctrl.$setValidity("dateformatter", true); - return viewValue; - } - - var parsedMoment = moment(viewValue, YleinenData.dateFormatMomentJS, true); - - if (parsedMoment.isValid()) { - ctrl.$setValidity("dateformatter", true); - return parsedMoment.toDate(); - } else { - ctrl.$setValidity("dateformatter", false); - return viewValue; - } - }); - } - }; - }) - .directive("pvm", function(Kaanna) { - return { - restrict: "A", - link: function(scope, element: any, attrs: any) { - scope.$watch(attrs.pvm, function(value: any) { - if (!value) { - element.text(Kaanna.kaanna("ei-asetettu")); - return; - } - var date = new Date(value); - element.text(moment(date).format("D.M.YYYY")); - }); - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/dateformatvalidator.test.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/dateformatvalidator.test.ts deleted file mode 100644 index ec10bfa46c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/dateformatvalidator.test.ts +++ /dev/null @@ -1,22 +0,0 @@ -import _ from "lodash"; -import { - setInput, - compiled, - getComponent, - inject, - getOfType, - testDirective, - testModule, - mockApp -} from "../../testutils"; - -describe("dateformatvalidator", () => { - beforeEach(async () => { - mockApp(); - }); - - test("Date formats work", async () => { - let [el, $scope] = await compiled(``); - $scope.$digest(); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/dateformatvalidator.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/dateformatvalidator.ts deleted file mode 100644 index ba00836b9d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/dateformatvalidator.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import _ from "lodash"; -import * as angular from "angular"; -import moment from "moment"; - -angular.module("eperusteApp").directive("dateformatvalidator", function(YleinenData) { - return { - restrict: "A", - require: "ngModel", - link: function(scope, element, attrs, ngModel: any) { - var parsedMoment: any; - - ngModel.$parsers.unshift(function(viewValue) { - return validate(viewValue); - }); - - ngModel.$formatters.unshift(function(viewValue) { - return validate(viewValue); - }); - - function validate(viewValue) { - if (viewValue instanceof Date || viewValue === "" || viewValue === null || viewValue === undefined) { - ngModel.$setValidity("dateformatvalidator", true); - return viewValue; - } else if (typeof viewValue === "string") { - parsedMoment = moment(viewValue, YleinenData.dateFormatMomentJS, true); - } else if (typeof viewValue === "number") { - parsedMoment = moment(viewValue); - } else { - ngModel.$setValidity("dateformatvalidator", false); - return undefined; - } - - if (parsedMoment.isValid()) { - ngModel.$setValidity("dateformatvalidator", true); - return viewValue; - } else { - ngModel.$setValidity("dateformatvalidator", false); - return undefined; - } - } - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/diaarinumerouniikki.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/diaarinumerouniikki.ts deleted file mode 100644 index 06193d09af..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/diaarinumerouniikki.ts +++ /dev/null @@ -1,40 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").directive("diaarinumerouniikki", function(DiaarinumeroUniqueResource) { - return { - restrict: "A", - require: "ngModel", - link: function(scope, element, attrs, ngModel) { - (ngModel as any).$parsers.push(function(viewValue) { - if (!_.isEmpty(viewValue)) { - validate(viewValue); - } else { - (ngModel as any).$setValidity("diaarinumerouniikki", true); - } - return viewValue; - }); - - function doValidate(viewValue) { - DiaarinumeroUniqueResource.get( - { - diaarinumero: viewValue - }, - function(vastaus) { - (ngModel as any).$setValidity( - "diaarinumerouniikki", - !vastaus.loytyi || vastaus.tila === "julkaistu" - ); - // ngModel.$setValidity('diaarinumerouniikki', vastaus.loytyi && vastaus.tila === 'julkaistu'); - } - ); - } - - var validate = _.debounce(function(viewValue) { - scope.$apply(function() { - doValidate(viewValue); - }); - }, 300); - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/editinplace.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/editinplace.ts deleted file mode 100644 index 5e71f75132..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/editinplace.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").directive("editInPlace", function($compile, $parse, Kaanna, $document) { - return { - restrict: "A", - scope: { - editInPlace: "=" - }, - link: function(scope, element) { - scope.editing = false; - var readOnlyEl = angular.element(""); - readOnlyEl - .attr("ng-show", "!editing") - .attr("ng-click", "edit()") - .text('{{editInPlace || "nimetön" | kaanna }}'); - var inputEl = angular.element(""); - inputEl - .attr("ng-show", "editing") - .attr("ng-model", "editInPlace") - .attr("slocalized", "") - .css({ - "font-size": element.css("font-size"), - display: "inline-block", - height: parseInt(element.css("line-height"), 10) * 1.2 - }); - - element.append(readOnlyEl); - element.append(inputEl); - $compile(element.contents())(scope); - $document.on("click", function(event) { - if (element.find(event.target).length > 0) { - return; - } - scope.editing = false; - scope.$apply(); - }); - - scope.edit = function() { - var fakeEl = angular - .element("
    ") - .hide() - .text(readOnlyEl.text()); - element.append(fakeEl); - var width = fakeEl.width(); - fakeEl.remove(); - inputEl.css("width", Math.min(Math.max(width + 100, 400), 800)); - scope.editing = true; - }; - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/editointiKontrolli.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/editointiKontrolli.ts deleted file mode 100644 index b011e70524..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/editointiKontrolli.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL, Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").directive("editointiKontrolli", function($rootScope, Editointikontrollit) { - return { - restrict: "A", - link: function(scope, element: any, attrs: any) { - Editointikontrollit.getEditModePromise().then(function(editMode) { - if (!editMode) { - hideOrDisableElement(); - } - }); - - scope.$on("enableEditing", function() { - showOrEnableElement(); - }); - scope.$on("disableEditing", function() { - hideOrDisableElement(); - }); - - function hideOrDisableElement() { - if (element.is("input, textarea, button")) { - element.attr("disabled", "disabled"); - } else { - if (attrs.ngShow || attrs.ngHide) { - element.addClass("ng-hide"); - } else { - element.hide(); - } - } - } - - function shouldBeShown() { - return (!attrs.ngShow || scope.$eval(attrs.ngShow)) && (!attrs.ngHide || !scope.$eval(attrs.ngHide)); - } - - function showOrEnableElement() { - if (element.is("input, textarea, button")) { - if (!attrs.ngDisabled || !scope.$eval(attrs.ngDisabled)) { - element.removeAttr("disabled"); - } - } else { - if (shouldBeShown()) { - if (attrs.ngShow || attrs.ngHide) { - element.removeClass("ng-hide"); - } else { - element.show(); - } - } - } - } - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/editointikontrollit.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/editointikontrollit.ts deleted file mode 100644 index 0a02d3c1ea..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/editointikontrollit.ts +++ /dev/null @@ -1,112 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL, Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .directive("editointikontrollit", function($window) { - return { - template: require("views/partials/editointikontrollit.html"), - restrict: "E", - link: function(scope: any) { - var window = angular.element($window), - container = angular.element(".edit-controls"), - wrapper = angular.element(".editointi-wrapper"); - - /** - * Editointipalkki asettuu staattisesti footerin päälle kun skrollataan - * tarpeeksi alas. Ylempänä editointipalkki kelluu. - */ - scope.updatePosition = function() { - if (window.scrollTop() + window.innerHeight() < wrapper.offset().top + container.height()) { - container.addClass("floating"); - container.removeClass("static"); - container.css("width", wrapper.width()); - } else { - container.removeClass("floating"); - container.addClass("static"); - container.css("width", "100%"); - } - }; - var updatepos = function() { - scope.updatePosition(); - }; - window.on("scroll resize", updatepos); - scope.$on("$destroy", function() { - window.off("scroll resize", updatepos); - }); - scope.updatePosition(); - - scope.setMargins = function() { - if (scope.editStarted) { - wrapper.css("margin-bottom", "50px").css("margin-top", "20px"); - } else { - wrapper.css("margin-bottom", 0).css("margin-top", 0); - } - }; - scope.setMargins(); - } - }; - }) - .controller("EditointiCtrl", function($scope, $rootScope, Editointikontrollit, $translate) { - $scope.kommentti = ""; - $scope.hideControls = true; - - function setEditControls() { - if (Editointikontrollit.editingEnabled()) { - $scope.hideControls = false; - } else { - $scope.hideControls = true; - $scope.editStarted = false; - } - } - - Editointikontrollit.registerCallbackListener(setEditControls); - - $scope.$on("editointikontrollitRefresh", function() { - $scope.updatePosition(); - }); - - $scope.$on("enableEditing", () => { - $scope.$evalAsync(() => { - $scope.editStarted = true; - $scope.setMargins(); - $scope.kommentti = ""; - $scope.updatePosition(); - }); - }); - - $scope.$on("disableEditing", function() { - $scope.editStarted = false; - $scope.setMargins(); - }); - - $scope.start = function() { - Editointikontrollit.startEditing(); - }; - $scope.save = function() { - Editointikontrollit.saveEditing($scope.kommentti); - }; - $scope.cancel = function() { - Editointikontrollit.cancelEditing(); - }; - - $scope.kaanna = (teksti) => { - return $translate.instant(teksti); - } - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/epfooter.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/epfooter.ts deleted file mode 100644 index 1b7846a797..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/epfooter.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .service("EpFooterData", function($http, $window, $q) { - var data = null; - var fetched = false; - var pattern = /([^=]+)=([^=]+)(?:\n|$)/gi; - this.fetch = function() { - var deferred = $q.defer(); - if (fetched) { - deferred.resolve(data); - } else { - fetched = true; - $http - .get($window.location.pathname + "buildversion.txt") - .then(res => { - var result; - data = {}; - while ((result = pattern.exec(res.data)) !== null) { - data[result[1]] = - result[1] === "vcsRevision" ? result[2].substr(0, 8) : result[2].replace(/\s\s*$/, ""); - } - deferred.resolve(data); - }) - .catch(() => { - data = null; - deferred.resolve(data); - }); - } - return deferred.promise; - }; - }) - .directive("epFooter", function(SHOW_VERSION_FOOTER, EpFooterData) { - return { - restrict: "AE", - template: require("views/epfooter.html"), - scope: {}, - controller: function($scope) { - $scope.active = SHOW_VERSION_FOOTER; - if ($scope.active) { - EpFooterData.fetch().then(function(data) { - $scope.data = data; - }); - } - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/fileselect.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/fileselect.ts deleted file mode 100644 index a664994c86..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/fileselect.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .service("fileReader", function($q) { - function createReader(deferred) { - var reader = new FileReader(); - reader.onload = function() { - deferred.resolve(reader.result); - }; - reader.onerror = function() { - deferred.reject(reader.error); - }; - reader.onprogress = function() { - deferred.notify(reader.readyState); - }; - return reader; - } - - function readFile(fileurl, type) { - var deferred = $q.defer(); - var reader = createReader(deferred); - if (type === "binary") { - reader.readAsArrayBuffer(fileurl); - } else { - reader.readAsText(fileurl); - } - return deferred.promise; - } - - return { - readFile: readFile - }; - }) - .directive("fileSelect", function(fileReader) { - return { - template: require("views/partials/fileselect.html"), - restrict: "E", - link: function($scope: any, el, attrs) { - $scope.flabel = attrs.flabel || "selaa"; - function loadFile(file) { - if (!file) { - return; - } - - var isRunning = true; - var beforeSelect = $scope.$eval(attrs.beforeSelect); - var onSelect = $scope.$eval(attrs.onSelect); - - $scope.$apply(function() { - // Puhdistaa tiedostokentän - var doc = document.getElementById("fileDirectiveSelectInput"); - doc.outerHTML = doc.outerHTML; - $scope.file = file; - }); - - if (_.isFunction(onSelect)) { - beforeSelect(); - var promise = fileReader.readFile(file, attrs.readType); - promise.then( - function(file) { - onSelect(null, file); - }, - function(err) { - onSelect(err, null); - }, - function() { - isRunning = false; - } - ); - } - } - - el.bind("click", function(e) { - var target = angular.element(e.target).closest("button"); - var id = target.attr("id"); - if (id === "reloadFile") { - loadFile($scope.file); - } else if (id === "addFile") { - $("#fileDirectiveSelectInput", el).click(); - } - }); - - el.bind("change", function(e: any) { - loadFile(e.target.files[0]); - }); - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/followscroll.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/followscroll.ts deleted file mode 100644 index 33214ace62..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/followscroll.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -/** - * Elementti seuraa vieritystä jos ohitetaan yläreuna. - * Jos ikkunan koko on pienempi kuin DISABLE_WIDTH, seuraus disabloidaan. - * Alkuperäinen sijainti tarkastetaan parent-elementistä. - */ -angular.module("eperusteApp").directive("followScroll", function($window) { - var TOPMARGIN = 5; - var DISABLE_WIDTH = 992; - return { - restrict: "A", - link: function(scope: any, element: any) { - var window = angular.element($window), - parent = element.parent(); - - scope.updatePosition = function() { - if (window.innerWidth() <= DISABLE_WIDTH) { - return; - } - var parentTop = parent.offset().top; - var windowTop = window.scrollTop(); - if (windowTop > parentTop) { - element.css({ - position: "relative", - top: windowTop - parentTop + TOPMARGIN - }); - } else { - element.css("top", 0); - } - }; - - var updatepos = function() { - scope.updatePosition(); - }; - window.on("scroll resize", updatepos); - scope.$on("$destroy", function() { - window.off("scroll resize", updatepos); - }); - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/formfield.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/formfield.ts deleted file mode 100644 index 71713f8480..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/formfield.ts +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -/** - * Form field with label and input field. - * @param {Object} model Model base object for input, e.g. a.b.c => a is model - * @param {String} modelVar Suffix for model, e.g. a.b.c => b.c is modelVar - * @param {String} label Label in the ui, will be translated - * @param {String} type Input type text|number|checkbox|..., default text - * @param {Array} options Options for selector, doesn't require type attribute - * Flat array: value will be raw value, displayed label is translated from raw value - * Object array: {value: VALUE, label: LABEL}, label is translated - * @param {form} form Form object - * @param {Integer} min Minimum value for number input - * @param {Integer} max Maximum value for number input or max length for text - * @param {String} name Field name - * @param {String} placeholder Placeholder for input or select, will be translated - * @param {String/Expression} required 'required'|'true'|parent scope expression - */ -angular.module("eperusteApp").directive("formfield", function($parse, Kaanna, $timeout, YleinenData) { - var uniqueId = 0; - var checkInputType = function(scope) { - scope.isObject = _.isObject(scope.input.model); - scope.isNumber = - !scope.options && - !scope.isObject && - (scope.type === "number" || scope.type === "float" || scope.type === "integer"); - scope.isDate = !scope.options && scope.type === "date"; - scope.isText = - !scope.options && - !scope.isObject && - !(scope.type === "number" || scope.type === "float" || scope.type === "integer" || scope.type === "label"); - scope.isMultiText = !scope.options && scope.isObject && scope.type !== "label"; - scope.datePicker = { - options: YleinenData.dateOptions, - format: YleinenData.dateFormatDatepicker, - state: false, - open: function($event) { - $event.preventDefault(); - $event.stopPropagation(); - scope.datePicker.state = !scope.datePicker.state; - } - }; - scope.isLabel = scope.type === "label"; - }; - return { - template: require("views/partials/formfield.html"), - transclude: true, - restrict: "E", - scope: { - model: "=", - label: "@", - type: "@?", - options: "=?", - modelVar: "@", - form: "=", - min: "@?", - max: "@?", - name: "@", - placeholder: "@", - step: "@?", - ngRequired: "@?", - required: "@?" - }, - link: function(scope: any, element: any, attrs: any) { - scope.postfix = scope.ngRequired || scope.required ? "*" : ""; - scope.type = scope.type || "text"; - scope.flatOptions = _.isArray(scope.options) && scope.options.length > 0 && !_.isObject(scope.options[0]); - - if (!scope.flatOptions) { - _.forEach(scope.options, function(opt) { - opt.label = Kaanna.kaanna(opt.label); - }); - } - - scope.kaanna = function(val) { - return Kaanna.kaanna(val); - }; - - scope.inputClasses = function() { - var classes = []; - if (scope.type !== "checkbox") { - classes.push("form-control"); - } - return classes; - }; - - function bindLabel() { - if (scope.label) { - scope.inputElId = scope.label.replace(/ /g, "-") + "-" + uniqueId++; - element.find("label").attr("for", scope.inputElId); - } - } - - if ((scope.type === "text" || scope.type === "diaari") && attrs.max) { - $timeout(function() { - element.find("input").attr("maxlength", attrs.max); - }); - } - - bindLabel(); - - // Two-way binding with deep object hierarchies needs some tricks - var getter = $parse(scope.modelVar); - var setter = getter.assign; - scope.input = {}; - scope.input.model = getter(scope.model); - // inner => outside - - scope.$watch( - "input.model", - function() { - checkInputType(scope); - if (scope.input && !_.isUndefined(scope.input.model)) { - setter(scope.model, scope.input.model); - } - }, - true - ); - - // outside => inner - scope.$watch( - function() { - return getter(scope.model); - }, - function(value) { - checkInputType(scope); - scope.input.model = value; - } - ); - - checkInputType(scope); - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/generictree.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/generictree.ts deleted file mode 100644 index 1187374add..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/generictree.ts +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -// TODO: removeme, working local "fork" of the generictree to avoid height: 900px container div - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eGenericTree", []) - .directive("genericTreeNode", function($compile, $templateCache, $timeout, $animate) { - function setContext(node, children) { - node.$$hasChildren = !_.isEmpty(children); - _.each(children, function(cnode) { - cnode.$$depth = node.$$depth + 1; - cnode.$$nodeParent = node; - }); - } - - function getTemplate(tp, node) { - var template = tp.template ? tp.template(node) : undefined; - return $templateCache.get(template) || template || "
    {{ node | json }}
    "; - } - - return { - restrict: "E", - replace: true, - template: "", - scope: { - node: "=", - treeProvider: "=", - uiSortableConfig: "=" - }, - controller: function($scope) { - $scope.treeProvider.extension($scope.node, $scope); - $scope.isHidden = function(node) { - return $scope.treeProvider.hidden(node); - }; - }, - link: function(scope: any, element) { - $animate.enabled(false, element); - var node = scope.node; - const children = scope.treeProvider.children(node); - element.empty(); - setContext(node, children); - var template = getTemplate(scope.treeProvider, node); - if (children) { - template += - '
    '; - scope.children = children; - scope.parentNode = node; - if (!_.isEmpty(children)) { - template += - "" + - '
    ' + - ' ' + - "
    "; - } - template += "
    "; - } - - // FIXME: More dirty hacks - $timeout(() => { - element.append(template); - $compile(element.contents())(scope); - }); - } - }; - }) - .directive("genericTree", function($compile, $log, $timeout, $animate) { - return { - restrict: "E", - replace: true, - template: "", - scope: { - treeProvider: "=", // FIXME: Add interface - uiSortableConfig: "=?" - }, - controller: function($scope) { - function run(provider) { - // Sane defaults - provider.sortableClass = provider.sortableClass || _.constant(""); - provider.acceptDrop = provider.acceptDrop || _.constant(true); - - $scope.tprovider = provider; - provider - .root() - .then(function(root) { - $scope.root = root; - return provider.children(root); - }) - .then(function(children) { - $scope.children = children; - }) - .catch(function(err) { - $log.error(err); - }); - } - - $scope.treeProvider.then(run).catch(function(err) { - $log.error(err); - }); - }, - link: function(scope, element) { - $animate.enabled(false, element); - let isRefreshing = false; - function refresh(tree) { - if (!tree || isRefreshing) { - return; - } - - isRefreshing = true; - - _.each(scope.children, function(child) { - child.$$nodeParent = undefined; - child.$$depth = 0; - }); - - scope.sortableConfig = _.merge( - { - connectWith: ".recursivetree", - handle: ".treehandle", - cursorAt: { top: 2, left: 2 }, - helper: "clone", - option: "x", - cursor: "move", - delay: 100, - disabled: scope.tprovider.useUiSortable(), - tolerance: "pointer", - // start: function() { - // setupMinHeightForAllGenericTrees(); - // }, - // stop: function() { - // restoreParentHeightForAllGenericTrees(); - // }, - update: function(e, ui) { - // if (scope.tprovider.acceptDrop) { - // const dropTarget = ui.item.sortable.droptarget; - // if (dropTarget) { - // const listItem = dropTarget.closest('.recursivetree'); - // const parentScope = listItem ? listItem.scope() : null; - // const parentNode = parentScope && parentScope.node ? parentScope.node : scope.treeRoot; - // if (!parentNode || !scope.tprovider.acceptDrop(ui.item.sortable.model, parentNode, e, ui)) { - // ui.item.sortable.cancel(); - // } - // } - // } - } - // cancel: '.ui-state-disabled' - }, - scope.uiSortableConfig || {} - ); - - const templateEl = angular.element( - '
    ' + - '
    ' + - ' ' + - "
    " + - "
    " - ); - $compile(templateEl)(scope); - if (element.children().length) { - angular.element(element.children()[0]).replaceWith(templateEl); - } else { - element.append(templateEl); - } - // FIXME: Dirty hack - $timeout(() => (isRefreshing = false)); - } - - scope.$on("genericTree:refresh", function() { - refresh(scope.children); - }); - scope.$watch("children", refresh); - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/hallintalinkki.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/hallintalinkki.ts deleted file mode 100644 index bf490f39e9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/hallintalinkki.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").directive("hallintalinkki", [ - "Profiili", - "$window", - "$stateParams", - function(Profiili, $window, $stateParams) { - return { - template: - '', - restrict: "E", - link: function postLink(scope: any, element: any) { - if ($window.location.host.indexOf("localhost") === 0) { - element.show(); - } else { - element.hide(); - } - - scope.params = $stateParams; - - scope.$on("fetched:casTiedot", function() { - if (_.contains(Profiili.groups(), "APP_EPERUSTEET_CRUD_1.2.246.562.10.00000000001")) { - element.show(); - } - }); - } - }; - } -]); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/iconrole.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/iconrole.ts deleted file mode 100644 index bda3b3a289..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/iconrole.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - /** - * Prepends a glyphicon to the element, see mapping in IconMapping. - */ - .directive("iconRole", function(IconMapping) { - return { - restrict: "A", - compile: function() { - return function postLink(scope, element, attrs: any) { - if (attrs.kaanna) { - return; - } - IconMapping.addIcon(attrs.iconRole, element); - }; - } - }; - }) - .service("IconMapping", function() { - this.addIcon = function(key, el) { - var iconEl = this.getIconEl(key); - if (el.text()) { - el.addClass("iconlink"); - } - el.prepend(iconEl); - }; - this.getIconEl = function(key) { - if (key.substr(0, 3) === "ep-") { - return angular - .element("") - .addClass("ep-icon") - .addClass(key); - } else { - var suffix = this.icons[key] || key; - return angular - .element("") - .addClass("glyphicon") - .addClass("glyphicon-" + suffix); - } - }; - this.icons = { - add: "plus", - back: "chevron-left", - download: "download-alt", - drag: "resize-vertical", - edit: "pencil", - first: "fast-backward", - forward: "chevron-right", - import: "cloud-download", - info: "info-sign", - last: "fast-forward", - minus: "minus", - next: "forward", - previous: "backward", - remove: "remove", - save: "save", - search: "search", - settings: "cog" - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/kommentit.test.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/kommentit.test.ts deleted file mode 100644 index 9491c16ea7..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/kommentit.test.ts +++ /dev/null @@ -1,22 +0,0 @@ -import _ from "lodash"; -import { - setInput, - compiled, - getComponent, - inject, - getOfType, - testDirective, - testModule, - mockApp -} from "../../testutils"; - -describe("Kommentit", () => { - let Kommentit: any; - - beforeEach(async () => { - mockApp(); - Kommentit = await getComponent("Kommentit"); - }); - - test("Can be injected", () => expect(Kommentit).toBeTruthy()); -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/kommentit.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/kommentit.ts deleted file mode 100644 index b1eb767e9b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/kommentit.ts +++ /dev/null @@ -1,94 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .directive("kommentit", function(Kommentit, $timeout, $location, kayttajaToiminnot, Varmistusdialogi, YleinenData) { - return { - restrict: "AE", - template: require("views/kommentit.html"), - scope: {}, - controller: function($scope) { - $scope.nayta = false; - $scope.editointi = false; - $scope.editoitava = ""; - $scope.editoi = false; - $scope.sisalto = false; - $scope.onLataaja = false; - $scope.urlit = {}; - $scope.nimikirjaimet = kayttajaToiminnot.nimikirjaimet; - - $scope.$kommenttiMaxLength = { - maara: YleinenData.kommenttiMaxLength - }; - - const lataaKommentit = _.debounce(url => { - var lataaja = $scope.urlit[url]; - if (lataaja) { - lataaja(function(kommentit) { - $scope.sisalto = kommentit; - $scope.nayta = true; - }); - } - }, 300); - - function naytaKommentit() { - lataaKommentit($location.url()); - } - - $scope.$on("$stateChangeStart", function() { - $scope.nayta = false; - $scope.onLataaja = false; - }); - - function lataajaCb(url, lataaja) { - if (!$scope.urlit[url]) { - $scope.onLataaja = true; - $scope.urlit[url] = lataaja; - } - naytaKommentit(); - } - - var stored = Kommentit.stored(); - if (!_.isEmpty(stored)) { - lataajaCb(stored.url, stored.lataaja); - } - - $scope.$on("update:kommentit", function(event, url, lataaja) { - lataajaCb(url, lataaja); - }); - - $scope.muokkaaKommenttia = function(kommentti, uusikommentti, cb) { - Kommentit.muokkaaKommenttia(kommentti, uusikommentti, cb); - }; - - $scope.poistaKommentti = function(kommentti) { - Varmistusdialogi.dialogi({ - otsikko: "vahvista-poisto", - teksti: "poistetaanko-kommentti", - primaryBtn: "poista", - successCb: function() { - Kommentit.poistaKommentti(kommentti); - } - })(); - }; - $scope.lisaaKommentti = function(parent, kommentti, cb) { - Kommentit.lisaaKommentti(parent, kommentti, function() { - $scope.sisalto.$yhteensa += 1; - (cb || angular.noop)(); - }); - }; - - $scope.$on("enableEditing", function() { - $scope.editointi = true; - }); - $scope.$on("disableEditing", function() { - $scope.editointi = false; - }); - - $timeout(function() { - naytaKommentit(); - }); - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/kommenttiviesti.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/kommenttiviesti.ts deleted file mode 100644 index 22a753cef6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/kommenttiviesti.ts +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .directive("kommenttiViesti", function($timeout, $compile, kommenttiViestiTemplate, Algoritmit, YleinenData) { - return { - restrict: "AE", - template: "", - scope: { - sisalto: "=", - depth: "=", - parent: "=" - }, - link: function(scope: any, element: any) { - scope.$watch("sisalto.$resolved", function() { - scope.processMessages(); - $timeout(function() { - element.html(""); - $compile(kommenttiViestiTemplate)(scope, function(clone) { - element.append(clone); - }); - }); - }); - }, - controller: function($scope, Profiili) { - $scope.editoi = false; - $scope.model = { - editoitava: "" - }; - $scope.indent = $scope.depth * 60 + "px"; - $scope.oidResolved = false; - $scope.selfOid = Profiili.oid(); - if (!$scope.selfOid) { - Profiili.casTiedot().then(function(res) { - if (res.oid) { - $scope.selfOid = res.oid; - } - $scope.oidResolved = true; - }); - } else { - $scope.oidResolved = true; - } - - $scope.$kommenttiMaxLength = { - maara: YleinenData.kommenttiMaxLength - }; - - // TODO: Selvitä miksi ng-show kutsuu tätä tuhottoman paljon - $scope.$checkOverflow = function(viesti) { - var elem = $("#kommenttiviesti-" + viesti.id)[0]; - return ( - elem && - (viesti.$nayta || - (elem.offsetHeight < elem.scrollHeight || elem.offsetWidth < elem.scrollWidth)) - ); - }; - - $scope.processMessage = function(item) { - item.$nimikirjaimet = $scope.nimikirjaimet(item.nimi || item.muokkaaja); - }; - - $scope.processMessages = function() { - Algoritmit.kaikilleLapsisolmuille($scope.sisalto, "viestit", $scope.processMessage); - }; - - $scope.poistaKommentti = $scope.$parent.poistaKommentti; - $scope.muokkaaKommenttia = $scope.$parent.muokkaaKommenttia; - $scope.lisaaKommentti = $scope.$parent.lisaaKommentti; - $scope.nimikirjaimet = $scope.$parent.nimikirjaimet; - $scope.startEditing = function(viesti) { - $scope.editoi = viesti.id; - $scope.model.editoitava = angular.copy(viesti.sisalto); - }; - $scope.cancelEditing = function() { - $scope.editoi = false; - $scope.model.editoitava = ""; - }; - $scope.saveEditing = function(viesti) { - $scope.editoi = false; - $scope.muokkaaKommenttia(viesti, angular.copy($scope.model.editoitava), function() { - $scope.processMessage(viesti); - }); - $scope.model.editoitava = ""; - }; - $scope.saveNew = function(viesti, editoitava) { - $scope.lisaaKommentti(viesti, editoitava, function() { - $scope.processMessages(); - }); - editoitava = ""; - viesti.$lisaa = false; - }; - } - }; - }) - .factory("kommenttiViestiTemplate", function() { - return ( - '
    ' + - '
    ' + - '
    ' + - "

    {{'viesti-poistettu' | kaanna }} {{ viesti.muokattu | aikaleima }}

    " + - "
    " + - '
    ' + - '
    ' + - '
    {{viesti.$nimikirjaimet}}
    ' + - "
    " + - '
    ' + - "

    " + - " {{ viesti.nimi || viesti.muokkaaja }}" + - ' ' + - ' ' + - ' ' + - " " + - "

    " + - '
    ' + - '

    {{ viesti.sisalto }}

    ' + - '

    {{ viesti.sisalto }}

    ' + - ' ' + - ' ' + - ' ' + - " " + - "
    " + - '
    ' + - ' ' + - ' " + - "
    " + - ' ' + - ' ' + - "
    " + - "
    " + - ' " + - "
    " + - "
    " + - "
    " + - '
    ' + - '
    ' + - ' ' + - ' " + - '
    ' + - ' ' + - ' ' + - "
    " + - '
    ' + - "
    " + - "
    " + - "
    " + - '' + - "
    " - ); - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/koodisto.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/koodisto.ts deleted file mode 100644 index db75746448..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/koodisto.ts +++ /dev/null @@ -1,333 +0,0 @@ -import * as angular from "angular"; -import _ from "lodash"; -import { kieli } from "../services/yleinenData"; - -angular - .module("eperusteApp") - .service("Koodisto", function($http, $uibModal, SERVICE_LOC, $resource, Kaanna, Notifikaatiot, Utils, Api, Kieli) { - - var taydennykset = []; - var koodistoVaihtoehdot = [ - "ammattitaitovaatimukset", - "tutkinnonosat", - "tutkintonimikkeet", - "koulutus", - "osaamisala", - ]; - var nykyinenKoodisto = _.first(koodistoVaihtoehdot); - var lisaFiltteri = function() { - return true; - }; - - function haeSivutettu(koodisto, cb, sivu, sivukoko, haku, myosVanhentuneet) { - const sivutettu = Api.one("/koodisto/sivutettu/"+koodisto).get( - { - sivukoko, - sivu, - haku, - kieli: Kieli.getSisaltokieli(), - onlyValidKoodis: !myosVanhentuneet - } - ); - cb(); - return sivutettu; - } - - function hae(koodisto, cb) { - if (!_.isEmpty(taydennykset) && koodisto === nykyinenKoodisto) { - cb(); - return; - } - $http.get(SERVICE_LOC + "/koodisto/sivutettu/" + koodisto).then(res => { - taydennykset = koodistoMapping(res.data); - nykyinenKoodisto = koodisto; - taydennykset = _.sortBy(taydennykset, Utils.nameSort); - cb(); - }, Notifikaatiot.serverCb); - } - - function haeAlarelaatiot(koodi, cb) { - var resource = $resource(SERVICE_LOC + "/koodisto/relaatio/sisaltyy-alakoodit/:koodi"); - resource.query({ koodi: koodi }, function(vastaus) { - var relaatiot = koodistoMapping(vastaus); - cb(relaatiot); - }); - } - - function haeYlarelaatiot(koodi, tyyppi, cb) { - if (!_.isEmpty(taydennykset) && koodi === nykyinenKoodisto) { - cb(); - return; - } - var resource = $resource(SERVICE_LOC + "/koodisto/relaatio/sisaltyy-ylakoodit/:koodi"); - resource.query({ koodi: koodi }, function(re) { - taydennykset = suodataTyypinMukaan(re, tyyppi); - taydennykset = koodistoMapping(taydennykset); - taydennykset = _.sortBy(taydennykset, Utils.nameSort); - nykyinenKoodisto = koodi; - cb(); - }); - } - - function suodataTyypinMukaan(koodistodata, tyyppi) { - return _.filter(koodistodata, function(data) { - return (data as any).koodiUri.substr(0, tyyppi.length) === tyyppi; - }); - } - - function koodistoMapping(koodistoData) { - return _(koodistoData) - .map(function(kd) { - const nimi = { - fi: "", - sv: "", - en: "" - }; - _.forEach(kd.metadata, function(obj) { - nimi[obj.kieli.toLowerCase()] = obj.nimi; - }); - - const haku = _.reduce(_.values(nimi), (result, v: string) => (result + v).toLowerCase()); - return { - nimi, - haku, - koodiArvo: kd.koodiArvo, - koodiUri: kd.koodiUri, - koodisto: kd.koodisto, - voimassaAlkuPvm: kd.voimassaAlkuPvm - }; - }) - .value(); - } - - function filtteri(haku) { - haku = haku.toLowerCase(); - return _.filter(taydennykset, function(t) { - return t.koodiUri.indexOf(haku) !== -1 || t.haku.indexOf(haku) !== -1; - }); - } - - function modaali(successCb, resolve, failureCb, lisaf, payload?) { - - if (filtteri) { - lisaFiltteri = lisaf; - } - return function() { - resolve = _.merge( - { - tarkista: _.constant(false) - }, - { - nimifilter: _.constant(false) - }, - resolve || {} - ); - - failureCb = failureCb || angular.noop; - $uibModal - .open({ - template: require("views/modals/koodistoModal.html"), - controller: "KoodistoModalCtrl", - resolve: resolve - }) - .result.then((...args) => successCb(...args, payload), failureCb); - }; - } - - function haeAmmattitaitovaatimuksenTutkintoosa(koodiUri, sivu) { - return Api.one("/ammattitaitovaatimukset/tutkinnonosat").get( - { - kaikki:true, - uri:koodiUri, - sivu, - sivukoko:10 - } - ); - } - - function lisaaKoodistoKoodi(koodistonimi, koodinimi) { - return Api.one("/koodisto/"+koodistonimi).post("", koodinimi); - } - - return { - hae: hae, - filtteri: filtteri, - vaihtoehdot: _.clone(koodistoVaihtoehdot), - modaali: modaali, - haeAlarelaatiot: haeAlarelaatiot, - haeYlarelaatiot: haeYlarelaatiot, - haeAmmattitaitovaatimuksenTutkintoosa: haeAmmattitaitovaatimuksenTutkintoosa, - haeSivutettu: haeSivutettu, - koodistoMapping: koodistoMapping, - lisaaKoodistoKoodi: lisaaKoodistoKoodi - }; - }) - .controller("KoodistoModalCtrl", function( - $scope, - $uibModalInstance, - $timeout, - $state, - Koodisto, - tyyppi, - ylarelaatioTyyppi, - TutkinnonOsanKoodiUniqueResource, - Notifikaatiot, - tarkista, - PerusteProjektiService, - nimifilter, - Kieli - ) { - $scope.koodistoVaihtoehdot = Koodisto.vaihtoehdot; - $scope.tyyppi = tyyppi; - $scope.ylarelaatioTyyppi = ylarelaatioTyyppi; - $scope.loydetyt = []; - $scope.totalItems = 0; - $scope.itemsPerPage = 10; - $scope.nykyinen = 1; - $scope.lataa = true; - $scope.syote = ""; - $scope.tutkinnonosaviitteet = {}; - $scope.nimirajaus = ""; - $scope.myosVanhentuneet = false; - - if (_.isObject(nimifilter) && nimifilter[Kieli.getSisaltokieli()]) { - $scope.syote = nimifilter[Kieli.getSisaltokieli()]; - $scope.nimirajaus = nimifilter[Kieli.getSisaltokieli()]; - } - - $scope.haeSivutettu = _.debounce(async () => { - const sivutettuData = await Koodisto.haeSivutettu($scope.tyyppi, hakuCb, $scope.nykyinen-1, $scope.itemsPerPage, $scope.nimirajaus, $scope.myosVanhentuneet); - - $scope.loydetyt = sivutettuData.data; - $scope.loydetyt = Koodisto.koodistoMapping($scope.loydetyt); - $scope.totalItems = sivutettuData.kokonaismäärä; - - if ($scope.haetaanAmmattitaitovaatimukset()) { - _.forEach($scope.loydetyt, (rivi: any) => { - $scope.haeAmmattitaitovaatimuksenTutkintoosa(rivi.koodiUri, 0); - }); - } - - }, 300); - - - $scope.valitseSivu = function(sivu) { - if (sivu > 0 && sivu <= Math.ceil($scope.totalItems / $scope.itemsPerPage)) { - $scope.nykyinen = sivu; - } - - $scope.haeSivutettu(); - }; - - $scope.haku = function(rajaus) { - $scope.nimirajaus = rajaus; - $scope.nykyinen = 1; - $scope.haeSivutettu(); - }; - - function hakuCb() { - $scope.lataa = false; - $timeout(function() { - $("#koodisto_modal_autofocus").focus(); - }, 0); - } - - $scope.haeSivutettu(); - - $scope.ok = function(koodi) { - if (tarkista) { - TutkinnonOsanKoodiUniqueResource.get({ tutkinnonosakoodi: koodi.koodiUri }, function(res) { - if (res.vastaus) { - $uibModalInstance.close(koodi); - } else { - Notifikaatiot.varoitus("tutkinnon-osan-koodi-kaytossa"); - } - }); - } else { - $uibModalInstance.close(koodi); - } - }; - $scope.peruuta = function() { - $uibModalInstance.dismiss(); - }; - - $scope.haeAmmattitaitovaatimuksenTutkintoosa = async (koodiUri, sivu) => { - if($scope.tutkinnonosaviitteet[koodiUri]) { - $scope.tutkinnonosaviitteet[koodiUri].lataa = true; - } - const tutkinnonosat = await Koodisto.haeAmmattitaitovaatimuksenTutkintoosa(koodiUri, sivu); - $scope.tutkinnonosaviitteet[koodiUri] = tutkinnonosat; - $scope.tutkinnonosaviitteet[koodiUri].lataa = false; - } - - $scope.haetaanAmmattitaitovaatimukset = () => { - return $scope.tyyppi === 'ammattitaitovaatimukset'; - } - - $scope.getPerusteenUrl = (projekti, peruste) => { - return PerusteProjektiService.getUrl(projekti, peruste); - } - - $scope.getTutkinnonosaUrl = function(tutkinnonosa) { - return $state.href( - "root.perusteprojekti.suoritustapa.tutkinnonosa", - { tutkinnonOsaViiteId: tutkinnonosa.id, versio: "" } - ); - }; - - }) - .directive("koodistoSelect", function(Koodisto) { - return { - template: - '', - restrict: "E", - scope: { - valmis: "=", - filtteri: "=", - tyyppi: "@", - ylarelaatioTyyppi: "=?", - payload: "=?", - nimifilter: "=?", - }, - controller: function($scope) { - $scope.tyyppi = $scope.tyyppi; - $scope.ylarelaatioTyyppi = $scope.ylarelaatiotyyppi || ""; - - if (!$scope.valmis) { - console.error("koodisto-select: valmis-callback puuttuu"); - return; - } else if (_.indexOf(Koodisto.vaihtoehdot, $scope.tyyppi) === -1) { - console.error( - "koodisto-select:", - $scope.tyyppi, - "ei vastaa mitään mitään vaihtoehtoa:", - Koodisto.vaihtoehdot - ); - return; - } - }, - link: function($scope: any, el, attrs: any) { - attrs.$observe("ylarelaatiotyyppi", function() { - $scope.ylarelaatioTyyppi = attrs.ylarelaatiotyyppi || ""; - }); - - $scope.activate = function() { - Koodisto.modaali($scope.valmis, { - tyyppi: function() { - return $scope.tyyppi; - }, - ylarelaatioTyyppi: function() { - return $scope.ylarelaatioTyyppi; - }, - nimifilter: function() { - return $scope.nimifilter; - } - }, - angular.noop, - $scope.filtteri, - $scope.payload, - )(); - }; - } - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/langvalidator.test.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/langvalidator.test.ts deleted file mode 100644 index b72f40fa6e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/langvalidator.test.ts +++ /dev/null @@ -1,84 +0,0 @@ -import _ from "lodash"; -import { - setInput, - compiled, - getComponent, - inject, - getOfType, - testDirective, - testModule, - mockApp -} from "../../testutils"; - -describe("langvalidator", () => { - let $rootScope: any; - let $timeout: any; - - beforeEach(async () => { - const result = mockApp() - .service("PerusteprojektiTiedotService", () => { - return { - async getPeruste() { - return { - kielet: ["fi", "sv"] - }; - } - }; - }); - $rootScope = await getComponent("$rootScope"); - $timeout = await getComponent("$timeout"); - return result; - }); - - test("langvalidator", async () => { - let [el, $scope] = await compiled(``); - - $scope.kentta = { - fi: "hello" - }; - - $timeout(() => { - expect(el.html()).toMatch(/Ruotsi/) - expect(el.html()).not.toMatch(/Suomi/); - }); - - $scope.kentta = { - fi: "hello", - sv: "hello" - }; - - $timeout(() => { - expect(el.html()).not.toMatch(/puutteellinen-kieli/); - }); - - $scope.kentta = { }; - $timeout(() => { - expect(el.html()).not.toMatch(/Ruotsi/); - expect(el.html()).not.toMatch(/Suomi/); - }); - }); - - test("multifield langvalidator", async () => { - let [el, $scope] = await compiled(``); - $scope.kentta = [{ - fi: "hello", - }, { - sv: "world", - }]; - - $timeout(() => { - expect(el.html()).toMatch(/Ruotsi/); - expect(el.html()).toMatch(/Suomi/); - }); - - $scope.kentta = [null, { - sv: "world", - }]; - - $timeout(() => { - expect(el.html()).toMatch(/Suomi/); - }); - }); - -}); - diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/langvalidator.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/langvalidator.ts deleted file mode 100644 index 4b1c67572a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/langvalidator.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import _ from "lodash"; - -export const LangValidator = (Kaanna, $compile, PerusteprojektiTiedotService, nakyvyyslinkkiService) => { - return { - scope: { - kentta: "=" - }, - restrict: "E", - template: ` - - - - - - `, - controller($scope, $timeout, localStorageService) { - $scope.virheet = []; - $scope.nayta = nakyvyyslinkkiService.getNakyvyys(localStorageService); - - async function updateKaannosvirheet() { - if (!$scope.nayta) { - return; - } - - const peruste = (await PerusteprojektiTiedotService).getPeruste(); - if (!peruste || !_.isArray(peruste.kielet)) { - return; - } - - $scope.virheet = _(_.isArray($scope.kentta) ? $scope.kentta : [$scope.kentta]) - .filter(_.isObject) - .map((obj: any) => { - return _(peruste.kielet) - .filter((kieli) => !obj[kieli]) - .value(); - }) - .filter(langs => _.size(langs) > 0 && _.size(langs) < _.size(peruste.kielet)) - .flatten() - .uniq() - .value(); - - $timeout(() => $scope.$apply()); - } - - $scope.$watch("kentta", updateKaannosvirheet); - $scope.$on("naytaKaannosvirheet", (ev, val) => { - $scope.nayta = val; - if (val) { - updateKaannosvirheet(); - } - }); - } - }; -}; diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/multiinput.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/multiinput.ts deleted file mode 100644 index 1efbc02a25..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/multiinput.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").directive("mlInput", function($translate, YleinenData, $timeout) { - return { - restrict: "E", - scope: { - mlData: "=", - mlAdditionalLanguages: "=", - type: "@", - required: "=" - }, - template: require("views/multiinput.html"), - replace: true, - transclude: true, - controller: function($scope) { - $scope.type = $scope.type || "text"; - $scope.langs = _(_.values(YleinenData.kielet)) - .union($scope.mlAdditionalLanguages || []) - .sort() - .value(); - if ($scope.mlData) { - _.forEach($scope.langs, function(lang) { - $scope.mlData[lang] = $scope.mlData[lang] || ""; - }); - } - - $scope.activeLang = $translate.use() || $translate.preferredLanguage(); - $scope.kielivalintaAuki = false; - - $scope.vaihdaKieli = function(uusiKieli) { - $scope.kielivalintaAuki = false; - $scope.activeLang = uusiKieli; - }; - }, - link: function(scope: any, element: any) { - if (!scope.mlData) { - console.warn("You must set ml-data for ml-input."); - } else if (!_.isObject(scope.mlData)) { - console.warn("ml-data must be an object"); - } - if (scope.$parent.inputElId) { - $timeout(function() { - element.find("input, textarea").attr("id", scope.$parent.inputElId); - }); - } - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokattavaosio.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/muokattavaosio.ts deleted file mode 100644 index fcf261f7e7..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokattavaosio.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .directive("muokattavaOsio", function() { - return { - template: require("views/directives/muokattavaosio.html"), - restrict: "A", - scope: { - model: "=muokattavaOsio", - type: "@", - path: "@?", - oppiaine: "=?", - vuosiluokka: "=?", - poistoCb: "=?" - }, - controller: "MuokattavaOsioController", - link: function(scope: any, element: any, attrs: any) { - scope.cantremove = !_.isEmpty(attrs.static); - } - }; - }) - .controller("MuokattavaOsioController", function( - $scope, - YleinenData, - Utils, - $state, - OsanMuokkausHelper, - $stateParams, - $log - ) { - $scope.valitseKieli = _.bind(YleinenData.valitseKieli, YleinenData); - $scope.hasContent = false; - $scope.poistoCb = $scope.poistoCb || angular.noop; - - function update() { - $scope.realModel = $scope.path ? $scope.model[$scope.path] : $scope.model; - $scope.hasContent = - _.isArray($scope.realModel) || - ($scope.realModel && _.has($scope.realModel, "otsikko")) || - $scope.type === "tavoitteet"; - if (_.isArray($scope.model[$scope.path]) && _.isEmpty($scope.model[$scope.path])) { - $scope.realModel.$isCollapsed = true; - } - } - update(); - $scope.$watch("model", update, true); - - $scope.edit = function() { - OsanMuokkausHelper.setup($scope.model, $scope.path, $scope.oppiaine, function() { - $state.go("root.perusteprojekti.suoritustapa.muokkaus", { - suoritustapa: $stateParams.suoritustapa, - osanTyyppi: $scope.type, - osanId: $scope.realModel.id - }); - }); - }; - - $scope.poista = function() { - $scope.poistoCb($scope.path); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/aihekokonaisuudet.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/aihekokonaisuudet.ts deleted file mode 100644 index c5c5aa9722..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/aihekokonaisuudet.ts +++ /dev/null @@ -1,351 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL, Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - // ------------------------------------------------------------------------------------------------------------------ - // LUKIO Aihekokonaisuudet - // ------------------------------------------------------------------------------------------------------------------ - - .directive("lukioMuokkausAihekokonaisuudet", function() { - return { - template: require("views/directives/lukiokoulutus/aihekokonaisuudet.html"), - restrict: "E", - scope: { - model: "=aihekokonaisuudet" - }, - controller: "LukioAihekokonaisuudetController" - }; - }) - .controller("LukioAihekokonaisuudetController", function( - $scope, - LukioAihekokonaisuudetService, - LukiokoulutusService, - Lukitus, - PerusteProjektiSivunavi, - VersionHelper, - Notifikaatiot, - Kommentit, - KommentitBySuoritustapa, - Editointikontrollit, - Varmistusdialogi, - $rootScope, - $state, - $filter, - $stateParams - ) { - $scope.versiot = {}; - $scope.osanTyyppi = $stateParams.osanTyyppi; - - var setEditMode = function() { - $scope.editEnabled = true; - $scope.editMode = true; - PerusteProjektiSivunavi.setVisible(false); - }; - - Editointikontrollit.registerCallback({ - edit: function() { - Lukitus.lukitseLukioAihekokonaisuudet().then(function() { - setEditMode(); - }); - }, - save: function(kommentti) { - $rootScope.$broadcast("notifyCKEditor"); - $scope.aihekokonaisuudet.metadata = { kommentti: kommentti }; - LukioAihekokonaisuudetService.saveAihekokonaisuudetYleiskuvaus( - $scope.aihekokonaisuudet - ).then(function() { - Lukitus.vapauta().then(function() { - init(); - }); - }); - }, - cancel: function() { - $scope.cancel(); - }, - validate: function() { - return $filter("kaanna")($scope.aihekokonaisuudet.otsikko) != ""; - }, - notify: function() {} - }); - - function init() { - Kommentit.haeKommentit(KommentitBySuoritustapa, { - id: $stateParams.perusteProjektiId, - suoritustapa: $scope.osanTyyppi - }); - - var versio = $stateParams.versio ? $stateParams.versio.replace(/\//g, "") : null; - if (versio) { - VersionHelper.getLukioAihekokonaisuudetVersions($scope.versiot, {}, true, function(versiot) { - var revNumber = VersionHelper.select($scope.versiot, versio); - LukioAihekokonaisuudetService.getAihekokonaisuudetYleiskuvaus(revNumber).then(function( - aihekokonaisuudet - ) { - $scope.aihekokonaisuudet = aihekokonaisuudet; - }); - }); - } else { - $scope.haeVersiot(true); - LukioAihekokonaisuudetService.getAihekokonaisuudetYleiskuvaus().then(function(aihekokonaisuudet) { - $scope.aihekokonaisuudet = aihekokonaisuudet; - $scope.haeVersiot(true); - }); - } - $scope.editEnabled = false; - $scope.editMode = false; - PerusteProjektiSivunavi.setVisible(true); - } - - $scope.haeVersiot = function(force, cb) { - VersionHelper.getLukioAihekokonaisuudetVersions($scope.versiot, {}, force, cb); - }; - - init(); - $scope.edit = function() { - if (_.isEmpty($scope.aihekokonaisuudet.otsikko)) { - $scope.aihekokonaisuudet.otsikko = { fi: "Aihekokonaisuudet" }; - } - - Editointikontrollit.startEditing(); - }; - - $scope.gotoEditAihekokonaisuus = function(aihekokonaisuusId) { - $state.go("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanTyyppi: LukiokoulutusService.AIHEKOKONAISUUDET, - osanId: aihekokonaisuusId, - tabId: 0, - editEnabled: true - }); - }; - - $scope.gotoViewAihekokonaisuus = function(aihekokonaisuusId) { - $state.go("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanTyyppi: LukiokoulutusService.AIHEKOKONAISUUDET, - osanId: aihekokonaisuusId, - tabId: 0, - editEnabled: false - }); - }; - - $scope.poista = function(aihekokonaisuusId) { - Varmistusdialogi.dialogi({ - otsikko: "poistetaanko-aihekokonaisuus", - successCb: function() { - LukioAihekokonaisuudetService.deleteAihekokonaisuus(aihekokonaisuusId).then(function() { - $state.go( - "root.perusteprojekti.suoritustapa.lukioosat", - { osanTyyppi: LukiokoulutusService.AIHEKOKONAISUUDET }, - { reload: true } - ); - }); - } - })(); - }; - - $scope.cancel = function() { - Lukitus.vapauta().then(function() { - init(); - }); - }; - - $scope.vaihdaVersio = function() { - $scope.versiot.hasChanged = true; - VersionHelper.setUrl($scope.versiot); - }; - - $scope.revertCb = function(response) { - Lukitus.vapauta(); - $scope.haeVersiot(true, function() { - VersionHelper.setUrl($scope.versiot); - }); - Notifikaatiot.onnistui("aihekokonaisuudet-palautettu"); - }; - }) - .directive("lukioMuokkausAihekokonaisuus", function() { - return { - template: require("views/directives/lukiokoulutus/aihekokonaisuus.html"), - restrict: "E", - controller: "LukioAihekokonaisuusController" - }; - }) - .controller("LukioAihekokonaisuusController", function( - $scope, - $state, - $stateParams, - Lukitus, - LukioAihekokonaisuudetService, - PerusteProjektiSivunavi, - LukiokoulutusService, - Editointikontrollit, - Varmistusdialogi, - VersionHelper, - Notifikaatiot, - $rootScope, - $filter - ) { - var setEditMode = function() { - $scope.editEnabled = true; - PerusteProjektiSivunavi.setVisible(false); - }; - - Editointikontrollit.registerCallback({ - edit: function() { - if (!$scope.isNew) { - Lukitus.lukitseLukioAihekokonaisuus($scope.aihekokonaisuus.id).then(function() { - setEditMode(); - }); - } - }, - save: function(kommentti) { - $rootScope.$broadcast("notifyCKEditor"); - $scope.aihekokonaisuus.metadata = { kommentti: kommentti }; - - if ($scope.isNew) { - LukioAihekokonaisuudetService.saveAihekokonaisuus($scope.aihekokonaisuus).then(function( - aihekokonaisuus - ) { - Lukitus.vapauta(); - if ($stateParams.editEnabled) { - init(); - } else { - $state.go("root.perusteprojekti.suoritustapa.lukioosaalue", { - osanTyyppi: LukiokoulutusService.AIHEKOKONAISUUDET, - osanId: aihekokonaisuus.id, - tabId: 0, - editEnabled: false - }); - } - }); - } else { - LukioAihekokonaisuudetService.updateAihekokonaisuus($scope.aihekokonaisuus).then(function() { - Lukitus.vapauta(); - init(); - }); - } - }, - cancel: function() { - Lukitus.vapauta(); - $scope.cancel(); - }, - validate: function() { - return $filter("kaanna")($scope.aihekokonaisuus.otsikko) != ""; - }, - notify: function() {} - }); - - $scope.haeVersiot = function(force, cb) { - VersionHelper.getLukioAihekokonaisuusVersions($scope.versiot, { id: $scope.aihekokonaisuus.id }, force, cb); - }; - - $scope.vaihdaVersio = function() { - $scope.versiot.hasChanged = true; - VersionHelper.setUrl($scope.versiot); - }; - - $scope.revertCb = function(response) { - Lukitus.vapauta(); - $scope.haeVersiot(true, function() { - VersionHelper.setUrl($scope.versiot); - }); - Notifikaatiot.onnistui("aihekokonaisuus-palautettu"); - }; - - function init() { - var versio = $stateParams.versio ? $stateParams.versio.replace(/\//g, "") : null; - PerusteProjektiSivunavi.refresh(); - - if (versio) { - VersionHelper.getLukioAihekokonaisuusVersions( - $scope.versiot, - { id: $stateParams.osanId }, - true, - function(versiot) { - var revNumber = VersionHelper.select($scope.versiot, versio); - $stateParams.versioId = revNumber; - LukiokoulutusService.getOsa($stateParams).then(function(aihekokonaisuus) { - $scope.aihekokonaisuus = aihekokonaisuus; - }); - } - ); - } else { - LukiokoulutusService.getOsa($stateParams).then(function(aihekokonaisuus) { - $scope.aihekokonaisuus = aihekokonaisuus; - $scope.haeVersiot(true); - }); - } - - $scope.editEnabled = false; - PerusteProjektiSivunavi.setVisible(true); - } - - $scope.isNew = false; - $scope.editEnabled = false; - $scope.versiot = { latest: true }; - $scope.aihekokonaisuus = {}; - - if ($stateParams.osanId === "uusi") { - $scope.editEnabled = true; - $scope.isNew = true; - PerusteProjektiSivunavi.setVisible(false); - Editointikontrollit.startEditing(); - } else { - init(); - if ($stateParams.editEnabled === "true") { - $scope.editEnabled = true; - PerusteProjektiSivunavi.setVisible(false); - Editointikontrollit.startEditing(); - } else { - $scope.editEnabled = false; - } - } - - $scope.edit = function() { - Editointikontrollit.startEditing(); - }; - - $scope.cancel = function() { - if ($scope.isNew || $stateParams.editEnabled) { - $scope.back(); - } else { - init(); - } - }; - - $scope.back = function() { - $state.go("root.perusteprojekti.suoritustapa.lukioosat", { - osanTyyppi: LukiokoulutusService.AIHEKOKONAISUUDET - }); - }; - - $scope.delete = function() { - Varmistusdialogi.dialogi({ - otsikko: "poistetaanko-aihekokonaisuus", - successCb: function() { - LukioAihekokonaisuudetService.deleteAihekokonaisuus($scope.aihekokonaisuus.id).then(function() { - $state.go( - "root.perusteprojekti.suoritustapa.lukioosat", - { osanTyyppi: LukiokoulutusService.AIHEKOKONAISUUDET }, - { reload: true } - ); - }); - } - })(); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/kenttalistaus.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/kenttalistaus.ts deleted file mode 100644 index 46fad844a3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/kenttalistaus.ts +++ /dev/null @@ -1,394 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL, Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - .directive("kenttalistaus", ($q, MuokkausUtils, $timeout, FieldSplitter) => { - return { - template: require("views/partials/muokkaus/kenttalistaus.html"), - restrict: "E", - transclude: true, - scope: { - fields: "=", - objectPromise: "=", - editEnabled: "=", - mode: "@?", - hideEmptyPlaceholder: "@?", - emptyplaceholder: "@", - emptyplaceholderedit: "@" - }, - link: function(scope, element) { - scope.updateContentTip = function() { - $timeout(function() { - scope.noContent = element.find("ul.muokkaus").children().length === 0; - }); - }; - scope.updateContentTip(); - scope.$watch("editEnabled", function() { - scope.updateContentTip(); - }); - scope.$watch( - "fields", - function() { - scope.updateContentTip(); - }, - true - ); - }, - controller: function($scope) { - let model; - $scope.noContent = false; - $scope.expandedFields = $scope.fields; - - $scope.removeField = function(fieldToRemove) { - const splitfield = FieldSplitter.process(fieldToRemove); - if (splitfield.isMulti()) { - splitfield.remove(model); - } else { - if (_.isFunction(fieldToRemove.remove)) { - fieldToRemove.remove(); - } else { - MuokkausUtils.nestedSet(model, fieldToRemove.path, ".", null); - } - fieldToRemove.visible = false; - fieldToRemove.$added = false; - } - setInnerObjectPromise(); - }; - - $scope.getClass = FieldSplitter.getClass; - - $scope.hasEditableTitle = function(field) { - return _.has(field, "titleplaceholder"); - }; - - function setInnerObjectPromise() { - if ($scope.objectPromise) { - $scope.innerObjectPromise = $scope.objectPromise.then(function(object) { - splitFields(object); - model = object; - return object; - }); - } - } - - $scope.$watch("objectPromise", setInnerObjectPromise); - $scope.$on("osafield:update", setInnerObjectPromise); - - if ($scope.objectPromise) { - $scope.innerObjectPromise = $scope.objectPromise.then(function() { - setInnerObjectPromise(); - }); - } - - function splitFields(object) { - $scope.expandedFields = []; - _.each($scope.fields, function(field) { - const splitfield = FieldSplitter.process(field); - if (splitfield.isMulti() && splitfield.needsSplit()) { - // Expand array to individual fields - splitfield.each(object, function(item, index) { - if (!item) { - return; - } - const newfield = angular.copy(field); - newfield.path = splitfield.getPath(index); - newfield.localeKey = item[field.localeKey]; - newfield.originalLocaleKey = field.localeKey; - newfield.visible = MuokkausUtils.hasValue(object, newfield.path); - if (field.isolateEdit && index === field.$setEditable) { - newfield.$editing = true; - delete field.$setEditable; - } - $scope.expandedFields.push(newfield); - }); - } else { - field.inMenu = field.path !== "nimi" && field.path !== "koodiUri"; - if (field.visibleFn) { - field.visible = field.visibleFn(); - } else { - field.visible = field.divider - ? false - : field.$added || field.mandatory || MuokkausUtils.hasValue(object, field.path); - } - $scope.expandedFields.push(field); - } - }); - $scope.updateContentTip(); - } - } - }; - }) - .service("FieldSplitter", function() { - function getCssClass(path) { - return path - .replace(/\[/g, "") - .replace(/]/g, "") - .replace(/\./g, ""); - } - - function SplitField(data) { - this.original = data; - this.parts = []; - } - - SplitField.prototype.split = function() { - if (!this.original.path) { - return; - } - this.parts = this.original.path.split("["); - const index = this.original.path.match(/\[(\d+)]/); - this.index = index ? index[1] : null; - }; - - SplitField.prototype.isMulti = function() { - return this.parts.length === 2; - }; - - SplitField.prototype.needsSplit = function() { - return this.index === null; - }; - - SplitField.prototype.each = function(obj, cb) { - return _.each(this.getObject(obj), cb); - }; - - SplitField.prototype.getPath = function(index) { - return this.parts[0] + "[" + index + this.parts[1]; - }; - - SplitField.prototype.getObject = function(obj, create) { - if (create && !obj[this.parts[0]]) { - obj[this.parts[0]] = []; - } - return !obj ? null : obj[this.parts[0]]; - }; - - SplitField.prototype.addArrayItem = function(obj) { - const newItem = _.isFunction(this.original.empty) - ? this.original.empty() - : { otsikko: { fi: "" }, teksti: { fi: "" } }; - const object = this.getObject(obj, true); - object.push(newItem); - return object.length - 1; - }; - - SplitField.prototype.remove = function(obj) { - const index = parseInt(this.parts[1], 10); - obj[this.parts[0]].splice(index, 1); - }; - - SplitField.prototype.getClass = function(index) { - return getCssClass(this.getPath(index)); - }; - - this.process = function(field) { - const obj = new SplitField(field); - obj.split(); - return obj; - }; - - this.getClass = function(field) { - return getCssClass(field.path); - }; - }) - .factory("ArviointiHelper", function() { - const remove = function(arr, str) { - const index = _.findIndex(arr, { path: str }); - if (index >= 0) { - arr.splice(index, 1); - } - }; - - /** - * Arviointi voi olla tekstinä tai taulukkona (mutta ei kumpanakin). - * createArviointi hanskaa mitä näytetään kenttälistauksessa ja "lisää osio"-menussa - */ - function createArviointi() { - const TAULUKKO_PATH = "arviointi.arvioinninKohdealueet"; - const TEKSTI_PATH = "arviointi.lisatiedot"; - const self: any = {}; - self.obj = {}; - - self.hasTeksti = function() { - return self.obj.teksti && self.obj.teksti.visible; - }; - - self.hasTaulukko = function() { - return self.obj.taulukko && self.obj.taulukko.visible; - }; - - self.initFromFields = function(fields) { - const obj = { - teksti: null, - taulukko: null - }; - - _.each(fields, function(field) { - if (field.path === TAULUKKO_PATH) { - obj.taulukko = field; - } else if (field.path === TEKSTI_PATH) { - obj.teksti = field; - } - }); - - if (self.hasTeksti()) { - obj.taulukko.visible = false; - } - - self.obj = obj; - return self.obj; - }; - - self.setMenu = function(menu) { - if (self.exists()) { - remove(menu, TAULUKKO_PATH); - remove(menu, TEKSTI_PATH); - } - }; - - self.exists = function() { - return self.hasTeksti() || self.hasTaulukko(); - }; - - return self; - } - - return { - create: createArviointi - }; - }) - .factory("AmmattitaitoHelper", function() { - const remove = function(arr, str) { - const index = _.findIndex(arr, { path: str }); - if (index >= 0) { - arr.splice(index, 1); - } - }; - - function createAmmattitaito() { - const TAULUKKO_PATH = "ammattitaito.ammattitaidonKohdealueet"; - const TEKSTI_PATH = "ammattitaito.lisatiedot"; - const self: any = {}; - self.obj = {}; - - self.hasTeksti = function() { - return self.obj.teksti && self.obj.teksti.visible; - }; - - self.hasTaulukko = function() { - return self.obj.taulukko && self.obj.taulukko.visible; - }; - - self.initFromFields = function(fields) { - const obj = { teksti: null, taulukko: null }; - _.each(fields, function(field) { - if (field.path === TAULUKKO_PATH) { - obj.taulukko = field; - } else if (field.path === TEKSTI_PATH) { - obj.teksti = field; - } - }); - if (self.hasTeksti()) { - obj.taulukko.visible = false; - } - self.obj = obj; - return self.obj; - }; - - self.setMenu = function(menu) { - if (self.exists()) { - remove(menu, TAULUKKO_PATH); - remove(menu, TEKSTI_PATH); - } - }; - - self.exists = function() { - return self.hasTeksti() || self.hasTaulukko(); - }; - - return self; - } - - return { - create: createAmmattitaito - }; - }) - .factory("ValmaarviointiHelper", function() { - const remove = function(arr, str) { - const index = _.findIndex(arr, { path: str }); - if (index >= 0) { - arr.splice(index, 1); - } - }; - - function createValmaarviointi() { - const TAULUKKO_PATH = "valmaarviointi.ammattitaidonKohdealueet"; - const TEKSTI_PATH = "valmaarviointi.lisatiedot"; - const self: any = {}; - self.obj = {}; - - self.hasTeksti = function() { - return self.obj.teksti && self.obj.teksti.visible; - }; - - self.hasTaulukko = function() { - return self.obj.taulukko && self.obj.taulukko.visible; - }; - - self.initFromFields = function(fields) { - const obj = { - teksti: null, - taulukko: null - }; - - _.each(fields, function(field) { - if (field.path === TAULUKKO_PATH) { - obj.taulukko = field; - } else if (field.path === TEKSTI_PATH) { - obj.teksti = field; - } - }); - - if (self.hasTeksti()) { - obj.taulukko.visible = false; - } - self.obj = obj; - - return self.obj; - }; - - self.setMenu = function(menu) { - if (self.exists()) { - remove(menu, TAULUKKO_PATH); - remove(menu, TEKSTI_PATH); - } - }; - - self.exists = function() { - return self.hasTeksti() || self.hasTaulukko(); - }; - - return self; - } - - return { - create: createValmaarviointi - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/leikelauta.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/leikelauta.ts deleted file mode 100644 index 893a0f7584..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/leikelauta.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").directive("leikelauta", TutkinnonOsaLeikelautaService => { - return { - template: require("views/partials/muokkaus/leikelauta.html"), - restrict: "E", - transclude: true, - scope: { - isOpen: "=" - }, - link: function(scope, element, attrs) { - scope["leikelautaSortableOptions"] = TutkinnonOsaLeikelautaService.createLeikelautaSortable(scope, { - handle: ".handle", - connectWith: - ".container-items, .container-items-arviointi, .container-items-kohteet," + - " .container-items-leikelauta, .container-items-ammattitaito, .container-items-vaatimuksenKohteet", - cursor: "move", - cursorAt: { top: 10, left: 10 }, - tolerance: "pointer", - forceHelperSize: true, - placeholder: "sortable-placeholder", - forcePlaceholderSize: true, - opacity: ".7" - }); - scope["poistaLeikelaudasta"] = TutkinnonOsaLeikelautaService.poistaLeikelaudasta; - scope["leikelauta"] = TutkinnonOsaLeikelautaService.initLeikelauta(); - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/lukiokoulutusyleisettavoitteet.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/lukiokoulutusyleisettavoitteet.ts deleted file mode 100644 index 41f0b782d9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/lukiokoulutusyleisettavoitteet.ts +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular - .module("eperusteApp") - //LUKIO Opetuksen yleiset tavoitteet - .directive("lukioMuokkausTavoitteet", function() { - return { - template: require("views/directives/lukiokoulutus/tavoitteet.html"), - restrict: "E", - controller: "LukioTavoitteetController" - }; - }) - .controller("LukioTavoitteetController", function( - $scope, - LukioYleisetTavoitteetService, - Lukitus, - PerusteProjektiSivunavi, - LukiokoulutusService, - virheService, - Notifikaatiot, - Editointikontrollit, - VersionHelper, - Kommentit, - KommentitBySuoritustapa, - $rootScope, - $filter, - $stateParams - ) { - $scope.versiot = {}; - $scope.perusteId = LukiokoulutusService.getPerusteId(); - $scope.osanTyyppi = $stateParams.osanTyyppi; - - var setEditMode = function() { - PerusteProjektiSivunavi.setVisible(false); - $scope.editEnabled = true; - $scope.editMode = true; - }; - - Editointikontrollit.registerCallback({ - edit: function() { - Lukitus.lukitseLukioYleisettavoitteet().then(function() { - setEditMode(); - }); - }, - save: function(kommentti) { - $rootScope.$broadcast("notifyCKEditor"); - $scope.yleisetTavoitteet.metadata = { kommentti: kommentti }; - LukioYleisetTavoitteetService.updateYleistTavoitteet($scope.yleisetTavoitteet).then(function() { - Lukitus.vapauta(); - init(); - }); - }, - cancel: function() { - Lukitus.vapauta(); - $scope.cancel(); - }, - validate: function() { - return $filter("kaanna")($scope.yleisetTavoitteet.otsikko) != ""; - }, - notify: function() {} - }); - - $scope.haeVersiot = function(force, cb) { - VersionHelper.getLukioYleisetTavoitteetVersions( - $scope.versiot, - { id: LukiokoulutusService.getPerusteId() }, - force, - cb - ); - }; - - function init() { - Kommentit.haeKommentit(KommentitBySuoritustapa, { - id: $stateParams.perusteProjektiId, - suoritustapa: $scope.osanTyyppi - }); - var versio = $stateParams.versio ? $stateParams.versio.replace(/\//g, "") : null; - if (versio) { - VersionHelper.getLukioYleisetTavoitteetVersions( - $scope.versiot, - { id: LukiokoulutusService.getPerusteId() }, - true, - function(versiot) { - var revNumber = VersionHelper.select($scope.versiot, versio); - LukioYleisetTavoitteetService.getYleisetTavoitteet(revNumber).then(function(yleisetTavoitteet) { - $scope.yleisetTavoitteet = yleisetTavoitteet; - }); - } - ); - } else { - $scope.haeVersiot(true); - LukioYleisetTavoitteetService.getYleisetTavoitteet().then(function(yleisetTavoitteet) { - $scope.yleisetTavoitteet = yleisetTavoitteet; - }); - } - - $scope.editEnabled = false; - $scope.editMode = false; - PerusteProjektiSivunavi.setVisible(true); - } - - init(); - $scope.edit = function() { - if (_.isEmpty($scope.yleisetTavoitteet.otsikko)) { - $scope.yleisetTavoitteet.otsikko = { fi: "Opetuksen yleiset tavoitteet" }; - } - Editointikontrollit.startEditing(); - }; - - $scope.cancel = function() { - init(); - }; - - $scope.vaihdaVersio = function() { - $scope.versiot.hasChanged = true; - VersionHelper.setUrl($scope.versiot); - }; - - $scope.revertCb = function(response) { - Lukitus.vapauta(); - $scope.haeVersiot(true, function() { - VersionHelper.setUrl($scope.versiot); - }); - Notifikaatiot.onnistui("lukiokoulutusyleisettavoitteet-palautettu"); - }; - }); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/lukko.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/lukko.ts deleted file mode 100644 index bfbe160935..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/lukko.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -import * as angular from "angular"; -import _ from "lodash"; - -angular.module("eperusteApp").directive("lukko", function() { - return { - template: - '
    ', - restrict: "AE", - scope: { - tip: "=" - } - }; -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/muokattavakentta.test.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/muokattavakentta.test.ts deleted file mode 100644 index 70663aa090..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/muokattavakentta.test.ts +++ /dev/null @@ -1,52 +0,0 @@ -import _ from "lodash"; -import { - setInput, - compiled, - getComponent, - inject, - getOfType, - testDirective, - testModule, - mockApp -} from "../../../testutils"; - -describe("slocalized", () => { - let Kieli: any; - - beforeEach(async () => { - mockApp(); - Kieli = await getComponent("Kieli"); - }); - - test("Emptying normal input", async () => { - const [el, $scope] = await compiled(``); - setInput(el, "moro"); - expect(el.html()).toEqual("moro"); - expect($scope.kentta).toEqual("moro"); - setInput(el, ""); - expect(el.html()).toEqual(""); - expect($scope.kentta).toEqual(""); - }); - - test("Tekstin editointi ja tyhjennys", async () => { - const [el, $scope] = await compiled(``); - expect($scope.kentta).toBeUndefined(); - setInput(el, "moro"); - expect($scope.kentta).toEqual({ fi: "moro" }); - setInput(el, "mor"); - expect($scope.kentta).toEqual({ fi: "mor" }); - setInput(el, ""); - expect($scope.kentta).toEqual({ fi: "" }); - }); - - test("Kielen vaihdos editoinnin aikana", async () => { - const [el, $scope] = await compiled(``); - setInput(el, "moro"); - Kieli.setSisaltokieli("en"); - setInput(el, "hello"); - Kieli.setSisaltokieli("fi"); - Kieli.setSisaltokieli("sv"); - setInput(el, null); - expect($scope.kentta).toEqual({ fi: "moro", en: "hello", sv: "" }); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/muokattavakentta.ts b/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/muokattavakentta.ts deleted file mode 100644 index fc92ff02a0..0000000000 --- a/eperusteet/eperusteet-app/yo/app/scripts/directives/muokkaus/muokattavakentta.ts +++ /dev/null @@ -1,409 +0,0 @@ -/* -* Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -* -* This program is free software: Licensed under the EUPL, Version 1.1 or - as -* soon as they will be approved by the European Commission - subsequent versions -* of the EUPL (the "Licence"); -* -* You may not use this work except in compliance with the Licence. -* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* European Union Public Licence for more details. -*/ - -import _ from "lodash"; -import * as angular from "angular"; - -angular - .module("eperusteApp") - .directive("muokkauskenttaRaamit", Utils => { - return { - template: require("views/partials/muokkaus/muokattavaKentta.html"), - restrict: "A", - transclude: true, - scope: { - model: "=", - piilotaOtsikko: "@?", - field: "=" - }, - link: (scope, element, attrs) => { - scope.otsikko = _.isString(scope.model) ? "muokkaus-" + scope.model + "-header" : scope.model; - scope.hasModel = !_.isString(scope.model); - scope.canCollapse = attrs.collapsible || false; - scope.collapsed = false; - scope.isEmpty = model => { - return !Utils.hasLocalizedText(model); - }; - - element.addClass("list-group-item "); - element.attr("ng-class", ""); - - scope.$watch("field.$editing", value => { - if (value) { - scope.collapsed = false; - } - }); - } - }; - }) - .directive("muokattavaKentta", ($compile, $rootScope, Editointikontrollit, $q, $timeout) => { - return { - restrict: "E", - replace: true, - scope: { - field: "=fieldInfo", - objectReady: "=objectPromise", - removeField: "&?", - editEnabled: "=" - }, - controller: ($scope, YleinenData, MuokkausUtils, Varmistusdialogi, Utils) => { - $scope.valitseKieli = _.bind(YleinenData.valitseKieli, YleinenData); - - if ($scope.objectReady) { - $scope.$watch("objectReady", newObjectReadyPromise => { - newObjectReadyPromise.then(newObject => { - $scope.object = newObject; - }); - }); - } - - function poistaOsio(value) { - if (angular.isString(value)) { - MuokkausUtils.nestedSet($scope.object, $scope.field.path, ".", ""); - } else { - MuokkausUtils.nestedSet($scope.object, $scope.field.path, ".", undefined); - } - if (!$scope.mandatory) { - $scope.removeField({ fieldToRemove: $scope.field }); - } - } - - $scope.suljeOsio = () => { - // Jos kentässä on dataa, kysytään varmistus. - const getValue = MuokkausUtils.nestedGet($scope.object, $scope.field.path, "."); - if (!_.isEmpty(getValue)) { - Varmistusdialogi.dialogi({ - otsikko: "varmista-osion-poisto-otsikko", - teksti: "varmista-osion-poisto-teksti", - primaryBtn: "poista", - successCb: () => { - poistaOsio(getValue); - } - })(); - } else { - poistaOsio(getValue); - } - }; - - function getTitlePath() { - // FIXME: ? - return ( - (_ as any).initial($scope.field.path.split("."), 1).join(".") + - "." + - $scope.field.originalLocaleKey - ); - } - - $scope.editOsio = () => { - // Assumed that field has a title at upper level in hierarchy - $scope.titlePath = getTitlePath(); - $scope.originalContent = angular.copy( - MuokkausUtils.nestedGet($scope.object, $scope.field.path, ".") - ); - $scope.originalTitle = angular.copy(MuokkausUtils.nestedGet($scope.object, $scope.titlePath, ".")); - $scope.field.$editing = true; - }; - - $scope.okEdit = () => { - $scope.titlePath = $scope.titlePath || getTitlePath(); - const title = MuokkausUtils.nestedGet($scope.object, $scope.titlePath, "."); - if (Utils.hasLocalizedText(title)) { - // Force model update - $rootScope.$broadcast("notifyCKEditor"); - - $scope.originalContent = null; - $scope.originalTitle = null; - $scope.field.$editing = false; - } - }; - - $scope.cancelEdit = () => { - if (!$scope.originalContent) { - // New, can delete - poistaOsio(MuokkausUtils.nestedGet($scope.object, $scope.field.path, ".")); - } else { - MuokkausUtils.nestedSet($scope.object, $scope.field.path, ".", $scope.originalContent, true); - MuokkausUtils.nestedSet($scope.object, $scope.titlePath, ".", $scope.originalTitle, true); - $scope.field.$editing = false; - } - }; - }, - link: (scope, element) => { - const typeParams = scope.field.type.split("."); - - $q - .all({ - object: scope.objectReady, - editMode: Editointikontrollit.getEditModePromise() - }) - .then(values => { - scope.object = values.object; - // TODO fix bug, vuosiluokkakokonaisuus: editMode is false on first edit - scope.editMode = values.editMode; - - if (!scope.field.mandatory) { - const contentFrame = angular - .element("") - .append(getElementContent(typeParams[0])); - - populateElementContent(contentFrame); - } else { - populateElementContent(getElementContent(typeParams[0])); - } - }); - - const ELEMENT_MAP = { - "editor-header": ["addEditorAttributesFor", "

    "], - "text-input": ["addInputAttributesFor", "", { "editointi-kontrolli": "" }], - "input-area": ["addInputAttributesFor", " - - - - - - - - -
    - -
    -

    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/kohdealueet.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/kohdealueet.html deleted file mode 100644 index b8a9f2aef8..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/kohdealueet.html +++ /dev/null @@ -1,5 +0,0 @@ -
    -
    -

    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/muokkausinfo.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/muokkausinfo.html deleted file mode 100644 index 9b7624cd0b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/muokkausinfo.html +++ /dev/null @@ -1,17 +0,0 @@ -
    - - - - - - - - - - - - - -
    {{getOppiaine() | kaanna}}
    {{getVuosiluokkakokonaisuus() | kaanna}}
    {{muokkausinfoOsa | kaanna}}
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/oppiaine.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/oppiaine.html deleted file mode 100644 index e3d3a1a67e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/oppiaine.html +++ /dev/null @@ -1,177 +0,0 @@ -
    - -
    -
    - - - - - - - - - - - - - - - - - - - -
    {{ $oppiaineenNimi | kaanna}}
    {{editableModel.nimi | kaanna}}
    {{editableModel.nimi | kaanna}}
    -
      -
    • -
    • - {{oppimaara.nimi | kaanna}} -
    • -
    -
    -
    -
    - -
    - - -

    Nimi on pakollinen tieto

    - - -
    - -
    - -
    -
    - - -
    - -
    - -
    - - - -
    - -
    -

    -
    - -
    -
    - - - - - - - - - - - - - - - - - - - -
    - - {{oppiaineMap[editableModel._oppiaine].nimi | kaanna}} -
    {{editableModel.nimi | kaanna}}
    {{editableModel.koodiArvo ? editableModel.koodiArvo : ('ei-asetettu'|kaanna)}}
    - -
    -
    - -
    - - - - -
    -
    -
    -

    {{ getTitle('tehtava') | kaanna }}

    - -
    -
    - -
    - -
    -

    {{ getTitle('ohjaus') | kaanna }}

    - -
    -
    - -
    -
    -

    {{ getTitle('tyotavat') | kaanna }}

    - -
    -
    - -
    -
    -

    {{ getTitle('arviointi') | kaanna }}

    - -
    -
    - -
    -
    -
    -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/oppiaineenosiot.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/oppiaineenosiot.html deleted file mode 100644 index b14298930c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/oppiaineenosiot.html +++ /dev/null @@ -1,28 +0,0 @@ -
    -
    -
      -
    • -
      - -
      -
      -
      -
      - -
      - {{osio.model.otsikko | kaanna}} -
      -
    • -
    -
    - -
      -
    1. -
      - -
      - {{vlk.nimi | kaanna}} -
    2. -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osaaminen.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osaaminen.html deleted file mode 100644 index ca5004d6d2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osaaminen.html +++ /dev/null @@ -1,31 +0,0 @@ -
    - -
    -
    -
    - -
    -
    -
    -

    -

    -
    -
    -

    -
    -
    -
    -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkauskohdealueet.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkauskohdealueet.html deleted file mode 100644 index acdfcb2009..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkauskohdealueet.html +++ /dev/null @@ -1,32 +0,0 @@ -
    - - - - - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkaussisaltoalueet.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkaussisaltoalueet.html deleted file mode 100644 index 5a2747e436..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkaussisaltoalueet.html +++ /dev/null @@ -1,68 +0,0 @@ -
    -

    -
    -
    - -
    -
    -

    -
    - -
    -
    -
    - -
    -
    -

    -
    -
    -
    -
    -
    - -
    -
    - - -
    -
    -
    {{$index + 1}}
    -
    -
    -
    -
    -

    {{sisaltoalue.nimi | kaanna}}

    -
    -
    -
    -
    {{'sisaltoalueen-nimi' | kaanna}}
    -

    -
    -
    -
    - - -
    -
    -
    -
    -
    - - - -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkaustavoitteet.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkaustavoitteet.html deleted file mode 100644 index b7c383318e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkaustavoitteet.html +++ /dev/null @@ -1,11 +0,0 @@ -
    -

    - -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkaustekstikappale.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkaustekstikappale.html deleted file mode 100644 index c6ce7eb48e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/osanmuokkaustekstikappale.html +++ /dev/null @@ -1,24 +0,0 @@ -
    -
    - -
    -

    {{getTitle() | kaanna}}

    -

    {{model.otsikko | kaanna}}

    -
    -
    -
    -

    -

    -
    -
    -

    -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/sisaltoalueet.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/sisaltoalueet.html deleted file mode 100644 index 676f4d3cb3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/sisaltoalueet.html +++ /dev/null @@ -1,4 +0,0 @@ -
    -

    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/tavoitteet.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/tavoitteet.html deleted file mode 100644 index 11e5d96822..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/tavoitteet.html +++ /dev/null @@ -1,163 +0,0 @@ - -
    -

    -
    - -
    -
    - -
    - - -
    -

    -
    -
    -
    -
    -
    - -
    -
    - - avaa-sulje-kaikki - - -
    -
    - -
    -
    -
    -
    - - -
    - -
    -
    -
    -
    -

    - -
    - -

    -

    -
    - -

    -

    - {{ tavoite.$valittuKohdealue ? tavoite.$valittuKohdealue.nimi : '' | kaanna }} -

    -
    -
    - - - - -
    -
    - - -
    -
    -

    -
    -
    - -
    -

    -
    -
    - -
    - -

    - - -

    - -
    -

    -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    - - -
    -
    -
    - -

    -

    -
    -
    -
    - - -
    -
    -
    -
    - -
    - - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/vuosiluokkakokonaisuudenosaaminen.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/vuosiluokkakokonaisuudenosaaminen.html deleted file mode 100644 index 371af6cf9e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/vuosiluokkakokonaisuudenosaaminen.html +++ /dev/null @@ -1,19 +0,0 @@ - diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/vuosiluokkakokonaisuus.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/vuosiluokkakokonaisuus.html deleted file mode 100644 index be0be2bb64..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusopetus/vuosiluokkakokonaisuus.html +++ /dev/null @@ -1,145 +0,0 @@ -
    - - -
    -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    -
    - - -

    -

    - {{ isNew ? config.newTitle : config.editTitle | kaanna}} -

    - -
    - - -
    -
    - -
    - : - {{formatVuosiluokka(vuosiluokka)}}, -
    - -
    - - -

    Nimi on pakollinen tieto

    - -
      -
    • - -
    • -
    -
    - -
    - -
    - -
    -
    -
    -
    - - - - - - - - -
    -

    - - - - - -

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -

    - - -

    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/perusteprojekti/murupolku.html b/eperusteet/eperusteet-app/yo/app/views/directives/perusteprojekti/murupolku.html deleted file mode 100644 index a3a231846d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/perusteprojekti/murupolku.html +++ /dev/null @@ -1,10 +0,0 @@ -
    - - - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/sortabletable.pug b/eperusteet/eperusteet-app/yo/app/views/directives/sortabletable.pug deleted file mode 100644 index 2e4d03b143..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/sortabletable.pug +++ /dev/null @@ -1,19 +0,0 @@ -table.table.table-hover - thead - tr - th(width="2%") - a(ng-if="allowSorting && !isSorting" ng-click="sort()" icon-role="sort" style="cursor: pointer;") - th(ng-bind="'nimi' | kaanna") - th(ng-show="hasMuokattu" ng-bind="'muokattu' | kaanna" width="30%") - - tbody(ui-sortable="sortableOptions" ng-model="ngModel") - tr(ng-repeat="rivi in ngModel" style="cursor: pointer;") - td - span(ng-hide="isSorting") - a(ng-bind="$index + 1" ng-href="{{ rivi.$$url }}") - span.handle(ng-show="isSorting" icon-role="sort") - td - a(ng-if="rivi.$$url" ng-href="{{ rivi.$$url }}" ng-bind="rivi.nimi || 'nimeton' | kaanna") - span(ng-if="!rivi.$$url" ng-bind="rivi.nimi || 'nimeton' | kaanna") - - td(ng-show="hasMuokattu" ng-bind="rivi.muokattu | aikaleima") diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/tagcloud.html b/eperusteet/eperusteet-app/yo/app/views/directives/tagcloud.html deleted file mode 100644 index fa2ff90e05..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/tagcloud.html +++ /dev/null @@ -1,25 +0,0 @@ -
    -

    -
      -
    • - - - - {{tag.nimi | kaanna}} - - - - - {{tag.nimi | kaanna}} - -
    • -
    • - -
    • -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/vaihe.html b/eperusteet/eperusteet-app/yo/app/views/directives/vaihe.html deleted file mode 100644 index b877e47205..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/vaihe.html +++ /dev/null @@ -1,200 +0,0 @@ -
    - - - - - - -
    - - - -
    - - - -

    - {{editableModel.nimi | kaanna}} - {{isNew ? 'uusi-vaihe' : 'muokkaa-vaihe' | kaanna}} -

    - - - -
    - -
    -
    -
    -
    - -
    - - -

    -
    - -
    - -
    -
    -
    -
    - - - - - - - - -
    - -

    - - - - - -

    -
    - -
    -
    -
    -
    -
    -
    -
    - - -
    -

    - - -

    -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    -
    -

    - - -

    -
    -
    -
    -
    -
    - - -
    -

    - - -

    -
    -
    -
    - -
    - -
    - - -
    -

    - - -

    -
    -
    -
    - - - - -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/directives/vaihtoehtoisenkentanraami.html b/eperusteet/eperusteet-app/yo/app/views/directives/vaihtoehtoisenkentanraami.html deleted file mode 100644 index 0ac74f0163..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/directives/vaihtoehtoisenkentanraami.html +++ /dev/null @@ -1,13 +0,0 @@ -
    -
    -
    - - - - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/epfooter.html b/eperusteet/eperusteet-app/yo/app/views/epfooter.html deleted file mode 100644 index b8a96c0db9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/epfooter.html +++ /dev/null @@ -1,11 +0,0 @@ - - diff --git a/eperusteet/eperusteet-app/yo/app/views/esiopetus.html b/eperusteet/eperusteet-app/yo/app/views/esiopetus.html deleted file mode 100644 index cd42f789b6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/esiopetus.html +++ /dev/null @@ -1,18 +0,0 @@ - -

    - -
    -
    - -
    - -
    -
    -
    -
    -

    {{ valittuTekstisisalto.perusteenOsa.nimi | kaanna }}

    - -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/excel.html b/eperusteet/eperusteet-app/yo/app/views/excel.html deleted file mode 100644 index 017af52823..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/excel.html +++ /dev/null @@ -1,228 +0,0 @@ - -
    -

    -

    -
    -
    -
    -
    -
    - -
    -
    - - - -
    - -
    -
    {{ 'perusteprojektin-pohjaksi-otetaan-peruste' | kaanna }}: - {{ peruste.nimi | kaanna }} ({{koulutustyypitMap[peruste.koulutustyyppi].nimi | kaanna}}) -
    {{ 'tutkintokoodi' | kaanna }}: - {{ peruste.tutkintokoodi | kaanna }} -
    -
    {{ 'voimassaoloAlkaa' | kaanna }}: - {{ peruste.voimassaoloAlkaa | aikaleima }} -
    -
    {{ 'voimassaoloLoppuu' | kaanna }}: - {{ peruste.voimassaoloLoppuu | aikaleima }} -
    -
    {{ 'siirtymaAlkaa' | kaanna }}: - {{ peruste.siirtymaAlkaa | aikaleima }} -
    -
    - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    - -
    - -
    - - -
    -
    -

    - - - - - - - - - - - -
    {{error.cell}}{{error.expected | kaanna}}{{error.actual | kaanna}}
    -
    - -
    - - -
    - - - - - - - - - - - -
    {{warning.cell}}{{warning.name | kaanna}}{{warning.warning | kaanna}}
    -
    -
    - -
    -
    -
    -
    - -
    - -
    -
    -
    - -
    -
    - - - - -
    -
    -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    - -
    - -
    -
    - -
    -
    -
    -
    -
    - {{ 'perusteprojekti' | kaanna }} - - {{ haettuProjekti.nimi | kaanna }} - - {{ 'tallennettiin-onnistuneesti' | kaanna }} -
    - -
    - - {{ 'et-ole-vielä-tallentanut-tekstikappaleita' | kaanna }} -
    - -
    - - {{ 'et-ole-viela-tallentanut-tutkinnonosia' | kaanna }} -
    - -

    {{ projekti.nimi | kaanna }} ({{ projekti.diaarinumero}})

    - - - -
    -
    - -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/haku.html b/eperusteet/eperusteet-app/yo/app/views/haku.html deleted file mode 100644 index 52f376e775..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/haku.html +++ /dev/null @@ -1,120 +0,0 @@ - -

    -
    -
    -
    -
    - - -
    -
    - - -
    -
    -
    -
    - - -
    -
    - - -
    -
    - - - -
    -
    -
    - - - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -

    {{'haku-tulosten-maara'| kaanna}} {{kokonaismaara}}

    -
    -
    - - - - - - - - - - - - - - - -
    - - - - -
      -
    • {{koulutusalaNimi(koulutus.koulutusalakoodi).nimi | kaanna}}
    • -
    -
    {{peruste.voimassaoloAlkaa | date:'dd.MM.yyyy'}}
    - -
    - - diff --git a/eperusteet/eperusteet-app/yo/app/views/kommentit.html b/eperusteet/eperusteet-app/yo/app/views/kommentit.html deleted file mode 100644 index 464e804e35..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/kommentit.html +++ /dev/null @@ -1,30 +0,0 @@ - -
    -
    -
    -
    -
    -

     ({{sisalto.$yhteensa}} {{'kommenttia' | kaanna}}) - -

    -
    -
    - -

    -
    -
    - - -
    - - -
    -
    -
    - -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/lukiokoulutuslistaus.html b/eperusteet/eperusteet-app/yo/app/views/lukiokoulutuslistaus.html deleted file mode 100644 index 9276a30d14..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/lukiokoulutuslistaus.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - -
    {{ po.voimassaoloLoppuu | aikaleima }}
    diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/aikakatkodialogi.html b/eperusteet/eperusteet-app/yo/app/views/modals/aikakatkodialogi.html deleted file mode 100644 index 0d8bbd4d01..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/aikakatkodialogi.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/haetutkinnonosa.html b/eperusteet/eperusteet-app/yo/app/views/modals/haetutkinnonosa.html deleted file mode 100644 index 461f083887..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/haetutkinnonosa.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/ilmoitusdialogi.html b/eperusteet/eperusteet-app/yo/app/views/modals/ilmoitusdialogi.html deleted file mode 100644 index 9bcbecf099..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/ilmoitusdialogi.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/jarjestelmavirhe.html b/eperusteet/eperusteet-app/yo/app/views/modals/jarjestelmavirhe.html deleted file mode 100644 index 91abb0749e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/jarjestelmavirhe.html +++ /dev/null @@ -1,12 +0,0 @@ - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/koodistoModal.html b/eperusteet/eperusteet-app/yo/app/views/modals/koodistoModal.html deleted file mode 100644 index f25252bf47..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/koodistoModal.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/lisaaTutkintonimike.html b/eperusteet/eperusteet-app/yo/app/views/modals/lisaaTutkintonimike.html deleted file mode 100644 index b78f8ede1d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/lisaaTutkintonimike.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/lisaaTyoryhma.html b/eperusteet/eperusteet-app/yo/app/views/modals/lisaaTyoryhma.html deleted file mode 100644 index 39c396f6c0..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/lisaaTyoryhma.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/pdfcreation.html b/eperusteet/eperusteet-app/yo/app/views/modals/pdfcreation.html deleted file mode 100644 index c6c30e110b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/pdfcreation.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/perusteenosaprojektidialogi.html b/eperusteet/eperusteet-app/yo/app/views/modals/perusteenosaprojektidialogi.html deleted file mode 100644 index cdb57333a8..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/perusteenosaprojektidialogi.html +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/perusteprojektinTila.html b/eperusteet/eperusteet-app/yo/app/views/modals/perusteprojektinTila.html deleted file mode 100644 index 9cdd19c62c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/perusteprojektinTila.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/perusteprojektinTilaVarmistus.html b/eperusteet/eperusteet-app/yo/app/views/modals/perusteprojektinTilaVarmistus.html deleted file mode 100644 index ace8a67c1d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/perusteprojektinTilaVarmistus.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/projektiSisaltoTuonti.html b/eperusteet/eperusteet-app/yo/app/views/modals/projektiSisaltoTuonti.html deleted file mode 100644 index dd4e99d3ca..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/projektiSisaltoTuonti.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/projektiryhmanJasen.html b/eperusteet/eperusteet-app/yo/app/views/modals/projektiryhmanJasen.html deleted file mode 100644 index 35bc01332a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/projektiryhmanJasen.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/rakenneosaModal.html b/eperusteet/eperusteet-app/yo/app/views/modals/rakenneosaModal.html deleted file mode 100644 index 5de36e0a96..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/rakenneosaModal.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/ryhmaModal.html b/eperusteet/eperusteet-app/yo/app/views/modals/ryhmaModal.html deleted file mode 100644 index 8465a073a2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/ryhmaModal.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/sisaltoMuotoiluVaroitusModal.html b/eperusteet/eperusteet-app/yo/app/views/modals/sisaltoMuotoiluVaroitusModal.html deleted file mode 100644 index a977cb756f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/sisaltoMuotoiluVaroitusModal.html +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/sisaltoMuuttunut.html b/eperusteet/eperusteet-app/yo/app/views/modals/sisaltoMuuttunut.html deleted file mode 100644 index 6a77dc4791..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/sisaltoMuuttunut.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/suosikkienMuokkaus.html b/eperusteet/eperusteet-app/yo/app/views/modals/suosikkienMuokkaus.html deleted file mode 100644 index e251f5e900..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/suosikkienMuokkaus.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/tagcloudkohdealuemodal.html b/eperusteet/eperusteet-app/yo/app/views/modals/tagcloudkohdealuemodal.html deleted file mode 100644 index d96a3eb492..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/tagcloudkohdealuemodal.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/tagcloudmodal.html b/eperusteet/eperusteet-app/yo/app/views/modals/tagcloudmodal.html deleted file mode 100644 index 927a5a87e9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/tagcloudmodal.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/termisto.html b/eperusteet/eperusteet-app/yo/app/views/modals/termisto.html deleted file mode 100644 index 2d4fc3e23a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/termisto.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/tiedotteenmuokkaus.html b/eperusteet/eperusteet-app/yo/app/views/modals/tiedotteenmuokkaus.html deleted file mode 100644 index fed43bb552..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/tiedotteenmuokkaus.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/tilanVaihtoVirhe.html b/eperusteet/eperusteet-app/yo/app/views/modals/tilanVaihtoVirhe.html deleted file mode 100644 index 443f474d54..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/tilanVaihtoVirhe.html +++ /dev/null @@ -1,41 +0,0 @@ - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/tuotekstikappale.html b/eperusteet/eperusteet-app/yo/app/views/modals/tuotekstikappale.html deleted file mode 100644 index 4fadbaaa12..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/tuotekstikappale.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/tuotutkinnonosasta.html b/eperusteet/eperusteet-app/yo/app/views/modals/tuotutkinnonosasta.html deleted file mode 100644 index 0bc790f38b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/tuotutkinnonosasta.html +++ /dev/null @@ -1,45 +0,0 @@ - - -
    - - - - - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/tuotyoryhma.html b/eperusteet/eperusteet-app/yo/app/views/modals/tuotyoryhma.html deleted file mode 100644 index 47de9919c2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/tuotyoryhma.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/tyoryhmavalitsin.html b/eperusteet/eperusteet-app/yo/app/views/modals/tyoryhmavalitsin.html deleted file mode 100644 index 960fde805f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/tyoryhmavalitsin.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/uudelleenohjaus.html b/eperusteet/eperusteet-app/yo/app/views/modals/uudelleenohjaus.html deleted file mode 100644 index 45ef32b03a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/uudelleenohjaus.html +++ /dev/null @@ -1,36 +0,0 @@ - - -
    - - - -
    - -
    - - - -
    - -
    - - - -
    - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/uusipuuelementti.html b/eperusteet/eperusteet-app/yo/app/views/modals/uusipuuelementti.html deleted file mode 100644 index f68c78a990..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/uusipuuelementti.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/validointivirheet.html b/eperusteet/eperusteet-app/yo/app/views/modals/validointivirheet.html deleted file mode 100644 index a1218fdb05..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/validointivirheet.html +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/modals/varmistusdialogi.html b/eperusteet/eperusteet-app/yo/app/views/modals/varmistusdialogi.html deleted file mode 100644 index b542ceb488..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/modals/varmistusdialogi.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/multiinput.html b/eperusteet/eperusteet-app/yo/app/views/multiinput.html deleted file mode 100644 index 46606e3e9c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/multiinput.html +++ /dev/null @@ -1,24 +0,0 @@ -
    - - - -
    - - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/muokkaus.html b/eperusteet/eperusteet-app/yo/app/views/muokkaus.html deleted file mode 100644 index f61559a364..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/muokkaus.html +++ /dev/null @@ -1,10 +0,0 @@ - - -
    -
    -
    placeholder
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/accordiongroup.html b/eperusteet/eperusteet-app/yo/app/views/partials/accordiongroup.html deleted file mode 100644 index 5a40fd9b28..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/accordiongroup.html +++ /dev/null @@ -1,10 +0,0 @@ - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/ammattitaito.html b/eperusteet/eperusteet-app/yo/app/views/partials/ammattitaito.html deleted file mode 100644 index 07be967cfa..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/ammattitaito.html +++ /dev/null @@ -1,201 +0,0 @@ - -
    -
    - - - - - avaa-sulje-kaikki - -
    -
    -
    -
    -

    - -

    -
    - -
    -
    - -
    - -
    -

    - - {{vaatimuksenkohde.otsikko | kaanna}} - - - -

    -
    -
    -
    - -
    - - -
    -
    - -
    -
    - -
    - - - - - -
    - - - - - - - - - - - - - -
    - - - - - - - -
    - -
    - -
      -
    • - {{vaatimus.selite | kaanna}} - ({{vaatimus.ammattitaitovaatimusKoodi}}) -
    • -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    - - - -
    - -
    - - - -
    -
    - -
    - - -
    - -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/ammattitaitovaatimukset2019.pug b/eperusteet/eperusteet-app/yo/app/views/partials/ammattitaitovaatimukset2019.pug deleted file mode 100644 index a177e1a605..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/ammattitaitovaatimukset2019.pug +++ /dev/null @@ -1,89 +0,0 @@ -mixin koodi - span(ng-bind="vaatimus.vaatimus | kaanna") - =" (" - a(ng-show="vaatimus.koodi", ng-href="https://virkailija.testiopintopolku.fi/koodisto-ui/html/koodi/{{ vaatimus.koodi.uri }}/{{ vaatimus.koodi.versio }}") - b(ng-bind="vaatimus.koodi.arvo") - b(ng-hide="vaatimus.koodi", ng-bind="'koodi-puuttuu' | kaanna") - =")" - - -mixin vaatimus - span(ng-bind="(vaatimus.koodi ? vaatimus.koodi.nimi : vaatimus.vaatimus) | kaanna") - - -mixin vaatimusEdit - .vaatimus - .input-group - .input-group-addon.handle - span(icon-role="sort") - input.form-control(ng-if="!vaatimus.koodi", ng-model="vaatimus.vaatimus", slocalized, ng-model-options="{ debounce: 300 }", ng-keyup="tarkistaKoodistosta(vaatimus)") - span.form-control(ng-if="vaatimus.koodi", ng-disabled="true") {{vaatimus.vaatimus | kaanna}} ({{vaatimus.koodi.arvo}}) - .input-group-btn - ohje(ng-if="vaatimus.koodivastaavuus",style="padding-left: 20px",teksti="ammattitaitovaatimus-koodisto-puute") - button.btn.btn-link(ng-if="vaatimus.koodivastaavuus", ng-click="kaytaKoodistosta(vaatimus)", ng-bind="'kayta-koodistosta' | kaanna", style="margin-right: 20px") - koodisto-select( - tyyppi="ammattitaitovaatimukset", - valmis="koodiSelector", - payload="vaatimus", - nimifilter="vaatimus.vaatimus") - button.btn.btn-link( - ng-click="poistaVaatimus(vaatimus, kohdealue)", - ng-bind="'poista-kohdealue' | kaanna") - span(ng-show="vaatimus.haku", style="padding-left: 4px") - small-spinner - span(ng-if="!vaatimus.haku", style="padding-left: 27px") - - -div.ammattitaitovaatimukset-2019(ng-show="!loading" ng-cloak) - div(ng-if="!editEnabled") - .ammattitaitovaatimukset - div(ng-bind="ammattitaitovaatimukset.kohde | kaanna") - ul.vaatimukset - li.rivi(ng-repeat="vaatimus in ammattitaitovaatimukset.vaatimukset") - +koodi - div.kohdealueet(ng-repeat="kohdealue in ammattitaitovaatimukset.kohdealueet") - div(ng-bind="kohdealue.kuvaus | kaanna") - span(ng-bind="ammattitaitovaatimukset.kohde | kaanna") - ul - li.rivi(ng-repeat="vaatimus in kohdealue.vaatimukset") - +koodi - - div(ng-if="editEnabled") - div.ammattitaitovaatimukset - div - .kohde - input.form-control(ng-model="ammattitaitovaatimukset.kohde", slocalized) - .kohdealueettomat - .vaatimus(ng-model="ammattitaitovaatimukset.vaatimukset", ui-sortable="sortableOptionsAmmattitaitovaatimukset") - div(ng-repeat="vaatimus in ammattitaitovaatimukset.vaatimukset") - +vaatimusEdit - button.btn.btn-link( - ng-click="addVaatimus()", - ng-bind="'lisaa-vaatimus-ilman-kohdealuetta' | kaanna") - - .kohdealueet - h2(ng-bind="'ammattitaito-kohdealueet' | kaanna") - div(ng-model="ammattitaitovaatimukset.kohdealueet", ui-sortable="sortableOptionsKohdealue") - .kohdealue(ng-repeat="kohdealue in ammattitaitovaatimukset.kohdealueet") - .panel.panel-info - .panel-heading - .input-group - .input-group-addon.handle - span(icon-role="sort") - input.form-control(ng-model="kohdealue.kuvaus", slocalized) - .input-group-btn - button.btn.btn-link( - ng-click="poistaKohdealue(kohdealue)", - ng-bind="'poista-kohdealue' | kaanna") - .panel-body - div(ng-model="kohdealue.vaatimukset", ui-sortable="sortableOptionsAmmattitaitovaatimukset") - .vaatimus(ng-repeat="vaatimus in kohdealue.vaatimukset") - +vaatimusEdit - button.btn.btn-link( - ng-click="addVaatimus(kohdealue)", - ng-bind="'lisaa-vaatimus' | kaanna") - .actions - button.btn.btn-link( - ng-click="addKohdealue()", - ng-bind="'lisaa-kohdealue' | kaanna") - diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/arvioinninTekstikentta.html b/eperusteet/eperusteet-app/yo/app/views/partials/arvioinninTekstikentta.html deleted file mode 100644 index 44ce6e295c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/arvioinninTekstikentta.html +++ /dev/null @@ -1,24 +0,0 @@ - - -{{sisaltoteksti | kaanna}} - - - - -
    - - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/arviointi.html b/eperusteet/eperusteet-app/yo/app/views/partials/arviointi.html deleted file mode 100644 index 2f61f3164d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/arviointi.html +++ /dev/null @@ -1,166 +0,0 @@ - -
    -
    - - - - - - -
    -
    -
    -
    -

    - -

    -
    - -
    -
    -
    - -
    -

    - - {{arvioinninkohde.otsikko | kaanna}} - - - -

    -
    - -
    -
    - -
    - - -
    -
    - -
    -
    - -
    - - - - - - -
    - - - - - - - - - - - - - -
    - - - - - -
    - - -
    -
      -
    • - {{kriteeri | kaanna}} -
    • -
    -
    - - -
    -
    -
    -

    - -
    - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    -
    - -
    -

    arviointi-asteikon-valinta

    - -
    - - -
    -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    - - -
    - -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/editointikontrollit.html b/eperusteet/eperusteet-app/yo/app/views/partials/editointikontrollit.html deleted file mode 100644 index 640ba0e1be..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/editointikontrollit.html +++ /dev/null @@ -1,21 +0,0 @@ - -
    -
    -
    - - {{kaanna('muokattavana')}} -
    -
    - - -
    -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/excelTekstikappale.html b/eperusteet/eperusteet-app/yo/app/views/partials/excelTekstikappale.html deleted file mode 100644 index e19a12c873..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/excelTekstikappale.html +++ /dev/null @@ -1,24 +0,0 @@ - -
    -
    -

    {{ tk.nimi | kaanna }} () -

    -

    {{ tk.nimi | kaanna }}

    -
    -
    -
    - {{ syy | kaanna }} -
    -
    -
    - {{ 'tekstikappale-tallennettiin-onnistuneesti' | kaanna }} (id: {{ tk.id }}) -
    - {{ tk.teksti | kaanna }} -
    -
    - - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/excelTutkinnonOsat.html b/eperusteet/eperusteet-app/yo/app/views/partials/excelTutkinnonOsat.html deleted file mode 100644 index 931e7fa84a..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/excelTutkinnonOsat.html +++ /dev/null @@ -1,76 +0,0 @@ - -
    -

    {{'tutkinnonosat' | kaanna}} ({{osatutkinnot.length}}kpl)

    - - - - - - - - - - - - - - - - - - - -
    tilakoodinimi
    - - - - - -
    - - - - -
    -
    - {{ot.nimi | kaanna}} -
    -
    -
    - {{syy | kaanna}} -
    -
    -
    -
    - -
    -
    - - {{ot.koodiUri | koodisto}} - - {{ot.nimi | kaanna}} - -
    -
    - -
    - -
    - - -
    - {{'tutkinnonosa-save-fail' | kaanna}} - - - - - - - - - -
    tutkinnonosasyy
    {{error.name | kaanna}}{{error.message | kaanna}}
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/fileselect.html b/eperusteet/eperusteet-app/yo/app/views/partials/fileselect.html deleted file mode 100644 index 4338aa7c1b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/fileselect.html +++ /dev/null @@ -1,13 +0,0 @@ - -
    - - - - -
    - {{file.name}} - -
    - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/formfield.html b/eperusteet/eperusteet-app/yo/app/views/partials/formfield.html deleted file mode 100644 index ceb51de811..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/formfield.html +++ /dev/null @@ -1,49 +0,0 @@ - -
    -
    - - -
    -
    - - - -

    diaarinumerolla-jyraa-vanhan

    - - - - - - -
    -
    - -
    - - - - -
    -

    kelvoton-pvm

    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/geneerisetammattitaitovaatimukset.pug b/eperusteet/eperusteet-app/yo/app/views/partials/geneerisetammattitaitovaatimukset.pug deleted file mode 100644 index 47df3d8161..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/geneerisetammattitaitovaatimukset.pug +++ /dev/null @@ -1,31 +0,0 @@ -div - .geneerinen-arviointi-2019(ng-show="valittu && !editEnabled") - .geneeriset - .geneerinen - .geneerinen-heading - h3(ng-bind="valittu.nimi | kaanna") - - .geneerinen-body - .perustiedot - .kohde(ng-bind="valittu.kohde | kaanna") - - .osaamistasot - .osaamistaso(ng-repeat="ot in valittu.osaamistasonKriteerit") - .asteikko(ng-bind="arviointiasteikot[valittu._arviointiAsteikko].osaamistasotMap[ot._osaamistaso].otsikko | kaanna") - .kriteerit - ul.kriteeri(ng-repeat="kriteeri in ot.kriteerit") - li(ng-bind="kriteeri | kaanna") - - .alert.alert-info(ng-show="ot.kriteerit.length === 0", kaanna="'kriteereita-ei-lisatty'") - - .asteikot(ng-show="editEnabled") - .asteikko(ng-repeat="asteikko in geneeriset") - .radio - label - input( - type="radio", - ng-change="changeGeneerinen(asteikko.id)", - ng-model="state.valittu", - name="optionsRadios", - ng-value="asteikko.id") - span(ng-bind="asteikko.nimi | kaanna") diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/laajaalaiset.html b/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/laajaalaiset.html deleted file mode 100644 index 16c14ee495..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/laajaalaiset.html +++ /dev/null @@ -1,73 +0,0 @@ -
    -
    - -
    - -
    - -

    - -
    -
    -

    -
    - -

    {{osaaminen.koodi.arvo | kaanna}}

    -
    -
    -
    -
    -
    - -
    - - - -
    - -
    - - - - -
    - -
    - -
    - -
    -
    -
    -
    -
    -
    - -
    - -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/moduuli.html b/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/moduuli.html deleted file mode 100644 index 0c6609a64f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/moduuli.html +++ /dev/null @@ -1,195 +0,0 @@ -
    -
    - -
    - -
    - -
    - -
    -
    - -
    - -

    {{moduuli.nimi || 'nimeton' | kaanna}}

    - -
    -
    -
    -
    - -
    - -

    {{moduuli.koodi.arvo | kaanna}}

    -
    - -
    - -

    {{ moduuli.pakollinen ? 'pakollinen' : 'valinnainen' | kaanna}}

    -
    - -
    - -

    {{moduuli.laajuus}}

    -
    - -
    - -

    - -

    -
      -
    • - -
    • -
    -
    - -
    - -
    -

    -
      -
    • - -
    • -
    -
    -
    - -
    - -
    - - - -
    - -
    -
    - -
    - -
    - - - - -
    - - -
    - -
    - - -
    - -
    -
    - -
    - - -
    - -
    - -
    - - - -
    -
    - - - - -
    -
    -
    - -
    -
    -
    - -
    - -
    - - - -
    -
    - - - - -
    -
    -
    - - -
    - -
    -
    - -
    -
    -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/oppiaine.html b/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/oppiaine.html deleted file mode 100644 index 2c26d8caa3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/oppiaine.html +++ /dev/null @@ -1,258 +0,0 @@ -
    -
    - -
    - -
    -
    - -
    - -
    - -
    -
    - -
    - -

    {{oppiaine.nimi || 'nimeton' | kaanna}}

    - -
    -
    - -

    {{oppiaine.koodi.arvo | kaanna}}

    -
    - -
    -

    -
    -
    - -
    -

    -
    -
    - -
    -

    -
    -
    - -
    -

    -
    -
    -

    -
    - -

    -
      -
    • - -
    • -
    -
    -
    -
    - -
    -

    -
    -
    - -
    -

    - -

    -
    -
    - - - -
    - -

    -
    -
    - - - -
    -
    - -
    -

    - -
    - -
    - -
    - - - -
    - -
    - - - - -
    - -
    - -

    -
    - -

    -
    - -

    -
    - -

    -
    -
    - -
    -
    - - - - - - -
    -
    - - - - -
    -
    -
    - - -
    -
    -
    - -
    -
    - -

    -
    - -

    -

    -
    - -

    -
    - -
    -
    -
    - - - -
    -
    -
    -
    - -
    - -
    -

    -
    -
    -
    - - - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/oppiaineet.html b/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/oppiaineet.html deleted file mode 100644 index 539d1e6f12..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lops2019/oppiaineet.html +++ /dev/null @@ -1,33 +0,0 @@ -
    -
    - -
    - - -
    - -

    - -
    -
    - -
    - -
    -
    -
    - - -
    -
    -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/include/kurssiLomakeKentat.html b/eperusteet/eperusteet-app/yo/app/views/partials/lukio/include/kurssiLomakeKentat.html deleted file mode 100644 index 2489ff1b49..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/include/kurssiLomakeKentat.html +++ /dev/null @@ -1,42 +0,0 @@ - - -
    - -
    - - -
    - -
    - -
    -
    - - -
    - -
    - - - - - -
    -
    -
    - -
    -
    - -
    - -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/include/kurssiOsavalitsin.html b/eperusteet/eperusteet-app/yo/app/views/partials/lukio/include/kurssiOsavalitsin.html deleted file mode 100644 index cb4201f410..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/include/kurssiOsavalitsin.html +++ /dev/null @@ -1,13 +0,0 @@ - - diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/kurssi.html b/eperusteet/eperusteet-app/yo/app/views/partials/lukio/kurssi.html deleted file mode 100644 index b1337eb02b..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/kurssi.html +++ /dev/null @@ -1,107 +0,0 @@ - -
    - -
    - - -
    - - / -
    -
    - - - - - / - - / -
    -
    - -

    - -

    -
    - -
    -
    - -
    - - - - - - - - - - - - - - - -
    - - -
    - - -
    - - - -
    -
    -
    - - - - -
    -
    -
    -
    -
    - -
    -

    -
    -
    - -
    -

    -
    -
    - -
    -

    -
    -
    - -
    -

    -
    -
    - -
    -

    -
    -
    - -
    -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/lisaaKurssi.html b/eperusteet/eperusteet-app/yo/app/views/partials/lukio/lisaaKurssi.html deleted file mode 100644 index 8b55181033..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/lisaaKurssi.html +++ /dev/null @@ -1,15 +0,0 @@ - -
    -

    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/muokkaaKurssia.html b/eperusteet/eperusteet-app/yo/app/views/partials/lukio/muokkaaKurssia.html deleted file mode 100644 index aa902a0891..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/muokkaaKurssia.html +++ /dev/null @@ -1,22 +0,0 @@ - -
    -

    - -
    -
    -
    -
    -
    - - -
    - -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/osat/oppiaineet_ja_oppimaarat.html b/eperusteet/eperusteet-app/yo/app/views/partials/lukio/osat/oppiaineet_ja_oppimaarat.html deleted file mode 100644 index 1b6df6a2bb..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/osat/oppiaineet_ja_oppimaarat.html +++ /dev/null @@ -1,9 +0,0 @@ - - diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/osat/osaalue.html b/eperusteet/eperusteet-app/yo/app/views/partials/lukio/osat/osaalue.html deleted file mode 100644 index 1d99fd473f..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/osat/osaalue.html +++ /dev/null @@ -1,19 +0,0 @@ - - -
    -
    -
    - -
    -
    - -
    -
    -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/osat/osalistaus.html b/eperusteet/eperusteet-app/yo/app/views/partials/lukio/osat/osalistaus.html deleted file mode 100644 index 578e78c5c6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/lukio/osat/osalistaus.html +++ /dev/null @@ -1,26 +0,0 @@ - -
    -
    -
    - -
    - -
    - -
    -
    -
    - -
    -
    - -
    - -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/multichoice.html b/eperusteet/eperusteet-app/yo/app/views/partials/multichoice.html deleted file mode 100644 index 4e7e8c0252..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/multichoice.html +++ /dev/null @@ -1,10 +0,0 @@ - -
      -
    • -
    -
      -
    • - -
    • -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/kenttalistaus.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/kenttalistaus.html deleted file mode 100644 index cdf217eeed..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/kenttalistaus.html +++ /dev/null @@ -1,46 +0,0 @@ - -
    - -
    - - - -
      -
    • - -
    • -
    - - -
    -
      -
    • -
      - -
      -
      -
      -
      - -
      - {{field.localeKey | kaanna}} -
      -
    • -
    -
    - -

    - {{emptyplaceholder || 'tutkinnon-osa-ei-sisaltoa' | kaanna}} - {{emptyplaceholderedit || 'tutkinnon-osa-ei-sisaltoa-ohje' | kaanna}} -

    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/koulutuksenOsaOsaAlue.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/koulutuksenOsaOsaAlue.html deleted file mode 100644 index 3f5d0dd0e6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/koulutuksenOsaOsaAlue.html +++ /dev/null @@ -1,21 +0,0 @@ - -

    -

    -
    - -
    - -

    - - - - -
    - -
    - - - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/koulutuksenosa.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/koulutuksenosa.html deleted file mode 100644 index a5b14ecf81..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/koulutuksenosa.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - -
    -
    -
    -
    - - - - - - -
    - -
    -
    -
    - -
    - - -
    -
    -
    - - -

    Nimi on pakollinen tieto

    -
    -
    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    -

    {{ yksikko | kaanna }}

    -
    -
    - -
    - - -
    -
    -
    -
    - -
    -
    - : {{ tutkinnonOsaViite.jarjestys || '-' }} -
    -
    - : {{ tutkinnonOsaViite.tutkinnonOsa.koodiArvo || '-' }} -
    -
    - : - {{ tutkinnonOsaViite.laajuus || '0' }} - - {{ tutkinnonOsaViite.laajuusMaksimi }} - -
    -
    - -
    - - -

    {{tutkinnonOsaViite.tutkinnonOsa.kuvaus| kaanna}}

    -
    - -
    - -
    - - - - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/leikelauta.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/leikelauta.html deleted file mode 100644 index 93f28c7600..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/leikelauta.html +++ /dev/null @@ -1,31 +0,0 @@ - -
    -
    -
    -
    -
    -
      -
    • -
      - - -
      -
      - -
      -
      - -
      -
    • -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/muokattavaKentta.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/muokattavaKentta.html deleted file mode 100644 index 15278f34d6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/muokattavaKentta.html +++ /dev/null @@ -1,14 +0,0 @@ - -
    - - {{(hasModel ? model : otsikko) | kaanna}} - - -
    -

    - - * -

    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/revertnote.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/revertnote.html deleted file mode 100644 index 7b246a28c1..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/revertnote.html +++ /dev/null @@ -1,13 +0,0 @@ -
    - -
    -
    - -
    -

    {{'katselet-vanhaa-versiota'|kaanna}}

    -

    katso-uusin-versio

    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/taiteenala.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/taiteenala.html deleted file mode 100644 index 5d880b9959..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/taiteenala.html +++ /dev/null @@ -1,160 +0,0 @@ - - -
    -
    -
    - - -
    -
    -
    - - -
    - - - - - - -
    - -
    -
    - - - -

    - luonti-tekstikappale - muokkaus-tekstikappale -

    -

    - - -

    -
    - -
    -
    - - -
    - - - {{ tr }} - - -
    - -
    -
    -
    - -
    -
    -
    -
    -

    -
    -
    - - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    - - - -
    -
    -
    -
    -
    -
    -
    -
    - -
    -

    -
    -
    -
    - -
    - -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tekstikappale.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tekstikappale.html deleted file mode 100644 index bd0accf108..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tekstikappale.html +++ /dev/null @@ -1,133 +0,0 @@ - - - -
    -
    -
    - - -
    -
    -
    - - - -
    - - - - -
    - - - - -
    - -
    - -
    -
    - - - -

    - - -

    -

    - {{tekstikappale.nimi | kaanna}} - - -

    -
    - {{ 'osaamisalan-kuvaus' | kaanna }}: - {{ tekstikappale.osaamisala.nimi | kaanna }} ({{ tekstikappale.osaamisala.arvo }}) -
    -
    - -
    -
    - - -
    - - - {{ tr }} - - -
    - -
    - -
    -
    - -
    -
    -
    - -
    -
    - -
    - -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tutke2kentat.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tutke2kentat.html deleted file mode 100644 index a7c33a2ae5..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tutke2kentat.html +++ /dev/null @@ -1,139 +0,0 @@ - -
    - -
    osa-alueet -
      -
    • - -
    • -
    -
    -

    ei-osa-alueita

    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    - - - - -
    -
    -
    -
    -
    - -
    - -
    - -
    - -
    -
    - - {{alue.nimi | kaanna}} - - - - - -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    - -
    - : {{ alue.koodiArvo || '-' }} -
    - - -

    - Ei osaamistavoitteita. -

    -
    - - -
    - -
    -
    - -
    -
    -

    - {{pakollisuus && 'pakolliset-osaamistavoitteet' || 'valinnaiset-osaamistavoitteet' | kaanna}}, {{tavoite.laajuus}} {{ yksikko | kaanna }} -

    -
    -
    -
    - : {{ tavoite.koodi.arvo || tavoite.koodiArvo || '-' }} -
    - - -

    - - - -

    - - -
    -
    - -
    -
    - -
    -
    -
    - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tutkinnonOsaOsaAlue.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tutkinnonOsaOsaAlue.html deleted file mode 100644 index d65d657508..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tutkinnonOsaOsaAlue.html +++ /dev/null @@ -1,120 +0,0 @@ - -

    -

    -
    -
    - -

    - - - -
    - -
    - -
    - -
    -
    -
    - -
    - -
    -
    -

    - - -

    -
    - -
    -
    - - -
    - -

    - {{('pakolliset-osaamistavoitteet'| kaanna)}}, {{tavoite.laajuus}} {{'osp'| kaanna}} - - - -

    -

    - {{('valinnaiset-osaamistavoitteet'| kaanna)}}, {{tavoite.laajuus}} {{'osp'| kaanna}} - - - -

    - -
    - - - - -
    - -

    arviointi

    - - -
    - -

    ammattitaitovaatimukset

    - -
    - -
    -

    - {{('valinnaiset-osaamistavoitteet'| kaanna)}}, {{tavoite.lapsi.laajuus}} {{'osp'| kaanna}} - - - -

    -
    - - - - -
    - -

    arviointi

    - - -
    - -

    - - -
    -
    -
    - -
    - - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tutkinnonosa.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tutkinnonosa.html deleted file mode 100644 index 9ae2b044e9..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/tutkinnonosa.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - -
    -
    -
    -
    - - -
    - - - - -

    - - -

    - - - - - - - - -
    - - - -
    - -
    -
    - - -
    -
    -
    - -
    - - - -
    -
    -
    - - -

    Nimi on pakollinen tieto

    -
    -
    - -
    - -
    - - -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -

    {{ yksikko | kaanna }}

    -
    -
    -
    - -
    - - - - - -
    -
    -
    - -
    -
    - : {{ tutkinnonOsaViite.jarjestys || '-' }} -
    -
    - : {{ tutkinnonOsaViite.tutkinnonOsa.koodiArvo || '-' }} -
    -
    - : {{ tutkinnonOsaViite.laajuus || '-' }} - -
    -
    - -
    - - -
    -
    -
    -

    - - - - -

    -
    - -
    -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    - - - -
    -
    -
    -
    -
    -
    -
    - -
    - - -

    {{tutkinnonOsaViite.tutkinnonOsa.kuvaus| kaanna}}

    -
    - -
    - - -
    -
    - -
    - -
    -
    - - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/versiohelper.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/versiohelper.html deleted file mode 100644 index e4bc9402d4..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/versiohelper.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/versiotiedot.html b/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/versiotiedot.html deleted file mode 100644 index 33dbfd1ae2..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muokkaus/versiotiedot.html +++ /dev/null @@ -1,31 +0,0 @@ - -
    -
    -
    - : {{lastModified() | aikaleima:'ago'}} -
    -
    -
      -
    • - : - -
    • -
    • - : 1 -
    • -
    • - -
    • -
    -
    -
    - - : {{versiot.chosen.$nimi}} -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/muutperusteenosat.html b/eperusteet/eperusteet-app/yo/app/views/partials/muutperusteenosat.html deleted file mode 100644 index 3e4c63e3da..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/muutperusteenosat.html +++ /dev/null @@ -1,6 +0,0 @@ -
    - : - - {{ projekti.nimi }}, - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/navi.html b/eperusteet/eperusteet-app/yo/app/views/partials/navi.html deleted file mode 100644 index 97351fb8e1..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/navi.html +++ /dev/null @@ -1,8 +0,0 @@ - - diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/navifilters.html b/eperusteet/eperusteet-app/yo/app/views/partials/navifilters.html deleted file mode 100644 index 7710679c41..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/navifilters.html +++ /dev/null @@ -1,33 +0,0 @@ - -
    - -
    - - - {{section.title | kaanna}} - -
    -
      -
    • - -
    • -
    -
    -
    -
    -
    -
    -
    -
      -
    • - -
    • -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/numberinput.html b/eperusteet/eperusteet-app/yo/app/views/partials/numberinput.html deleted file mode 100644 index 26effdf225..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/numberinput.html +++ /dev/null @@ -1,50 +0,0 @@ -
    - -
    - - - -

    - arvo-rajojen-ulkopuolella -

    -

    arvo-ei-numero

    -

    - arvo-ei-kokonaisluku -

    -

    arvo-ei-desimaaliluku

    -

    - arvo-askelvirhe -

    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/ohje.html b/eperusteet/eperusteet-app/yo/app/views/partials/ohje.html deleted file mode 100644 index fc4bd2af98..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/ohje.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - ? - - diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusopetuksenvuosiluokkakokonaisuus.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusopetuksenvuosiluokkakokonaisuus.html deleted file mode 100644 index 8ca6cc81f3..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusopetuksenvuosiluokkakokonaisuus.html +++ /dev/null @@ -1,21 +0,0 @@ - -
    -
    -
    - {{ item.label | kaanna }} {{ currentOppiaine() }} -
    -
    - -
    - -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusopetusoppiaineetsivunavi.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusopetusoppiaineetsivunavi.html deleted file mode 100644 index 481905c7dd..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusopetusoppiaineetsivunavi.html +++ /dev/null @@ -1,12 +0,0 @@ - -
    -
    -
    - -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusopetustekstisisalto.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusopetustekstisisalto.html deleted file mode 100644 index 50c158216c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusopetustekstisisalto.html +++ /dev/null @@ -1,8 +0,0 @@ - -
    -
    - {{ item.label | kaanna }} -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/esiopetus.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/esiopetus.html deleted file mode 100644 index 7b461adeeb..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/esiopetus.html +++ /dev/null @@ -1,53 +0,0 @@ - -
    -
    -
    -
    - - -
    - - - -
    - -

    - {{ 'tekstikappaleet' | kaanna }} ({{ peruste.sisalto.lapset.length }}) -
    - - - -
    -

    -
    -

    - {{'muokkaa-tekstikappaleiden-rakennetta' | kaanna}} - - {{ 'avaa-sulje-kaikki' | kaanna }} -

    -
    -
    - -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/kommentit.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/kommentit.html deleted file mode 100644 index 6a989abe08..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/kommentit.html +++ /dev/null @@ -1,20 +0,0 @@ - -
    - - - - - - - - - - - - - -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/lops2019.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/lops2019.html deleted file mode 100644 index efe8454a56..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/lops2019.html +++ /dev/null @@ -1,51 +0,0 @@ - -
    -
    -
    -
    - - -
    - - - -
    -

    {{'sisalto' | kaanna}}

    -
    -
    - -

    - {{'tekstikappaleet' | kaanna}} ({{sisalto.lapset.length || 0}}) -
    - - -
    -

    - -

    - {{'muokkaa-tekstikappaleiden-rakennetta' | kaanna}} - - {{'avaa-sulje-kaikki' | kaanna}} -

    - -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/lukiokoulutus.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/lukiokoulutus.html deleted file mode 100644 index 8a538b6842..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/lukiokoulutus.html +++ /dev/null @@ -1,60 +0,0 @@ - -
    -
    -
    -
    - - -
    - - - -
    - -
    -

    {{'opetuksen-sisallot' | kaanna}}

    -
    -
    - -

    - {{ 'tekstikappaleet' | kaanna }} ({{ peruste.sisalto.lapset.length || 0 }}) -
    - - - -
    -

    -
    -

    - {{'muokkaa-tekstikappaleiden-rakennetta' | kaanna}} - - {{ 'avaa-sulje-kaikki' | kaanna }} -

    -
    -
    - - -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/muodostumissaannot.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/muodostumissaannot.html deleted file mode 100644 index 013f895e88..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/muodostumissaannot.html +++ /dev/null @@ -1,47 +0,0 @@ - - -
    -
    - - - -
    -
    -
    - -
    -
    - -
    -
    - -

    - {{rakenne.muodostumisOtsikko.nimi | kaanna}} - -

    -

    -

    -
    - -
    - -
    -
    - -
    -
    - - - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/opas.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/opas.html deleted file mode 100644 index 716870874d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/opas.html +++ /dev/null @@ -1,54 +0,0 @@ - -
    -
    -
    -
    -
    - - -
    - - - -
    - -

    - - -
    - - -
    -

    -
    -

    - {{'muokkaa-tekstikappaleiden-rakennetta' | kaanna}} - - {{ 'avaa-sulje-kaikki' | kaanna }} - -

    -
    -
    - -
    - -
    -
    -
    - diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/osaalue.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/osaalue.html deleted file mode 100644 index 0b0a734916..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/osaalue.html +++ /dev/null @@ -1,18 +0,0 @@ - - -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/osalistaus.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/osalistaus.html deleted file mode 100644 index 22a2ed6d95..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/osalistaus.html +++ /dev/null @@ -1,12 +0,0 @@ - -
    -
    -
    - -
    -

    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/perusopetus.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/perusopetus.html deleted file mode 100644 index 3b2730bf9c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/perusopetus.html +++ /dev/null @@ -1,60 +0,0 @@ - -
    -
    -
    -
    - - -
    - - - -
    - -
    -

    {{'opetuksen-sisallot' | kaanna}}

    -
    -
    - -

    - {{'tekstikappaleet' | kaanna}} ({{peruste.sisalto.lapset.length}}) -
    - - - -
    -

    -
    -

    - {{'muokkaa-tekstikappaleiden-rakennetta' | kaanna}} - - {{'avaa-sulje-kaikki' | kaanna}} - -

    -
    -
    - -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/peruste.pug b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/peruste.pug deleted file mode 100644 index 7036100ce1..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/peruste.pug +++ /dev/null @@ -1,388 +0,0 @@ -// Copyright (c) 2013 The Finnish Board of Education - Opetushallitus -// -// This program is free software: Licensed under the EUPL, Version 1.1 or - as -// soon as they will be approved by the European Commission - subsequent versions -// of the EUPL (the "Licence"); -// -// You may not use this work except in compliance with the Licence. -// You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// European Union Public Licence for more details. - - -mixin kvliiteKenttaString(nimi, kentta, muokattava) - .panel.panel-default.panel-clean - .panel-heading - h4(kaanna=nimi) - .panel-body(ng-if='kvliitePeriytynyt') - p(ng-bind-html='peruste.kvliite.' + kentta + ' | kaanna | unsafe') - .panel-body(ng-if='!kvliitePeriytynyt') - input.form-control(ng-show='editEnabled', ng-model='editablePeruste.kvliite.' + kentta) - p(ng-hide='editEnabled' ng-bind="editablePeruste.kvliite." + kentta + " | kaanna") - - -mixin kvliiteKentta(nimi, kentta, muokattava) - - muokattava = muokattava || 'false' - .panel.panel-default.panel-clean - .panel-heading - h4(kaanna=nimi) - .panel-body(ng-if='kvliitePeriytynyt && !' + muokattava) - p(ng-bind-html='peruste.kvliite.' + kentta + ' | kaanna | unsafe') - .panel-body(ng-if='!kvliitePeriytynyt || ' + muokattava) - div(ckeditor ng-if='editEnabled', slocalized ng-model='editablePeruste.kvliite.' + kentta) - p(ng-hide='editEnabled', ng-bind-html='editablePeruste.kvliite.' + kentta + '| kaanna | unsafe') - - -mixin asteikonNimi(asteikko) - span(ng-repeat="taso in " + asteikko + ".osaamistasot") - span(ng-bind="taso.otsikko | kaanna") - span(ng-if="!$last" style="margin: 0 3px 0 3px;") / - - -mixin kvliite() - div(ng-show='isAmmatillinen && $$showingKvliite') - h3(kaanna="'tutkinnon-suorittaneen-ammatillinen-osaaminen'") - .panel.panel-default.panel-clean(ng-repeat='(st, sisalto) in kvliite.muodostumisenKuvaus') - .panel-heading - h4 - span(ng-bind="'tutkinnon-muodostuminen' | kaanna") - span(ng-if="useampiSuoritustapa") - | ( - span(ng-bind='st | kaanna') - | ) - .panel-body - p(ng-bind-html='sisalto | kaanna | unsafe ') - - h3(kaanna="'tutkinnon-virallinen-asema'") - +kvliiteKentta('tutkintotodistuksen-antaja', 'tutkintotodistuksenAntaja', 'true') - +kvliiteKentta('tutkinnosta-paattava-viranomainen', 'tutkinnostaPaattavaViranomainen', 'true') - - .panel.panel-default.panel-clean - .panel-heading - h4(kaanna="'tutkinnon-taso'") - .panel-body - ul - li(ng-repeat="taso in kvliite.tasot" ng-bind="taso.nimi | kaanna") - - .panel.panel-default.panel-clean - .panel-heading - h4(kaanna="'arvosana-asteikko'") - .panel-body(ng-if='kvliitePeriytynyt') - div.alert.alert-info(ng-show="!peruste.kvliite._arvosanaAsteikko" ng-bind="'arvosana-asteikkoa-ei-valittu' | kaanna") - div(ng-show="peruste.kvliite._arvosanaAsteikko") - +asteikonNimi("arviointiasteikotMap[peruste.kvliite._arvosanaAsteikko]") - .panel-body(ng-if='!kvliitePeriytynyt') - div.alert.alert-info(ng-show="!editEnabled && !editablePeruste.kvliite._arvosanaAsteikko" ng-bind="'arvosana-asteikkoa-ei-valittu' | kaanna") - div(ng-show="!editEnabled && peruste.kvliite._arvosanaAsteikko") - +asteikonNimi("arviointiasteikotMap[peruste.kvliite._arvosanaAsteikko]") - div(ng-show="editEnabled") - div(ng-repeat="asteikko in arviointiasteikot") - .checkbox - label - input(type="radio" name="valittuAsteikko" ng-model="editablePeruste.kvliite._arvosanaAsteikko" value="{{ asteikko.id }}") - +asteikonNimi("asteikko") - +kvliiteKentta('jatkoopinto-kelpoisuus', 'jatkoopintoKelpoisuus') - +kvliiteKentta('kansainvaliset-sopimukset', 'kansainvalisetSopimukset') - +kvliiteKentta('saadosperusta', 'saadosPerusta') - - h3(kaanna="'tutkintotodistuksen-saaminen'") - +kvliiteKentta('tutkintotodistuksen-saaminen', 'tutkintotodistuksenSaaminen') - +kvliiteKentta('pohjakoulutusvaatimukset', 'pohjakoulutusvaatimukset') - +kvliiteKentta('lisatietoja', 'lisatietoja') - -.row - .col-md-12 - .action-buttons - button.floater.btn.btn-default(ng-if='voiMuokata()', ng-hide='editEnabled', ng-click='muokkaa()', icon-role='edit', kaanna="'muokkaa'", oikeustarkastelu="{ target: 'perusteenmetatiedot', permission: 'muokkaus' }") - h1(kaanna="$$kaannokset['projektin-tiedot']") - .clearfix - form.form-horizontal(name='perusteForm', role='form', novalidate='', ng-submit='void(0)') - div(ng-form='projektinPerusteForm') - .panel.panel-default.panel-clean - .panel-heading - h3.panel-title(kaanna="'nimi'") - .panel-body - input.form-control(ng-show='editEnabled', ng-model='editablePeruste.nimi', slocalized='') - p(ng-hide='editEnabled') - span {{ peruste.nimi | kaanna }} - lang-validator(kentta="peruste.nimi") - .panel.panel-default.panel-clean(ng-show="!isOpas") - .panel-heading - h3.panel-title(kaanna="'maarayksen-diaarinumero'") - .panel-body - input.form-control(ng-show='editEnabled', ng-model='editablePeruste.diaarinumero') - p(ng-hide='editEnabled') {{ peruste.diaarinumero | kaanna }} - .panel.panel-default.panel-clean - .panel-heading - h3.panel-title(kaanna='') voimassaolo - .panel-body - div(ng-if='editEnabled') - formfield(model='editablePeruste', model-var='voimassaoloAlkaa', label='voimaantulo-pvm', type='date', placeholder='anna-voimaantulo-pvm') - formfield(model='editablePeruste', model-var='voimassaoloLoppuu', label='voimassaolo-paattymispvm', type='date', placeholder='anna-voimaantulo-loppu-pvm') - table.aligned(ng-show='!editEnabled') - tr - th(kaanna='') voimassaolo-alkamispvm - td(pvm='peruste.voimassaoloAlkaa') - tr - th(kaanna='') voimassaolo-paattymispvm - td(pvm='peruste.voimassaoloLoppuu') - .panel.panel-default.panel-clean - .panel-heading - h3.panel-title(kaanna="'koulutustyyppi-label'") - .panel-body - div(ng-show='editEnabled') - select.form-control(ng-model='editablePeruste.koulutustyyppi' - ng-required='true' - ng-options='kt as (kt | kaanna) for kt in koulutustyypit') - div(ng-hide='editEnabled') - span {{ peruste.koulutustyyppi | kaanna }} - div(ng-show='isAmmatillinen') - +kvliiteKentta('suorittaneen-osaaminen', 'suorittaneenOsaaminen', 'true') - +kvliiteKentta('tyotehtavat-joissa-voi-toimia', 'tyotehtavatJoissaVoiToimia', 'true') - ul.nav.nav-tabs.nav-justified(ng-show='isAmmatillinen') - li(ng-class='{ active: !$$showingKvliite }', ng-click='$$showingKvliite = !$$showingKvliite') - a.action-link(ng-bind="'tiedot' | kaanna") - li(ng-class='{ active: $$showingKvliite }', ng-click='$$showingKvliite = !$$showingKvliite') - a.action-link(ng-bind="'kvliite' | kaanna") - br - +kvliite() - div(ng-show='!$$showingKvliite') - .panel.panel-default.panel-clean(ng-show="!isOpas") - .panel-heading - h3.panel-title(kaanna="'korvattavat-perusteet'") - .panel-body - small-spinner(ng-show='ladataanKorvattavia') - p(ng-show='editablePeruste.korvattavatDiaarinumerot.length === 0') {{'ei-korvattavia-perusteita'| kaanna}} - table.table(ng-hide='ladataanKorvattavia || editablePeruste.korvattavatDiaarinumerot.length === 0') - tr - th {{'diaarinumero-label'| kaanna}} - th {{'perusteen-nimi'| kaanna}} - th(ng-show='editEnabled') - tr(ng-repeat='korvattava in editablePeruste.korvattavatDiaarinumerot') - td {{korvattava}} - td(ng-show="korvattavaDiaariNimiMap[korvattava] === 'korvattavaa-ei-loydy-jarjestelmasta'") - em {{korvattavaDiaariNimiMap[korvattava]| kaanna}} - td(ng-hide="korvattavaDiaariNimiMap[korvattava] === 'korvattavaa-ei-loydy-jarjestelmasta'") {{korvattavaDiaariNimiMap[korvattava]| kaanna}} - td(ng-show='editEnabled') - button.btn.btn-default.btn-sm(type='button', ng-click='poistaKorvattavaDiaari(korvattava)', icon-role='remove') {{'poista'| kaanna}} - .row(ng-show='editEnabled') - .col-xs-6 - .input-group - input.form-control(type='text', ng-model='uusiKorvattavaDiaari') - | - span.input-group-btn - button.btn.btn-default.btn-sm(ng-disabled='!uusiKorvattavaDiaari', type='button', ng-click='lisaaKorvattavaDiaari(uusiKorvattavaDiaari)', icon-role='add') {{'ok'| kaanna}} - .panel.panel-default.panel-clean - .panel-heading - h3.panel-title(kaanna="$$kaannokset['perusteen-kielet']") - .panel-body - span.inline-alert(ng-show='editEnabled && editablePeruste.kielet.length === 0', kaanna="'lisaa-ainakin-yksi-kieli'") - span.perusteen-kieli(ng-repeat='kieli in editablePeruste.kielet | orderBy:kieliOrder') - span(kaanna='kieli') - a.action-link.perusteen-kieli-poisto(ng-click='poistaKieli(kieli)', ng-if='editEnabled', icon-role='remove') - span(ng-if='editEnabled && !kaikkiKieletValittu()') - span.dropdown(uib-dropdown="") - a.dropdown-toggle.action-link(ng-if='editEnabled', data-toggle='dropdown', uib-dropdown-toggle="") - span(kaanna="'lisaa-kieli'") - span.caret - ul.dropdown-menu(role='menu', aria-labelledby='dropdownMenu1') - li(ng-if='kieli.available', ng-repeat='kieli in valittavatKielet', role='presentation') - a.action-link(ng-click='lisaaKieli(kieli.koodi)', role='menuitem', tabindex='-1', ng-bind='kieli.koodi | kaanna') - .panel.panel-default.panel-clean(ng-show="!isOpas") - .panel-heading - h3.panel-title(kaanna="'peruste-koulutukset'") - .panel-body - p(ng-show='editablePeruste.koulutukset.length === 0 && !editEnabled', kaanna="'ei-koulutuksia'") - .koulutukset(ng-show='editablePeruste.koulutukset.length> 0') - .koulutus(ng-repeat='koulutus in editablePeruste.koulutukset') - .poisto(ng-if='editEnabled') - button.btn.btn-default.btn-xs(type='button', icon-role='remove', ng-click='poistaKoulutus(koulutus.koulutuskoodiArvo)', kaanna='poista') - table.aligned - tr - th {{'koulutuksen-nimi'| kaanna}} - td {{koulutus.nimi| kaanna}} - tr - th {{'perusteen-koodi'| kaanna}} - td {{koulutus.koulutuskoodiArvo}} - div - button.btn.btn-default(type='button', ng-if='editEnabled', icon-role='add', ng-click='avaaKoodistoModaali()', ng-disabled='hakemassa', kaanna='lisaa-koulutus') - .panel.panel-default.panel-clean(ng-show="!isOpas && isAmmatillinen") - .panel-heading - h3.panel-title(kaanna="'osaamisalat'") - .panel-body - table.table.table-striped(ng-show='editablePeruste.osaamisalat.length> 0') - tr - th(kaanna="'nimi'") - th(kaanna="'koodi'") - th(ng-if='editEnabled') - tr(ng-repeat='oa in editablePeruste.osaamisalat') - td(kaanna='oa.nimi') - td(ng-bind='oa.arvo') - td(ng-if='editEnabled') - button.btn.btn-danger(type='button', icon-role='remove', ng-click='Osaamisala.poista(oa)', kaanna="'poista'") - | - button.btn.btn-default(type='button', ng-show='editEnabled', icon-role='add', ng-click='Osaamisala.lisaa()', kaanna="'hae-koodistosta'") - .panel.panel-default.panel-clean(ng-if='$perusteellaTutkintonimikkeet' ng-show="!isOpas") - .panel-heading - h3.panel-title(kaanna='') tutkintonimikkeet - .panel-body - table.table.table-striped(ng-show='koodisto.length> 0') - thead - tr - th(kaanna='osaamisala') - th(kaanna='tutkintonimike') - th(kaanna='tutkinnonosa') - th(ng-show='editEnabled') - tbody - tr(ng-repeat='koodi in koodisto') - td - span(ng-show='koodi.osaamisalaArvo') {{ koodi.$osaamisalaNimi | kaanna }} ({{ koodi.osaamisalaArvo}}) - td {{ koodi.$tutkintonimikeNimi | kaanna }} ({{ koodi.tutkintonimikeArvo}}) - td - span(ng-show='koodi.tutkinnonOsaArvo') {{ koodi.$tutkinnonOsaNimi | kaanna }} ({{ koodi.tutkinnonOsaArvo}}) - td(ng-show='editEnabled') - button.btn.btn-xs.btn-default(type='button', ng-click='poistaTutkintonimike(koodi)', kaanna='poista') - div(ng-hide='koodisto.length> 0') - p(kaanna='et-ole-lisannyt-viela-tutkintonimikkeita') - div(ng-show='editEnabled') - button.btn.btn-default(type='button', ng-disabled='!koodisto.$resolved', ng-click='lisaaNimike()', icon-role='add', kaanna='lisaa-nimike') - .panel.panel-default.panel-clean(ng-show='editablePeruste.voimassaoloLoppuu && !isOpas') - .panel-heading - h3.panel-title(kaanna="'siirtyman-paattyminen'") - .panel-body - div(ng-if='editEnabled') - formfield(model='editablePeruste', model-var='siirtymaPaattyy', type='date', placeholder="{{'anna-siirtyman-paattymis-pvm' | kaanna}}") - .aligned(ng-show='!editEnabled', pvm='peruste.siirtymaPaattyy') - p ({{'siirtyman-kuvaus' | kaanna}}) - .panel.panel-default.panel-clean(ng-show="!isOpas") - .panel-heading - h3.panel-title(kaanna='') maarayksen-paatospaivamaara - .panel-body - div(ng-if='editEnabled') - formfield(model='editablePeruste', model-var='paatospvm', label='päätöspvm-label', type='date', placeholder='anna-paatos-pvm') - table.aligned(ng-show='!editEnabled') - tr - th(kaanna='') päätöspvm-label - td(pvm='peruste.paatospvm') - .panel.panel-default.panel-clean(ng-show="!isOpas") - .panel-heading - h3.panel-title(kaanna='') maarayskirje - .panel-body - .form-group(ng-show='editEnabled') - ui-select(ng-model='editablePeruste.maarayskirje.liitteet' localized) - ui-select-match(placeholder="{{'liitetiedosto-valitse' | kaanna}}") {{$select.selected.nimi}} - ui-select-choices(repeat='liite in liitteet track by $index') - span(ng-bind-html='liite.nimi') - br - button.btn.btn-default(ng-disabled='editablePeruste.maarayskirje.liitteet === null' - ng-click='editablePeruste.maarayskirje.liitteet = null' - kaanna="'tyhjenna'") - - table.table.table-striped(ng-show='!editEnabled') - thead - tr - th.col-sm-4(kaanna='nimi') - th.col-sm-6 {{'sijainti' | kaanna}} - tbody - tr - td - p(ng-show="(peruste.maarayskirje.liitteet | kaanna).nimi") {{(peruste.maarayskirje.liitteet | kaanna).nimi}} - p(ng-show="!(peruste.maarayskirje.liitteet | kaanna).nimi" kaanna="'ei-asetettu'") - td - a(ng-show="(peruste.maarayskirje.liitteet | kaanna).id" - ng-href='{{liitteetUrl + (peruste.maarayskirje.liitteet | kaanna).id}}' - target="_blank" - rel="noopener noreferrer") {{liitteetUrl + (peruste.maarayskirje.liitteet | kaanna).id}} - p(ng-show="!(peruste.maarayskirje.liitteet | kaanna).id" kaanna="'ei-asetettu'") - - .panel.panel-default.panel-clean(ng-show="!isOpas && isAmmatillinen") - .panel-heading - h3.panel-title(ng-bind="'koulutusvienti' | kaanna") - .panel-body - div(ng-show="editEnabled") - .checkbox - label - input(type="checkbox" ng-model="editablePeruste.koulutusvienti") - span(ng-bind="'vain-koulutusvienti' | kaanna") - .aligned(ng-show="!editEnabled") - span(ng-show="peruste.koulutusvienti" ng-bind="'kyllä' | kaanna") - span(ng-hide="peruste.koulutusvienti" ng-bind="'ei' | kaanna") - .panel.panel-default.panel-clean(ng-show="!isOpas") - .panel-heading - h3.panel-title(kaanna='') muutosmaaraykset - .panel-body - table.table.table-striped - thead - tr - th.col-sm-4(kaanna='nimi') - th.col-sm-6 {{'sijainti' | kaanna}} - th(kaanna='toiminnot', ng-show='editEnabled') - tbody - tr(ng-repeat='muutosmaarays in editablePeruste.muutosmaaraykset', ng-show='editEnabled') - td - input.form-control.col-sm-12(ng-model='muutosmaarays.nimi', slocalized='') - td - ui-select(ng-model="muutosmaarays.liitteet" localized) - ui-select-match(placeholder="{{'liitetiedosto-valitse' | kaanna}}") {{$select.selected.nimi}} - ui-select-choices(repeat='liite in liitteet track by $index') {{liite.nimi}} - td(ng-show='editEnabled') - button.btn.btn-warning(type='button', ng-click='poistaMuutosmaarays(muutosmaarays)', kaanna='poista') - tr(ng-repeat='muutosmaarays in peruste.muutosmaaraykset', ng-show='!editEnabled') - td - p(ng-show='hasContent(muutosmaarays.nimi)') {{ muutosmaarays.nimi | kaanna }} - p(ng-show='!hasContent(muutosmaarays.nimi)', kaanna='ei-asetettu') - td - a(ng-show="(muutosmaarays.liitteet | kaanna).id" - ng-href='{{liitteetUrl + (muutosmaarays.liitteet | kaanna).id}}' - target="_blank" - rel="noopener noreferrer") {{liitteetUrl + (muutosmaarays.liitteet | kaanna).id}} - a(ng-show='!(muutosmaarays.liitteet | kaanna).id && hasContent(muutosmaarays.url)', ng-href='{{ muutosmaarays.url | kaanna }}') {{ muutosmaarays.url | kaanna }} - p(ng-show='!(muutosmaarays.liitteet | kaanna).id && !hasContent(muutosmaarays.url)', kaanna='ei-asetettu') - tr(ng-show='peruste.muutosmaaraykset.length === 0 && !editEnabled') - td - p(kaanna='ei-asetettu') - td - p(kaanna='ei-asetettu') - button.btn.btn-default(type='button', ng-click='lisaaMuutosmaarays()', icon-role='add', kaanna='lisaa-muutosmaarays', ng-show='editEnabled') - - .panel.panel-default.panel-clean(ng-show="!isOpas") - .panel-heading - h3.panel-title(kaanna="'liitteet'") - .panel-body - p(kaanna="'liitteet-kuvaus'") - - table.table.table-striped - thead - tr - th.col-sm-6(kaanna='nimi') - th.col-sm-6(kaanna='luotu') - th(kaanna='toiminnot', ng-show='editEnabled') - tbody - tr(ng-repeat='liite in liitteet') - td - p(ng-show='hasContent(liite.nimi)') {{liite.nimi}} - p(ng-show='!hasContent(liite.nimi)', kaanna='ei-asetettu') - td - p {{liite.luotu | aikaleima}} - td(ng-show='editEnabled') - button.btn.btn-warning(type='button', ng-click='poistaLiite(liite)', kaanna='poista') - - div(ng-show='editEnabled') - p - strong(kaanna="'lataa-uusi-liitetiedosto'") - button#inputMuutosmaaraykset.btn.btn-default(ngf-multiple="true" - ng-model-rejected="liite.rejected" - ngf-accept="'.pdf'" - ngf-select - ng-model="liite.files") - span(kaanna="'lisaa-liitetiedosto'") - span   - button.btn.btn-primary(ng-disabled="!liite.files || liite.files.length !== 1" - ng-click="saveLiite('tuntematon')" - kaanna="'tallenna'") - p.success-message(ng-show='message') {{message | kaanna}} - p.error-message(ng-show='liite.rejected.length > 0') {{'liitetiedosto-pdf-hylatty' | kaanna}} - p.help-block {{liite.files[0].name}} diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/perustiedot.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/perustiedot.html deleted file mode 100644 index 333692542e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/perustiedot.html +++ /dev/null @@ -1,56 +0,0 @@ - -
    -
    - - - -
    - -
    -
    - - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - -
    -
    - - - - - - -
    {{projekti.nimi | kaanna}}
    {{$ryhmaNimi | kaanna}}
    {{projekti.diaarinumero}}
    {{projekti.yhteistyotaho}}
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/pikamenu.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/pikamenu.html deleted file mode 100644 index 2459b2e1ce..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/pikamenu.html +++ /dev/null @@ -1,26 +0,0 @@ - -

    -

    -
    - -
    -
    -
    -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/projektiryhma.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/projektiryhma.html deleted file mode 100644 index e8d98a4721..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/projektiryhma.html +++ /dev/null @@ -1,42 +0,0 @@ - -
    -
    -

    - {{ $$kaannokset['projekti-projektiryhma'] | kaanna }} - - - - - - - -

    - -
    - - -
    - - - -
    perustetyoryhman-tietojen-hakeminen-epaonnistui
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/sisalto.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/sisalto.html deleted file mode 100644 index 3a624c4e72..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/sisalto.html +++ /dev/null @@ -1,119 +0,0 @@ - -
    -
    -
    -

    -

    -
    - -
    - - - - -
    - - - -
    -
    -
    - -
    - -
    - - - -
    -
    - -
    - -

    - - () - - - - - - - - - - - -

    - -
    -

    - - - -
    - -
    - -
    - -
    - -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/termisto.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/termisto.html deleted file mode 100644 index 6d90cac349..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/termisto.html +++ /dev/null @@ -1,46 +0,0 @@ - - -
    - -
    - -

    {{'perusteen-termisto' | kaanna}} - -

    - -
    - -
    - -
    - -
    -
    - - - - - -
    -
    - -
    -
    -
    -
    - -

    - {{'loydetty-termien-maara'|kaanna}} - {{filtered.length}} / {{termisto.length}} - -

    - - - -

    - -
    - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tiedot.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tiedot.html deleted file mode 100644 index 6daa5c0d2e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tiedot.html +++ /dev/null @@ -1,86 +0,0 @@ - -
    -
    -
    -

    -

    -
    - -
    -
    - - -
    -
    -
    - {{'perusteprojektin-pohjaksi-otetaan-peruste' | kaanna}}: {{peruste.nimi | kaanna}} -
    {{'tutkintokoodi' | kaanna}}: {{peruste.tutkintokoodi | kaanna}}
    -
    {{'voimassaoloAlkaa' | kaanna}}: {{peruste.voimassaoloAlkaa | aikaleima}}
    -
    {{'voimassaoloLoppuu' | kaanna}}: {{peruste.voimassaoloLoppuu | aikaleima}}
    -
    {{'siirtymaPaattyy' | kaanna}}: {{peruste.siirtymaPaattyy | aikaleima}}
    -
    - -
    -
    -
    - -
    - -
    - -

    -

    - -
    -

    {{tab.otsikko | kaanna}}

    -
    - -
    -
    - -
    - - -
    -
    -
    -
    -

    -
    -
    -
    -
    - -
    -
    -
    - - -
    -
    -
    - -
    -
    -

    -
    -
    - -
    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/toimikausi.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/toimikausi.html deleted file mode 100644 index 929320e380..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/toimikausi.html +++ /dev/null @@ -1,73 +0,0 @@ - -
    -
    -
    -
    - -
    - - - - - - -

    - kelvoton-pvm -

    -

    - aloitus-ennen-lopetusta -

    -
    -
    -
    - -
    - - - - - - -

    - kelvoton-pvm -

    -

    - lopetus-aloituksen-jälkeen -

    -
    -
    -
    -
    -
    - - - - - - - - - -
    toimikausi-alku-label
    toimikausi-loppu-label
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tpoopetus.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tpoopetus.html deleted file mode 100644 index 3cda021f2c..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tpoopetus.html +++ /dev/null @@ -1,55 +0,0 @@ -
    - -
    -
    -
    - - -
    - - - -
    - -

    - {{ 'sisalto' | kaanna }} ({{ peruste.sisalto.lapset.length || 0}}) -
    - - - - -
    -

    -
    -

    - {{'muokkaa-tekstikappaleiden-rakennetta' | kaanna}} - - {{ 'avaa-sulje-kaikki' | kaanna }} -

    -
    -
    - -
    - -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tuonti.pug b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tuonti.pug deleted file mode 100644 index 2085362ff7..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tuonti.pug +++ /dev/null @@ -1,4 +0,0 @@ -div - h2(ng-bind="'perusteprojektin-tuonti' | kaanna") - input(id="tiedostohaku" type="file" accept="application/zip") - button.btn.btn-primary(ng-click="loadFile()", ng-bind="'laheta-peruste' | kaanna") diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tutkinnonosat.html b/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tutkinnonosat.html deleted file mode 100644 index e498dafbf7..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/perusteprojekti/tutkinnonosat.html +++ /dev/null @@ -1,41 +0,0 @@ - -
    -
    -
    -
    - - - -
    -

    {{ vateConverter('tutkinnonosat') | kaanna }} ({{ tutkinnonOsat.length }} {{ 'kpl' | kaanna }})

    -
    -
    -
    -
    -

    -
    - - - - - - - - - - - - - -
    -
    v
    -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/projektiTyoryhmanKayttajat.html b/eperusteet/eperusteet-app/yo/app/views/partials/projektiTyoryhmanKayttajat.html deleted file mode 100644 index e0469b8805..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/projektiTyoryhmanKayttajat.html +++ /dev/null @@ -1,18 +0,0 @@ - -
    -
    -

    -
    -
    -
    {{ nimikirjaimet(jasen.$nimi) }} -
    -
    -
    -

    {{ jasen.$nimi }}

    -

    {{ 'puhelin' | kaanna }}: {{ jasen.$puhelinnumero || '-' }}

    -

    {{ 'email' | kaanna }}: {{ jasen.$sahkoposti }}

    -
    -
    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/rajaus.html b/eperusteet/eperusteet-app/yo/app/views/partials/rajaus.html deleted file mode 100644 index 2c4963564d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/rajaus.html +++ /dev/null @@ -1,9 +0,0 @@ - -
    - - - -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/sisaltotagit.html b/eperusteet/eperusteet-app/yo/app/views/partials/sisaltotagit.html deleted file mode 100644 index c28efa5207..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/sisaltotagit.html +++ /dev/null @@ -1,6 +0,0 @@ - -
    -
      -
    • -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/sivunavi2.html b/eperusteet/eperusteet-app/yo/app/views/partials/sivunavi2.html deleted file mode 100644 index 8abf6861e1..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/sivunavi2.html +++ /dev/null @@ -1,70 +0,0 @@ - -
    -
    - -
    -
    -
    - -
    -
    -
    - -
    -
    {{header | kaanna}}
    -
    -
    -
    -
    - -
    -
    - -
    - {{section.title | kaanna}} - -
    - -
    -
    -
    - - -
    - - - -
    - -
    - -
    -
    -
    -

    {{ 'ei-tuloksia' | kaanna }}

    -
    -
    - -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/statusbadge.html b/eperusteet/eperusteet-app/yo/app/views/partials/statusbadge.html deleted file mode 100644 index 448a4a57db..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/statusbadge.html +++ /dev/null @@ -1,6 +0,0 @@ -
    -
    -
    -

    {{ 'tila-' + status | kaanna | uppercase }}

    -
    -
    diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/tree.html b/eperusteet/eperusteet-app/yo/app/views/partials/tree.html deleted file mode 100644 index fe5898b85e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/tree.html +++ /dev/null @@ -1,116 +0,0 @@ - -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -

    - -

    -
    -
    -
    -

    - -
    - -
    aloita-raahaamalla-puuhun
    -
    rakennetta-ei-vielä-muodostettu
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    -
    -
    -
    -
      -
    • -
      - - -
      -
      - -
      -
      -
      - {{ rakenne.tutkinnonOsaViitteet[osa._tutkinnonOsaViite].nimi | kaanna }} -
      - {{osa.nimi | kaanna:true}} ({{ osa.osat.length }} {{ 'osaa' | kaanna }}) - - uusi - -
      -
      -
      -
      -
      -
      -
      -
    • - -
    -
    -
    -
    -
    -
    -
    - -
    - -
      -
    • -
      -
      - - - -
      -
      - -
      -
      - {{ rakenne.tutkinnonOsaViitteet[osa._tutkinnonOsaViite].nimi | kaanna:true }} - - , {{ + rakenne.tutkinnonOsaViitteet[osa._tutkinnonOsaViite].laajuus || 0 }} - - - {{ + rakenne.tutkinnonOsaViitteet[osa._tutkinnonOsaViite].laajuusMaksimi }} - - {{ apumuuttujat.laajuusYksikko | kaanna }} - -
      -
      -
    • -
    -
    -
      -
      -
      -
      -
      -
      diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/valmaarviointi.html b/eperusteet/eperusteet-app/yo/app/views/partials/valmaarviointi.html deleted file mode 100644 index 49b6a61582..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/valmaarviointi.html +++ /dev/null @@ -1,133 +0,0 @@ - -
      - -
      - - - - - -
      - -
      - -
      - - - - - - - - - - - - - - - - - - - - - -
      - - - - - -
      - - -
      - - - - -
      -
      - - -
      - -
      - - - - - - - - - - - - - - - - - - -
      - - - -
      - - -
      -
      - -
      - -
      - -
      -

      {{valmaarviointi.kohde | kaanna}}

      -
        -
      • {{tavoite | kaanna}}
      • -
      -

      {{valmaarviointi.selite | kaanna}}

      -
      - -
      -

      {{tavoite.nimi | kaanna}}

      -

      {{tavoite.kohde | kaanna}}

      -
        -
      • {{kriteeri | kaanna}}
      • -
      -

      {{tavoite.selite | kaanna}}

      -
      -
      -
      - -
      -
      - -
      diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/valmiskaannos.html b/eperusteet/eperusteet-app/yo/app/views/partials/valmiskaannos.html deleted file mode 100644 index f4ee52f29e..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/valmiskaannos.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -
      -
      - -
      -
      - -
      -
      -
      diff --git a/eperusteet/eperusteet-app/yo/app/views/partials/vtosaalue.html b/eperusteet/eperusteet-app/yo/app/views/partials/vtosaalue.html deleted file mode 100644 index 2db17f6891..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/partials/vtosaalue.html +++ /dev/null @@ -1,82 +0,0 @@ - -
      - -
      - - - - - -
      - - - -
      - -
      -
      -
      - - - - - -
      -
      -
      - -
      - - -
      -
      -
      -
      - - -
      - - - - - -
      - -
      - -
      - -
      -
      -
      - - - - - -
      -
      -
      - -
      - - -
      -
      -
      -
      -
      diff --git a/eperusteet/eperusteet-app/yo/app/views/perusopetus.html b/eperusteet/eperusteet-app/yo/app/views/perusopetus.html deleted file mode 100644 index ac76467743..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/perusopetus.html +++ /dev/null @@ -1,123 +0,0 @@ - -
      -

      - -
      -
      - -
      - -
      -
      -
      -
      -
      -

      {{valittuTekstisisalto.nimi | kaanna}}

      - -
      - -
      -

      {{valittuVuosiluokkakokonaisuus.nimi | kaanna}}

      -
      -

      {{valittuVuosiluokkakokonaisuus.tehtava.otsikko | kaanna}}

      - -
      -
      -

      {{valittuVuosiluokkakokonaisuus.siirtymaEdellisesta.otsikko | kaanna}}

      - -
      -
      -

      {{valittuVuosiluokkakokonaisuus.siirtymaSeuraavaan.otsikko | kaanna}}

      - -
      -
      -

      {{valittuVuosiluokkakokonaisuus.laajaalainenOsaaminen.otsikko | kaanna}}

      - -
      -
      -

      -
      -

      {{osaamiset[osaaminen.laajaalainenOsaaminen].nimi | kaanna}}

      - -
      -
      -
      -

      {{valittuVuosiluokkakokonaisuus.paikallisestiPaatettavatAsiat.otsikko | kaanna}}

      - -
      -
      - -
      -

      - - -
      - -
      -
      -

      {{valittuOppiaine.oppiaine.tehtava.otsikko | kaanna}}

      - -
      - -
      -

      {{vuosiluokkakokonaisuudetMap[valittuOppiaine.vlks._vuosiluokkaKokonaisuus].nimi | kaanna}}

      -
      -
      - -
      -

      {{valittuOppiaine.vlks.tehtava.otsikko | kaanna}}

      - -
      - -
      -

      {{valittuOppiaine.vlks.ohjaus.otsikko | kaanna}}

      - -
      - -
      -

      {{valittuOppiaine.vlks.tyotavat.otsikko | kaanna}}

      - -
      - -
      -

      {{valittuOppiaine.vlks.sisaltoalueinfo.otsikko | kaanna}}

      - -
      - -
      -

      {{sa.nimi | kaanna}}

      - -
      - -
      -

      -
      -
      -
      -
      -
      -
      -
      -
      -
      diff --git a/eperusteet/eperusteet-app/yo/app/views/perusopetuslistaus.html b/eperusteet/eperusteet-app/yo/app/views/perusopetuslistaus.html deleted file mode 100644 index a971705001..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/perusopetuslistaus.html +++ /dev/null @@ -1,20 +0,0 @@ - -
      - - - - - - - - - - - - - - - - -
      {{ po.voimassaoloLoppuu | aikaleima }}
      -
      diff --git a/eperusteet/eperusteet-app/yo/app/views/perusteprojekti.html b/eperusteet/eperusteet-app/yo/app/views/perusteprojekti.html deleted file mode 100644 index 2ee19f07d6..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/perusteprojekti.html +++ /dev/null @@ -1,79 +0,0 @@ - -
      -
      -
      - - -
      -
      -
      - -

      {{projekti.nimi || ('perusteprojekti-nimi-placeholder' | kaanna)}}

      - - - - - - - - - - - - -
      {{ 'projekti-header-koulutustyyppi' | kaanna }}:{{peruste.toteutus || peruste.koulutustyyppi | kaanna}} -
      {{'projekti-header-koulutusala'| kaanna}}:{{koulutusalaNimi(peruste.koulutukset[0].koulutusalakoodi).nimi || 'perusteprojekti-koulutusala-placeholder' | kaanna}} -
      {{'projekti-header-paatosPvm'| kaanna}}:{{projekti.paatosPvm| date:'dd.MM.yyyy'}}
      -
      -
      - -
      -
        -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      -
      -
      -
      - -
      -
      -
      - -
      - -
      -
      -
      -
      -
      -
      diff --git a/eperusteet/eperusteet-app/yo/app/views/tiedote.html b/eperusteet/eperusteet-app/yo/app/views/tiedote.html deleted file mode 100644 index 078c959be8..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/tiedote.html +++ /dev/null @@ -1,15 +0,0 @@ - -
      -

      - -

      {{tiedote.otsikko | kaanna}}

      -
      -
      - : - -
      - {{ tiedote.nimi || tiedote.muokkaaja }}, {{tiedote.luotu | aikaleima}} - {{'tiedote-julkinen' | kaanna}} -
      -
      -
      diff --git a/eperusteet/eperusteet-app/yo/app/views/virhe.html b/eperusteet/eperusteet-app/yo/app/views/virhe.html deleted file mode 100644 index 951e47919d..0000000000 --- a/eperusteet/eperusteet-app/yo/app/views/virhe.html +++ /dev/null @@ -1,8 +0,0 @@ - -
      -

      virhe

      -

      {{ 'virhe-sivua-ei-löytynyt' | kaanna }}: {{ data.path }}

      -

      {{ 'virhe-tilan-vaihtamisessa' | kaanna }}: {{ data.state }}

      -

      {{ 'virhe-muu' | kaanna }}: {{ data.muu | kaanna }}

      - virhe-sivua-ei-löytynyt -
      diff --git a/eperusteet/eperusteet-app/yo/e2e/conf.ts b/eperusteet/eperusteet-app/yo/e2e/conf.ts deleted file mode 100644 index b79945d112..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/conf.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare var exports: any; - -exports.config = { - seleniumAddress: 'http://localhost:4444/wd/hub', - specs: ['e2e/result.js'], - jasmineNodeOpts: { - showColors: true - } -}; diff --git a/eperusteet/eperusteet-app/yo/e2e/e2e/generators.ts b/eperusteet/eperusteet-app/yo/e2e/e2e/generators.ts deleted file mode 100644 index c40f125f5a..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/e2e/generators.ts +++ /dev/null @@ -1,105 +0,0 @@ -namespace Actions { - export const save = () => { - return browser.sleep(1000) - .then(() => $(".edit-control-buttons > button[ng-click='save()']").click()) - .then(() => browser.sleep(1000)); - }; - - export const paanakymaan = () => element(by.css("ol.breadcrumb > li:nth-of-type(2) > a")) - .click() - .then(() => browser.sleep(1000)); - - export const cancel = () => element(by.css(".edit-control-buttons > button[ng-click='cancel()']")).click(); - - export const scrollTo = (el) => browser.executeScript("arguments[0].scrollIntoView()", el.getWebElement()); - - export const dragAndDrop = (what, to) => browser.actions().dragAndDrop(what, to).perform(); -} - -namespace PerusteHelpers { - export const randomize = (str) => str + " " + Math.random(); - - export const luoPerusteprojekti = (name: string, tyyppi: number) => { - element(by.partialLinkText("Hallinta")).click(); - element(by.partialButtonText("Luo uusi perusteprojekti")).click(); - $("[id^=projektin-nimi-label-]").sendKeys(randomize("Autogenerated - " + name)); - $("[id^=diaarinumero-label-]").sendKeys("Diaarinumero " + Math.random()); - $("select:first-of-type").click(); - browser.sleep(300).then(() => { }); - $("option:nth-of-type(" + tyyppi + ")").click(); - element(by.partialButtonText("Hae ryhmä")).click(); - browser.sleep(3000).then(() => { }); - element(by.partialLinkText("ePerusteet Arboristin at perusteprojekti")).click(); - browser.sleep(200).then(() => { }); - element(by.partialButtonText("Luo projekti")).click(); - return browser.sleep(1000); - } - - export const muokkaaPerusteenTiedot = (nimi = "Nimi -", diaari = "Diaari - ", voimaantulo = "1.1.2238") => browser.sleep(1000) - .then(() => element(by.partialLinkText("Perusteen tiedot")).click()) - .then(() => element(by.partialButtonText("Muokkaa")).click()) - .then(() => $("input[ng-model='editablePeruste.nimi']").clear()) - .then(() => $("input[ng-model='editablePeruste.diaarinumero']").clear()) - .then(() => $("input[ng-model='editablePeruste.nimi']").sendKeys(randomize(nimi))) - .then(() => $("input[ng-model='editablePeruste.diaarinumero']").sendKeys(randomize(diaari))) - .then(() => $("input[dateformatvalidator][placeholder='Anna voimaantulopäivämäärä']").sendKeys(voimaantulo)) - - export const asetaJulkaisuvalmius = () => browser.sleep(1000) - .then(() => element(by.partialLinkText("Perusteen tiedot")).click()) - .then(() => element(by.partialButtonText("Muokkaa")).click()) - .then(() => $("input[ng-model='editablePeruste.nimi']").sendKeys(randomize("Nimi - "))) - .then(() => $("input[ng-model='editablePeruste.diaarinumero']").sendKeys(randomize("Diaari - "))) - .then(() => element(by.css("span.perusteen-kieli:nth-of-type(3) > a")).click()) - .then(() => $("input[dateformatvalidator][placeholder='Anna voimaantulopäivämäärä']").sendKeys("1.1.2238")) - .then(Actions.save) - .then(Actions.paanakymaan); - - // Täytyy olla projektin päänäkymässä - export const lisaaTutkinnonOsa = (name, koodi = "104646") => browser.sleep(2000) - .then(() => element(by.partialLinkText("Tutkinnon osat")).click()) - .then(() => element(by.partialButtonText("Lisää tutkinnon osa")).click()) - .then(() => browser.sleep(1000)) - .then(() => $("input[ng-model='editableTutkinnonOsaViite.tutkinnonOsa.nimi']").sendKeys(randomize(name))) - .then(() => element(by.partialButtonText("Hae koodistosta"))) - .then(() => browser.sleep(3000)) - .then(() => element(by.partialLinkText(koodi))) - .then(Actions.save) - .then(Actions.paanakymaan); - - // Projektin päänäkymä - export const lisaaTekstikappale = (name = "foo", sisalto = "bar") => browser.sleep(2000) - .then(() => element(by.cssContainingText(".buttons > button[ng-click='createSisalto()']", "Lisää tekstikappale")).click()) - .then(() => browser.sleep(1000)) - .then(() => $("h3[ng-model='object.nimi']").sendKeys(randomize(name))) - .then(() => $("div[ng-model='object.teksti']").sendKeys(randomize(sisalto))) - .then(Actions.save) - .then(Actions.paanakymaan); - - export const vaihdaTila = (to) => browser.sleep(200) - .then(() => $(".statusbadge").click()) - .then(() => $("li > .statusbadge." + to).click()) - .then(() => browser.sleep(1000)) - .then(() => $(".modal-footer > button[ng-click='valitse()']").click()) - .then(() => browser.sleep(1000)) - .then(() => $(".modal-footer > button[ng-click='ok()']").click()) - .then(() => browser.sleep(1000)) - - // FIXME - export const dragTutkinnonOsa = () => browser.sleep(200) - .then(() => element(by.partialLinkText("Tutkinnon muodostuminen")).click()) - .then(() => element(by.cssContainingText(".floater > button[ng-click='muokkaa()']", "Muokkaa")).click()) - .then(() => browser.sleep(1000)) - .then(() => { - const item = element(by.css("ul[ng-model='uniikit'] > li:nth-of-type(2)")); - const list = element(by.css("ul#tree-sortable > li")); - const targetRect = list.getWebElement().getLocation().then(loc => { - browser.actions().mouseDown(item.getWebElement()).perform(); - browser.actions().mouseMove(loc).perform(); - browser.actions().mouseUp().perform(); - }); - return browser.waitForAngular(); - }) - .then(() => browser.sleep(2000)) - .then(() => browser.waitForAngular()); - -} diff --git a/eperusteet/eperusteet-app/yo/e2e/e2e/perusteprojektit.ts b/eperusteet/eperusteet-app/yo/e2e/e2e/perusteprojektit.ts deleted file mode 100644 index e6d2127581..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/e2e/perusteprojektit.ts +++ /dev/null @@ -1,49 +0,0 @@ -describe("Perusteprojekti", () => { - it("Kirjautuminen hallinnalla", () => { - return browser.get("http://test:test@localhost:9000/") - .then(() => browser.get("http://localhost:9000/")); - }); - - it("Luonti - Ammatillinen", () => { - return PerusteHelpers.luoPerusteprojekti("ammatillinen", 2); - }); - - it("Luonti - Julkaisukuntoon", () => { - return PerusteHelpers.asetaJulkaisuvalmius(); - }); - - it("Luonti - Tekstikappaleen lisääminen", () => { - return PerusteHelpers.lisaaTekstikappale("foobar", "Hello world"); - }); - - it("Luonti - Tutkinnon osan lisääminen", () => { - return PerusteHelpers.lisaaTutkinnonOsa("Testi tutkinnon osa"); - }); - -}); - -describe("Perusteprojektin julkaisu", () => { - it("Kirjautuminen hallinnalla", () => { - browser.get("http://localhost:9000/"); - return browser.waitForAngular(); - }); - - it("Luonti", () => PerusteHelpers.luoPerusteprojekti("ammatillinen", 2)); - - it("Julkaisu", () => PerusteHelpers.asetaJulkaisuvalmius() - .then(() => PerusteHelpers.vaihdaTila("viimeistely")) - .then(() => PerusteHelpers.vaihdaTila("valmis")) - .then(() => PerusteHelpers.vaihdaTila("julkaistu"))); - - it("Julkaistun perustietojen muokkaus", () => PerusteHelpers.muokkaaPerusteenTiedot("Uusi nimi", "uusidiaari", "10.2.2238")); - - it("Julkaisusta luonnokseen", () => PerusteHelpers.vaihdaTila("luonnos")); - - it("Julkaistu -> luonnos perustietojen muokkaus", () => PerusteHelpers.muokkaaPerusteenTiedot("Vanha nimi", "vanhadiaari", "1.2.2238")); - - it("Julkaisu uudestaan", () => PerusteHelpers.asetaJulkaisuvalmius() - .then(() => PerusteHelpers.vaihdaTila("viimeistely")) - .then(() => PerusteHelpers.vaihdaTila("valmis")) - .then(() => PerusteHelpers.vaihdaTila("julkaistu"))); - -}); diff --git a/eperusteet/eperusteet-app/yo/e2e/helpers.ts b/eperusteet/eperusteet-app/yo/e2e/helpers.ts deleted file mode 100644 index 2dd6b0907c..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/helpers.ts +++ /dev/null @@ -1,13 +0,0 @@ -module Helper { - export const allEnabled = (x) => { - element.all(x).each((el) => { - expect(el.isEnabled()).toBeTruthy(); - }); - }; - - export const allDisabled = (x) => { - element.all(x).each((el) => { - expect(el.isEnabled()).toBeFalsy(); - }); - }; -} diff --git a/eperusteet/eperusteet-app/yo/e2e/initProtractor.sh b/eperusteet/eperusteet-app/yo/e2e/initProtractor.sh deleted file mode 100755 index 7b6809ae10..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/initProtractor.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -protractor="./node_modules/protractor" -[[ ! -d $protractor ]] && npm install protractor -tsc conf.ts -tsc --outFile e2e/result.js -$protractor/bin/webdriver-manager update --standalone -$protractor/bin/webdriver-manager start 2> /dev/null & -sleep 2 -$protractor/bin/protractor conf.js -kill $(lsof -i :4444|awk '{print $2}'|tail -n 1) -wait diff --git a/eperusteet/eperusteet-app/yo/e2e/package.json b/eperusteet/eperusteet-app/yo/e2e/package.json deleted file mode 100644 index 1c23fe79d5..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "eperusteet-amosaa", - "version": "0.0.0", - "main": "index.js", - "description": "", - "private": "true", - "devDependencies": { - "gulp": "3.9.0", - "gulp-autoprefixer": "3.1.0", - "gulp-concat": "2.6.0", - "gulp-connect": "2.2.0", - "gulp-connect-proxy": "0.3.1", - "gulp-jade": "1.1.0", - "gulp-preprocess": "2.0.0", - "gulp-sass": "2.0.4", - "gulp-shell": "0.5.1", - "gulp-tsc": "1.1.4", - "gulp-tslint": "4.2.1", - "gulp-watch": "4.3.5", - "jquery": "3.3.1", - "lazy.js": "0.4.2", - "lodash": "3.0.0", - "proxy-middleware": "0.15.0", - "restangular": "1.5.1", - "tslint": "3.2.0" - }, - "dependencies": { - "angular-spinner": "0.8.0", - "angular-ui-bootstrap": "0.14.3" - } -} diff --git a/eperusteet/eperusteet-app/yo/e2e/protractor.sh b/eperusteet/eperusteet-app/yo/e2e/protractor.sh deleted file mode 100755 index c5918a64c8..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/protractor.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -protractor="./node_modules/protractor" -tsc conf.ts -tsc --outFile e2e/result.js -$protractor/bin/webdriver-manager start 2> /dev/null & -sleep 2 -$protractor/bin/protractor conf.js -kill $(lsof -i :4444|awk '{print $2}'|tail -n 1) -wait diff --git a/eperusteet/eperusteet-app/yo/e2e/tsconfig.json b/eperusteet/eperusteet-app/yo/e2e/tsconfig.json deleted file mode 100644 index 42f51db42a..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "module": "amd" - }, - "files": [ - "typings/tsd.d.ts", - "e2e/generators.ts", - "helpers.ts", - "conf.ts", - "e2e/perusteprojektit.ts" - ] -} diff --git a/eperusteet/eperusteet-app/yo/e2e/tsd.json b/eperusteet/eperusteet-app/yo/e2e/tsd.json deleted file mode 100644 index 9b8537db29..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/tsd.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": "v4", - "repo": "borisyankov/DefinitelyTyped", - "ref": "master", - "path": "typings", - "bundle": "typings/tsd.d.ts", - "installed": { - "angular-protractor/angular-protractor.d.ts": { - "commit": "a9680ac2efd3add0d38cd0331f30ad497d9dd1e0" - }, - "selenium-webdriver/selenium-webdriver.d.ts": { - "commit": "a9680ac2efd3add0d38cd0331f30ad497d9dd1e0" - }, - "jasmine/jasmine.d.ts": { - "commit": "a9680ac2efd3add0d38cd0331f30ad497d9dd1e0" - }, - "node/node.d.ts": { - "commit": "a9680ac2efd3add0d38cd0331f30ad497d9dd1e0" - } - } -} diff --git a/eperusteet/eperusteet-app/yo/e2e/typings.d.ts b/eperusteet/eperusteet-app/yo/e2e/typings.d.ts deleted file mode 100644 index a2939c2e87..0000000000 --- a/eperusteet/eperusteet-app/yo/e2e/typings.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/// -/// -/// -/// diff --git a/eperusteet/eperusteet-app/yo/jest.config.js b/eperusteet/eperusteet-app/yo/jest.config.js deleted file mode 100644 index 0c14efe078..0000000000 --- a/eperusteet/eperusteet-app/yo/jest.config.js +++ /dev/null @@ -1,36 +0,0 @@ -module.exports = { - globals: { - "ts-jest": { - useBabelrc: false - }, - __TRANSFORM_HTML__: true - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json"], - coverageReporters: ["json", "text"], - coveragePathIgnorePatterns: [ - "/node_modules/", - "/e2e", - "/dist/", - "/etc/", - "/node/", - "/typings/", - "/test/", - "/coverage/", - "/ckeditor-plugins/" - ], - setupFiles: ["/app/testsetup.ts"], - moduleNameMapper: { - "^app/(.*)": "/app/$1", - "^scripts/(.*)": "/app/scripts/$1", - "^views/(.*)": "/app/views/$1", - "^styles/(.*)": "/app/styles/$1", - "^images/(.*)": "/app/images/$1" - }, - testPathIgnorePatterns: ["/node_modules/"], - watchPathIgnorePatterns: ["/node_modules/"], - testMatch: ["/app/**/__tests__/**/*.ts?(x)", "/app/**/?(*.)(spec|test).ts?(x)"], - transform: { - "^.+\\.(js|ts|html)$": "/node_modules/ts-jest/preprocessor.js", - "^.+\\.(jade|pug)$": "/node_modules/pug-jest" - } -}; diff --git a/eperusteet/eperusteet-app/yo/karma-e2e.conf.js b/eperusteet/eperusteet-app/yo/karma-e2e.conf.js deleted file mode 100644 index fa01484a0a..0000000000 --- a/eperusteet/eperusteet-app/yo/karma-e2e.conf.js +++ /dev/null @@ -1,54 +0,0 @@ -// Karma configuration -// http://karma-runner.github.io/0.10/config/configuration-file.html - -module.exports = function(config) { - config.set({ - // base path, that will be used to resolve files and exclude - basePath: '', - - // testing framework to use (jasmine/mocha/qunit/...) - frameworks: ['ng-scenario'], - - // list of files / patterns to load in the browser - files: [ - 'test/e2e/**/*.js' - ], - - // list of files / patterns to exclude - exclude: [], - - // web server port - port: 8080, - - // level of logging - // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: false, - - - // Start these browsers, currently available: - // - Chrome - // - ChromeCanary - // - Firefox - // - Opera - // - Safari (only Mac) - // - PhantomJS - // - IE (only Windows) - browsers: ['Chrome'], - - - // Continuous Integration mode - // if true, it capture browsers, run tests and exit - singleRun: false - - // Uncomment the following lines if you are using grunt's server to run the tests - // proxies: { - // '/': 'http://localhost:9000/' - // }, - // URL root prevent conflicts with the site root - // urlRoot: '_karma_' - }); -}; diff --git a/eperusteet/eperusteet-app/yo/karma.conf.js b/eperusteet/eperusteet-app/yo/karma.conf.js deleted file mode 100644 index 296cb1b8da..0000000000 --- a/eperusteet/eperusteet-app/yo/karma.conf.js +++ /dev/null @@ -1,93 +0,0 @@ -// Karma configuration -// http://karma-runner.github.io/0.10/config/configuration-file.html - -module.exports = function(config) { - config.set({ - // base path, that will be used to resolve files and exclude - basePath: '', - - // testing framework to use (jasmine/mocha/qunit/...) - frameworks: ['jasmine'], - - // list of files / patterns to load in the browser - files: [ - 'app/bower_components/jquery/dist/jquery.js', - 'app/bower_components/jquery-ui/jquery-ui.js', - 'app/bower_components/angular/angular.js', - 'app/bower_components/angular-route/angular-route.js', - 'app/bower_components/angular-sanitize/angular-sanitize.js', - 'app/bower_components/angular-resource/angular-resource.js', - 'app/bower_components/angular-animate/angular-animate.js', - 'app/bower_components/angular-mocks/angular-mocks.js', - 'app/bower_components/angular-translate/angular-translate.js', - 'app/bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.js', - 'app/bower_components/angular-ui-utils/ui-utils.js', - 'app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.js', - 'app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.js', - 'app/bower_components/angular-ui-utils/ui-utils.js', - 'app/bower_components/angular-ui-sortable/src/sortable.js', - 'app/bower_components/angular-elastic/elastic.js', - 'app/bower_components/angular-ui-router/release/angular-ui-router.js', - 'app/bower_components/angular-ui-tree/dist/angular-ui-tree.min.js', - 'app/bower_components/eperusteet-frontend-utils/mathdisplay.js', - 'app/bower_components/eperusteet-frontend-utils/generictree.js', - 'app/bower_components/ng-file-upload/ng-file-upload.min.js', - 'app/bower_components/ng-file-upload/ng-file-upload-shim.min.js', - 'app/bower_components/ckeditor/ckeditor.js', - 'app/bower_components/lodash/lodash.js', - 'app/bower_components/momentjs/moment.js', - 'app/bower_components/angular-cache/dist/angular-cache.min.js', - 'app/bower_components/angular-ui-select/dist/select.min.js', - 'app/eperusteet-esitys/**/*.js', - 'app/eperusteet-esitys/**/*.html', - 'app/scripts/*.js', - 'app/scripts/**/*.js', - 'test/mock/**/*.js', - 'test/spec/**/*.js', - 'app/views/**/*.html' - ], - - // list of files / patterns to exclude - exclude: [], - - // web server port - port: 9002, - - // level of logging - // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: false, - - - // Start these browsers, currently available: - // - Chrome - // - ChromeCanary - // - Firefox - // - Opera - // - Safari (only Mac) - // - PhantomJS - // - IE (only Windows) - browsers: ['PhantomJS'], - - plugins: [ - 'karma-jasmine', - 'karma-phantomjs-launcher', - 'karma-ng-html2js-preprocessor' - ], - - preprocessors: { - 'app/**/*.html': ['ng-html2js'] - }, - - ngHtml2JsPreprocessor: { - stripPrefix: 'app/' - }, - - // Continuous Integration mode - // if true, it capture browsers, run tests and exit - singleRun: false - }); -}; diff --git a/eperusteet/eperusteet-app/yo/package-lock.json b/eperusteet/eperusteet-app/yo/package-lock.json deleted file mode 100644 index de947a7da2..0000000000 --- a/eperusteet/eperusteet-app/yo/package-lock.json +++ /dev/null @@ -1,14258 +0,0 @@ -{ - "name": "yo", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@types/angular": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/@types/angular/-/angular-1.6.6.tgz", - "integrity": "sha1-UAmn9YVC4zJcS1qPEsBsLdju3Tg=", - "dev": true, - "requires": { - "@types/jquery": "*" - } - }, - "@types/angular-ui-router": { - "version": "1.1.39", - "resolved": "https://registry.npmjs.org/@types/angular-ui-router/-/angular-ui-router-1.1.39.tgz", - "integrity": "sha512-j7lQBN8J3w/LG4TVGi268gnmCwM2jKcbUAJFI83RNS3bYAl2b1weWeqzIc2YZmf2Eyyn0NP2LAsgPdqJtte9TQ==", - "dev": true, - "requires": { - "@types/angular": "*" - } - }, - "@types/babel-types": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.4.tgz", - "integrity": "sha512-WiZhq3SVJHFRgRYLXvpf65XnV6ipVHhnNaNvE8yCimejrGglkg38kEj0JcizqwSHxmPSjcTlig/6JouxLGEhGw==", - "dev": true - }, - "@types/babylon": { - "version": "6.16.4", - "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.4.tgz", - "integrity": "sha512-8dZMcGPno3g7pJ/d0AyJERo+lXh9i1JhDuCUs+4lNIN9eUe5Yh6UCLrpgSEi05Ve2JMLauL2aozdvKwNL0px1Q==", - "dev": true, - "requires": { - "@types/babel-types": "*" - } - }, - "@types/file-saver": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.1.tgz", - "integrity": "sha512-g1QUuhYVVAamfCifK7oB7G3aIl4BbOyzDOqVyUfEr4tfBKrXfeH+M+Tg7HKCXSrbzxYdhyCP7z9WbKo0R2hBCw==", - "dev": true - }, - "@types/jest": { - "version": "23.3.7", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.3.7.tgz", - "integrity": "sha512-N0p6mHrS0RHC3A9hHN4QH1RM2fGSb2E8rt6ONEK5xKSnyKtn/JAhr1VritkCn6cdyDBephVB80THqJGWzK8FAw==", - "dev": true - }, - "@types/jquery": { - "version": "3.3.29", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.29.tgz", - "integrity": "sha512-FhJvBninYD36v3k6c+bVk1DSZwh7B5Dpb/Pyk3HKVsiohn0nhbefZZ+3JXbWQhFyt0MxSl2jRDdGQPHeOHFXrQ==", - "dev": true, - "requires": { - "@types/sizzle": "*" - } - }, - "@types/jqueryui": { - "version": "1.11.37", - "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.11.37.tgz", - "integrity": "sha512-aKT7dOhxYTTkLS43q5miBeuRpfyh916sgI7m/6EJJvJR6j36e5eRORONZyzD5twTLMdMw6uYR7vqhreIHps9tw==", - "dev": true, - "requires": { - "@types/jquery": "*" - } - }, - "@types/lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-74yMNWSfB4hOD7d2OyS6r34XXDY=", - "dev": true - }, - "@types/moment": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@types/moment/-/moment-2.13.0.tgz", - "integrity": "sha1-YE69GJvDvDShVIaJQE5hoqSqyJY=", - "dev": true, - "requires": { - "moment": "*" - } - }, - "@types/node": { - "version": "8.0.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.31.tgz", - "integrity": "sha512-R+LdMJHJQwRd/Ca0Nr5KnwbSWHxTD3DWz4ivqoPeNH+YPcuirMWK+Ti9Mx32jOecmPhHOCd+6CefU5e1eVq2Ew==", - "dev": true - }, - "@types/sizzle": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", - "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", - "dev": true - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" - }, - "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", - "dev": true, - "requires": { - "acorn": "^4.0.3" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } - } - }, - "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", - "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", - "dev": true - }, - "ajv": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", - "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, - "angular": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/angular/-/angular-1.6.6.tgz", - "integrity": "sha1-/Vo8+0N844LYVO4BEgeXl4Uny2Q=" - }, - "angular-animate": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.6.6.tgz", - "integrity": "sha1-aSVkexQaBA0kG/ElBA8aFQ/NinA=" - }, - "angular-cache": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/angular-cache/-/angular-cache-4.4.2.tgz", - "integrity": "sha1-BepewPdiFHF6skMI2ITqKGzkOeY=", - "requires": { - "cachefactory": "1.2.0" - } - }, - "angular-cookies": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/angular-cookies/-/angular-cookies-1.6.6.tgz", - "integrity": "sha1-MRZC2v28T/fNaSILiSW4g1n7oUg=" - }, - "angular-elastic": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/angular-elastic/-/angular-elastic-2.5.1.tgz", - "integrity": "sha1-6TirG9jHZBW4ymUUsV/jWTpd9TU=", - "requires": { - "angular": ">=1.0.6" - } - }, - "angular-i18n": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/angular-i18n/-/angular-i18n-1.6.6.tgz", - "integrity": "sha1-8hy/kWGkSb5LcUDYsVP2ypsIfSQ=" - }, - "angular-loading-bar": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/angular-loading-bar/-/angular-loading-bar-0.9.0.tgz", - "integrity": "sha1-N+9Swl8QLCFuezzf0vxaXflijkU=" - }, - "angular-local-storage": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/angular-local-storage/-/angular-local-storage-0.7.1.tgz", - "integrity": "sha1-+9JzB2PCn6mvVyXgGGx4BiHozdI=" - }, - "angular-mocks": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.6.6.tgz", - "integrity": "sha1-yTAY54OMbcXOrxprz5vhPIMOpRU=", - "dev": true - }, - "angular-moment": { - "version": "1.0.0-beta.3", - "resolved": "https://registry.npmjs.org/angular-moment/-/angular-moment-1.0.0-beta.3.tgz", - "integrity": "sha1-cLy+PdiM5EifGH687RIAE7nJlx4=", - "requires": { - "moment": ">=2.8.0 <2.11.0" - }, - "dependencies": { - "moment": { - "version": "2.10.6", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.10.6.tgz", - "integrity": "sha1-bLIZZ8ecunsMpeZmRPFzZis++nc=" - } - } - }, - "angular-resource": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/angular-resource/-/angular-resource-1.6.6.tgz", - "integrity": "sha1-QwZg6WnD589AxeJH5eaQ8G1u/GE=" - }, - "angular-route": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/angular-route/-/angular-route-1.6.6.tgz", - "integrity": "sha1-jBF0iqGVxxexthWn50ZEK/x8YfQ=" - }, - "angular-sanitize": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/angular-sanitize/-/angular-sanitize-1.6.6.tgz", - "integrity": "sha1-D9BloZkxUX++zmZZbTJdcrbgYEE=" - }, - "angular-spinner": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/angular-spinner/-/angular-spinner-0.8.0.tgz", - "integrity": "sha1-AS6ZpkUtAw9iT5UjuYVpASPr484=", - "requires": { - "spin.js": "^2.0.0" - } - }, - "angular-translate": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/angular-translate/-/angular-translate-2.18.1.tgz", - "integrity": "sha512-Mw0kFBqsv5j8ItL9IhRZunIlVmIRW6iFsiTmRs9wGr2QTt8z4rehYlWyHos8qnXc/kyOYJiW50iH50CSNHGB9A==", - "requires": { - "angular": ">=1.2.26 <=1.7" - } - }, - "angular-translate-loader-static-files": { - "version": "2.15.2", - "resolved": "https://registry.npmjs.org/angular-translate-loader-static-files/-/angular-translate-loader-static-files-2.15.2.tgz", - "integrity": "sha1-OPJ7Df2LYxuM6LPg8Gqj8TERBek=", - "requires": { - "angular-translate": "~2.15.2" - }, - "dependencies": { - "angular-translate": { - "version": "2.15.2", - "resolved": "https://registry.npmjs.org/angular-translate/-/angular-translate-2.15.2.tgz", - "integrity": "sha1-+aPCuNXa6312yeLAH/PD1X/hK5A=", - "requires": { - "angular": ">=1.2.26 <=1.6" - } - } - } - }, - "angular-ui-bootstrap": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/angular-ui-bootstrap/-/angular-ui-bootstrap-2.5.0.tgz", - "integrity": "sha1-L6zvuRU4ZlXcX0QVAlgDJRcjbQE=" - }, - "angular-ui-router": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/angular-ui-router/-/angular-ui-router-0.4.2.tgz", - "integrity": "sha1-tq7Rymmmg8guOZKJjqvUuhWGhgg=", - "requires": { - "angular": "^1.0.8" - } - }, - "angular-ui-sortable": { - "version": "git+https://github.com/nkala/ui-sortable.git#6629e86c030521938445060e71d0664d226c7925", - "from": "git+https://github.com/nkala/ui-sortable.git#v0.13.4xx" - }, - "angular-ui-tree": { - "version": "2.22.6", - "resolved": "https://registry.npmjs.org/angular-ui-tree/-/angular-ui-tree-2.22.6.tgz", - "integrity": "sha512-VzuXM6NdYeQD0Y1RF5oTYc3o8yoW9mtxhnJs5Fvwu40V1Alzq7ybJj+kvApXZ69M0mvRd8LLM+3Q4pI26md+fA==" - }, - "angular-ui-utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/angular-ui-utils/-/angular-ui-utils-0.1.1.tgz", - "integrity": "sha1-/4tcSrsq6+sI7gXQmnjEz7+2UAk=" - }, - "angularjs-slider": { - "version": "5.8.7", - "resolved": "https://registry.npmjs.org/angularjs-slider/-/angularjs-slider-5.8.7.tgz", - "integrity": "sha1-45szGeOU7zWJgTpXzD4W+iH5VCk=" - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - } - } - }, - "awesome-typescript-loader": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-3.4.0.tgz", - "integrity": "sha512-sXPUe8HexKO4/NGTOtFP7ue+LbaALphiP22A8FaJCZT2avTtMQj3uVtrPRIvNf/6484i8rgx9d//jewiaqFH0w==", - "dev": true, - "requires": { - "colors": "^1.1.2", - "enhanced-resolve": "3.3.0", - "loader-utils": "^1.1.0", - "lodash": "^4.17.4", - "micromatch": "^3.0.3", - "mkdirp": "^0.5.1", - "object-assign": "^4.1.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.7", - "slash": "^1.0.0", - "source-map": "^0.5.6" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", - "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", - "dev": true, - "requires": { - "babel-plugin-istanbul": "^4.1.6", - "babel-preset-jest": "^23.2.0" - } - }, - "babel-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", - "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", - "dev": true, - "requires": { - "find-cache-dir": "^1.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-angularjs-annotate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/babel-plugin-angularjs-annotate/-/babel-plugin-angularjs-annotate-0.8.2.tgz", - "integrity": "sha512-gkPuZr4aYxhJPjqrwYlnXQIzlRagp+vxJhqaoYc3w9gBZ2/H2fKIt7a3iXoC5JQGm7ee9Lj7CWPfnfcYX/34Iw==", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-types": "^6.26.0", - "simple-is": "~0.2.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" - } - }, - "babel-plugin-jest-hoist": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", - "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", - "dev": true - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-preset-env": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", - "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^2.1.2", - "invariant": "^2.2.2", - "semver": "^5.3.0" - }, - "dependencies": { - "browserslist": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", - "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000792", - "electron-to-chromium": "^1.3.30" - } - } - } - }, - "babel-preset-jest": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", - "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^23.2.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "base62": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.8.tgz", - "integrity": "sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", - "dev": true - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "bootstrap": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", - "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=", - "dev": true - }, - "bootstrap-sass": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz", - "integrity": "sha1-ZZbHq0D2Y3OTMjqwvIDQZPxjBJg=", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "cachefactory": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cachefactory/-/cachefactory-1.2.0.tgz", - "integrity": "sha1-mg79+4+n32wyOLtwbXso/DGIA8E=", - "requires": { - "yabh": "1.1.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - } - } - }, - "caniuse-db": { - "version": "1.0.30000929", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000929.tgz", - "integrity": "sha512-bap0KDH7KJ2Hc4zWb1bBJwsyl+76jOukW6TH8uxaVI7BrzF2CnibTj53ro7VZAHB+ucMlIGBC1rhG2BQY0ekeg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30000929", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000929.tgz", - "integrity": "sha512-n2w1gPQSsYyorSVYqPMqbSaz1w7o9ZC8VhOEGI9T5MfGDzp7sbopQxG6GaQmYsaq13Xfx/mkxJUWC1Dz3oZfzw==", - "dev": true - }, - "capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", - "dev": true, - "requires": { - "rsvp": "^3.3.3" - } - }, - "capture-stack-trace": { - "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 - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "dev": true, - "requires": { - "is-regex": "^1.0.3" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true, - "optional": true - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "ckeditor": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/ckeditor/-/ckeditor-4.7.0.tgz", - "integrity": "sha1-ebD+YGdQOIOlcvmaPnKxnTpWeho=" - }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "^1.1.3" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "clean-webpack-plugin": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.17.tgz", - "integrity": "sha512-Bts/V725v8Ijosp4K1cqppQXgXcrohxoMsg0CV2xL4y/vua1G5pAfHEW/eJIiKF+GNNG72mdjbipxMRFEms7yg==", - "dev": true, - "requires": { - "rimraf": "^2.6.1" - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "^1.0.0" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "commoner": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", - "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", - "requires": { - "commander": "^2.5.0", - "detective": "^4.3.1", - "glob": "^5.0.15", - "graceful-fs": "^4.1.2", - "iconv-lite": "^0.4.5", - "mkdirp": "^0.5.0", - "private": "^0.1.6", - "q": "^1.1.2", - "recast": "^0.11.17" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", - "dev": true, - "requires": { - "mime-db": ">= 1.36.0 < 2" - } - }, - "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.14", - "debug": "2.6.9", - "on-headers": "~1.0.1", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "constantinople": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", - "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", - "dev": true, - "requires": { - "@types/babel-types": "^7.0.0", - "@types/babylon": "^6.16.2", - "babel-types": "^6.26.0", - "babylon": "^6.18.0" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "content-type-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "copy-webpack-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz", - "integrity": "sha1-lyjjg7lDFgUNDHRjlY8rhcCqggA=", - "dev": true, - "requires": { - "bluebird": "^2.10.2", - "fs-extra": "^0.26.4", - "glob": "^6.0.4", - "is-glob": "^3.1.0", - "loader-utils": "^0.2.15", - "lodash": "^4.3.0", - "minimatch": "^3.0.0", - "node-dir": "^0.1.10" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", - "dev": true - }, - "fs-extra": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", - "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "core-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.2.tgz", - "integrity": "sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-loader": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", - "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", - "dev": true, - "requires": { - "babel-code-frame": "^6.11.0", - "css-selector-tokenizer": "^0.7.0", - "cssnano": ">=2.6.1 <4", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash.camelcase": "^4.3.0", - "object-assign": "^4.0.1", - "postcss": "^5.0.6", - "postcss-modules-extract-imports": "^1.0.0", - "postcss-modules-local-by-default": "^1.0.1", - "postcss-modules-scope": "^1.0.0", - "postcss-modules-values": "^1.1.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "dev": true, - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - } - } - }, - "css-what": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", - "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==", - "dev": true - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - } - }, - "cssom": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", - "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==", - "dev": true - }, - "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "d3": { - "version": "3.5.17", - "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", - "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "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 - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true, - "optional": true - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true - }, - "detective": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", - "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", - "requires": { - "acorn": "^5.2.1", - "defined": "^1.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "docopt": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", - "integrity": "sha1-so6eIiDaXsSffqW7JKR3h0Be6xE=", - "dev": true - }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", - "dev": true - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, - "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.103", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.103.tgz", - "integrity": "sha512-tObPqGmY9X8MUM8i3MEimYmbnLLf05/QV5gPlkR8MQ3Uj8G8B2govE1U4cQcBYtv3ymck9Y8cIOu4waoiykMZQ==", - "dev": true - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "enhanced-resolve": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", - "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.5" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "envify": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz", - "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=", - "requires": { - "jstransform": "^11.0.3", - "through": "~2.3.4" - } - }, - "eperusteet-frontend-utils": { - "version": "github:Opetushallitus/eperusteet-frontend-utils#27684bd9a98ad05a0945e5062931830247f53250", - "from": "github:Opetushallitus/eperusteet-frontend-utils#master" - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz", - "integrity": "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==", - "dev": true, - "requires": { - "stackframe": "^1.0.4" - } - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.46", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", - "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-promise": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", - "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==" - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "es6-templates": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", - "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", - "dev": true, - "requires": { - "recast": "~0.11.12", - "through": "~2.3.6" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esprima-fb": { - "version": "15001.1.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", - "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=" - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - } - }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true, - "requires": { - "original": ">=0.0.5" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exec-sh": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", - "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", - "dev": true, - "requires": { - "merge": "^1.2.0" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "expect": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", - "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^23.6.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, - "requires": { - "bser": "^2.0.0" - } - }, - "fbjs": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.6.1.tgz", - "integrity": "sha1-lja3cF9bqWhNRLcveDISVK/IYPc=", - "requires": { - "core-js": "^1.0.0", - "loose-envify": "^1.0.0", - "promise": "^7.0.3", - "ua-parser-js": "^0.7.9", - "whatwg-fetch": "^0.9.0" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } - } - }, - "file-loader": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", - "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2" - } - }, - "file-saver": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", - "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, - "follow-redirects": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", - "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==", - "dev": true, - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "fork-ts-checker-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", - "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^3.3.0", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "friendly-errors-webpack-plugin": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz", - "integrity": "sha1-4yeBxHIvVGoGqbXXp8+ihSA3XXA=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-length": "^1.0.1" - }, - "dependencies": { - "string-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", - "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "dev": true, - "requires": { - "strip-ansi": "^3.0.0" - } - } - } - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.6.tgz", - "integrity": "sha512-BalK54tfK0pMC0jQFb2oHn1nz7JNQD/2ex5pBnCHgBi2xG7VV0cAOGy2RS2VbCqUXx5/6obMrMcQTJ8yjcGzbg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - } - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globule": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", - "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.12", - "minimatch": "~3.0.2" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", - "dev": true - }, - "handlebars": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", - "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", - "dev": true, - "requires": { - "async": "^2.5.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-loader": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.1.tgz", - "integrity": "sha512-RxokXoxcsRSWcN553Ew+K0TUo68gQfmddTuUIZ4xRD8Ax1xXzX2UYQ3FC3D5MoRPGAdL1erWKeEFihDrrdxHiA==", - "dev": true, - "requires": { - "es6-templates": "^0.2.2", - "fastparse": "^1.1.1", - "html-minifier": "^3.0.1", - "loader-utils": "^1.0.2", - "object-assign": "^4.1.0" - } - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - } - } - }, - "html-webpack-plugin": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", - "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", - "dev": true, - "requires": { - "bluebird": "^3.4.7", - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "toposort": "^1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "dev": true, - "requires": { - "domelementtype": "1", - "domhandler": "2.1", - "domutils": "1.1", - "readable-stream": "1.0" - }, - "dependencies": { - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", - "dev": true - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "dev": true, - "requires": { - "eventemitter3": "^3.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", - "dev": true, - "requires": { - "http-proxy": "^1.16.2", - "is-glob": "^3.1.0", - "lodash": "^4.17.2", - "micromatch": "^2.3.11" - }, - "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "humanize": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/humanize/-/humanize-0.0.9.tgz", - "integrity": "sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ=" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imports-loader": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.7.1.tgz", - "integrity": "sha1-8gS180cCoywdt9SNidXoZ6BEElM=", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "source-map": "^0.5.6" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", - "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true, - "requires": { - "meow": "^3.3.0" - } - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", - "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", - "dev": true, - "requires": { - "acorn": "~4.0.2", - "object-assign": "^4.0.1" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "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 - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "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, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-retry-allowed": { - "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 - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-api": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", - "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", - "dev": true, - "requires": { - "async": "^2.1.4", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.1", - "istanbul-lib-hook": "^1.2.2", - "istanbul-lib-instrument": "^1.10.2", - "istanbul-lib-report": "^1.1.5", - "istanbul-lib-source-maps": "^1.2.6", - "istanbul-reports": "^1.5.1", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" - } - }, - "istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", - "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", - "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", - "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", - "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", - "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", - "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", - "dev": true, - "requires": { - "import-local": "^1.0.0", - "jest-cli": "^23.6.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "jest-cli": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", - "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.3.1", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-source-maps": "^1.2.4", - "jest-changed-files": "^23.4.2", - "jest-config": "^23.6.0", - "jest-environment-jsdom": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve-dependencies": "^23.6.0", - "jest-runner": "^23.6.0", - "jest-runtime": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "jest-watcher": "^23.4.0", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "prompts": "^0.1.9", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^11.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-changed-files": { - "version": "23.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", - "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", - "dev": true, - "requires": { - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", - "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-jest": "^23.6.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^23.4.0", - "jest-environment-node": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^23.6.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "pretty-format": "^23.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-diff": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", - "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-docblock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", - "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", - "dev": true, - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", - "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "pretty-format": "^23.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-environment-jsdom": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", - "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-node": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", - "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0" - } - }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", - "dev": true - }, - "jest-haste-map": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", - "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", - "dev": true, - "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "invariant": "^2.2.4", - "jest-docblock": "^23.2.0", - "jest-serializer": "^23.0.1", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "sane": "^2.0.0" - } - }, - "jest-jasmine2": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", - "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", - "dev": true, - "requires": { - "babel-traverse": "^6.0.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^23.6.0", - "is-generator-fn": "^1.0.0", - "jest-diff": "^23.6.0", - "jest-each": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "pretty-format": "^23.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-leak-detector": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", - "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", - "dev": true, - "requires": { - "pretty-format": "^23.6.0" - } - }, - "jest-matcher-utils": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", - "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-message-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", - "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-mock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", - "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", - "dev": true - }, - "jest-regex-util": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", - "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", - "dev": true - }, - "jest-resolve": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", - "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", - "dev": true, - "requires": { - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "realpath-native": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", - "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", - "dev": true, - "requires": { - "jest-regex-util": "^23.3.0", - "jest-snapshot": "^23.6.0" - } - }, - "jest-runner": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", - "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", - "dev": true, - "requires": { - "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-docblock": "^23.2.0", - "jest-haste-map": "^23.6.0", - "jest-jasmine2": "^23.6.0", - "jest-leak-detector": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-runtime": "^23.6.0", - "jest-util": "^23.4.0", - "jest-worker": "^23.2.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - } - }, - "jest-runtime": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", - "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-plugin-istanbul": "^4.1.6", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^11.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-serializer": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", - "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", - "dev": true - }, - "jest-snapshot": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", - "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", - "dev": true, - "requires": { - "babel-types": "^6.0.0", - "chalk": "^2.0.1", - "jest-diff": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-resolve": "^23.6.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^23.6.0", - "semver": "^5.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", - "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", - "dev": true, - "requires": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^23.4.0", - "mkdirp": "^0.5.1", - "slash": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-validate": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", - "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^23.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-watcher": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", - "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "string-length": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-worker": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", - "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", - "dev": true, - "requires": { - "merge-stream": "^1.0.1" - } - }, - "jquery": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", - "integrity": "sha1-IoveaYoMYUMdwmMKahVPFYkNIxc=" - }, - "jquery-sticky": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/jquery-sticky/-/jquery-sticky-1.0.4.tgz", - "integrity": "sha1-L+jQPckEaFNA2qEsvdHKDJIbCaw=", - "requires": { - "jquery": "*" - } - }, - "jquery-ui": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.12.1.tgz", - "integrity": "sha1-vLQEXI3QU5wTS8FIjN0+dop6nlE=" - }, - "js-base64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", - "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==", - "dev": true - }, - "js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-xlsx": { - "version": "github:SheetJS/js-xlsx#e3c5eac99c3b2be6929adfca455c1be87fab792b", - "from": "github:SheetJS/js-xlsx", - "dependencies": { - "cfb": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.4.tgz", - "integrity": "sha512-rwFkl3aFO3f+ljR27YINwC0x8vPjyiEVbYbrTCKzspEf7Q++3THdfHVgJYNUbxNcupJECrLX+L40Mjm9hm/Bgw==", - "requires": { - "commander": "^2.16.0" - } - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - }, - "ssf": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.3.tgz", - "integrity": "sha512-pRuUdW0WwyB2doSqqjWyzwCD6PkfxpHAHdZp39K3dp/Hq7f+xfMwNAWIi16DyrRg4gg9c/RvLYkJTSawTPTm1w==" - } - } - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - } - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - } - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jstransform": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", - "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", - "requires": { - "base62": "^1.1.0", - "commoner": "^0.10.1", - "esprima-fb": "^15001.1.0-dev-harmony-fb", - "object-assign": "^2.0.0", - "source-map": "^0.4.2" - }, - "dependencies": { - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "dev": true, - "requires": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "kleur": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", - "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==", - "dev": true - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "^4.0.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", - "dev": true - }, - "lodash._createassigner": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", - "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "dev": true, - "requires": { - "lodash._bindcallback": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash.restparam": "^3.0.0" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.defaults": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", - "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", - "dev": true, - "requires": { - "lodash.assign": "^3.0.0", - "lodash.restparam": "^3.0.0" - }, - "dependencies": { - "lodash.assign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", - "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "dev": true, - "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._createassigner": "^3.0.0", - "lodash.keys": "^3.0.0" - } - } - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.tail": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", - "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - }, - "dependencies": { - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true - }, - "mathjax": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-2.7.1.tgz", - "integrity": "sha1-yC0vhTsvWPc44zVTKa3wstj4+s4=" - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "merge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", - "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", - "dev": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", - "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", - "dev": true - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", - "dev": true - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dev": true, - "requires": { - "mime-db": "~1.37.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "dev": true, - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "moment": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", - "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "needle": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", - "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "ng-file-upload": { - "version": "12.2.13", - "resolved": "https://registry.npmjs.org/ng-file-upload/-/ng-file-upload-12.2.13.tgz", - "integrity": "sha1-AYAPOHLlJvlTEPhHfpnk8S0NjRQ=" - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-dir": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", - "dev": true, - "requires": { - "minimatch": "^3.0.2" - } - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", - "dev": true - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-notifier": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.3.0.tgz", - "integrity": "sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz", - "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "node-sass": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.0.tgz", - "integrity": "sha512-AxqU+DFpk0lEz95sI6jO0hU0Rwyw7BXVEv6o9OItoXLyeygPeaSpiV4rwQb10JiTghHaa0gZeD21sz+OsQluaw==", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "^2.2.4", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "dev": true - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - } - } - }, - "nodemon": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.12.1.tgz", - "integrity": "sha1-mWpW3EnZ8Wu/G3ik3gjxNjSzh40=", - "dev": true, - "requires": { - "chokidar": "^1.7.0", - "debug": "^2.6.8", - "es6-promise": "^3.3.1", - "ignore-by-default": "^1.0.1", - "lodash.defaults": "^3.1.2", - "minimatch": "^3.0.4", - "ps-tree": "^1.1.0", - "touch": "^3.1.0", - "undefsafe": "0.0.3", - "update-notifier": "^2.2.0" - }, - "dependencies": { - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", - "dev": true - }, - "undefsafe": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-0.0.3.tgz", - "integrity": "sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8=", - "dev": true - } - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "npm-bundled": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", - "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", - "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nwmatcher": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", - "dev": true - }, - "nwsapi": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", - "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "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 - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "open": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", - "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", - "dev": true - }, - "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - }, - "dependencies": { - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - } - } - }, - "pako": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", - "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==", - "dev": true - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "~2.3" - } - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "portfinder": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", - "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", - "dev": true, - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "^5.0.16" - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" - } - }, - "postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - } - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", - "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, - "requires": { - "postcss": "^5.0.5" - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "prettier": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.6.1.tgz", - "integrity": "sha512-f85qBoQiqiFM/sCmJaN4Lagj9bqMcv38vCftqp4GfVessAqq3Ns6g+3gd8UXReStLLE/DGEdwiZXoFKxphKqwg==", - "dev": true - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, - "prompts": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", - "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", - "dev": true, - "requires": { - "kleur": "^2.0.1", - "sisteransi": "^0.1.1" - } - }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "ps-tree": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", - "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", - "dev": true, - "requires": { - "event-stream": "=3.3.4" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pug": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-rc.4.tgz", - "integrity": "sha512-SL7xovj6E2Loq9N0UgV6ynjMLW4urTFY/L/Fprhvz13Xc5vjzkjZjI1QHKq31200+6PSD8PyU6MqrtCTJj6/XA==", - "dev": true, - "requires": { - "pug-code-gen": "^2.0.0", - "pug-filters": "^2.1.5", - "pug-lexer": "^3.1.0", - "pug-linker": "^3.0.3", - "pug-load": "^2.0.9", - "pug-parser": "^4.0.0", - "pug-runtime": "^2.0.3", - "pug-strip-comments": "^1.0.2" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", - "dev": true, - "requires": { - "commander": "2.8.x", - "source-map": "0.4.x" - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "pug-filters": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-2.1.5.tgz", - "integrity": "sha512-xkw71KtrC4sxleKiq+cUlQzsiLn8pM5+vCgkChW2E6oNOzaqTSIBKIQ5cl4oheuDzvJYCTSYzRaVinMUrV4YLQ==", - "dev": true, - "requires": { - "clean-css": "^3.3.0", - "constantinople": "^3.0.1", - "jstransformer": "1.0.0", - "pug-error": "^1.3.2", - "pug-walk": "^1.1.5", - "resolve": "^1.1.6", - "uglify-js": "^2.6.1" - } - }, - "pug-lexer": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-3.1.0.tgz", - "integrity": "sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI=", - "dev": true, - "requires": { - "character-parser": "^2.1.1", - "is-expression": "^3.0.0", - "pug-error": "^1.3.2" - } - }, - "pug-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-4.0.2.tgz", - "integrity": "sha1-ey4zEbdYIUhnBkeUd6sdNPX4F98=", - "dev": true, - "requires": { - "pug-error": "^1.3.2", - "token-stream": "0.0.1" - } - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "pug-attrs": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz", - "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=", - "dev": true, - "requires": { - "constantinople": "^3.0.1", - "js-stringify": "^1.0.1", - "pug-runtime": "^2.0.4" - } - }, - "pug-code-gen": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", - "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", - "dev": true, - "requires": { - "constantinople": "^3.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.1", - "pug-attrs": "^2.0.3", - "pug-error": "^1.3.2", - "pug-runtime": "^2.0.4", - "void-elements": "^2.0.1", - "with": "^5.0.0" - } - }, - "pug-error": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz", - "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=", - "dev": true - }, - "pug-jest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pug-jest/-/pug-jest-1.0.1.tgz", - "integrity": "sha1-6oI6fdm2FgsCaYeOBZ5fzZHxD2g=", - "dev": true, - "requires": { - "pug": "^2.0.0-beta6" - } - }, - "pug-linker": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", - "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", - "dev": true, - "requires": { - "pug-error": "^1.3.2", - "pug-walk": "^1.1.7" - } - }, - "pug-load": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz", - "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "pug-walk": "^1.1.7" - } - }, - "pug-loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pug-loader/-/pug-loader-2.3.0.tgz", - "integrity": "sha1-uGkpRBOiIY8KfdkqlT5ZIoNnbBA=", - "dev": true, - "requires": { - "loader-utils": "~0.2.5", - "pug-walk": "^1.0.0", - "resolve": "^1.1.7" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } - } - }, - "pug-runtime": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz", - "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g=", - "dev": true - }, - "pug-strip-comments": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz", - "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=", - "dev": true, - "requires": { - "pug-error": "^1.3.2" - } - }, - "pug-walk": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.7.tgz", - "integrity": "sha1-wA1cUSi6xYBr7BXSt+fNq+QlMfM=", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", - "dev": true - }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "react": { - "version": "0.14.9", - "resolved": "https://registry.npmjs.org/react/-/react-0.14.9.tgz", - "integrity": "sha1-kRCmSXxJ1EuhwO3TF67CnC4NkdE=", - "requires": { - "envify": "^3.0.0", - "fbjs": "^0.6.1" - } - }, - "react-dom": { - "version": "0.14.9", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.9.tgz", - "integrity": "sha1-BQZKPc8PsYgKOyv8nVjFXY2fYpM=" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "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, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "realpath-native": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz", - "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "requires": { - "ast-types": "0.9.6", - "esprima": "~3.1.0", - "private": "~0.1.5", - "source-map": "~0.5.0" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - } - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz", - "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==", - "dev": true, - "requires": { - "css-select": "^1.1.0", - "dom-converter": "~0.2", - "htmlparser2": "~3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "dev": true, - "requires": { - "lodash": "^4.13.1" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "dev": true, - "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "restangular": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/restangular/-/restangular-1.6.1.tgz", - "integrity": "sha1-rdF0PyfXewuKZS5khadgtiNO0CQ=", - "requires": { - "lodash": "~4.17.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sane": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.3", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - } - } - } - }, - "sass-loader": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", - "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", - "dev": true, - "requires": { - "async": "^2.1.5", - "clone-deep": "^0.3.0", - "loader-utils": "^1.0.1", - "lodash.tail": "^4.1.1", - "pify": "^3.0.0" - }, - "dependencies": { - "clone-deep": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", - "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.1", - "kind-of": "^3.2.2", - "shallow-clone": "^0.1.2" - } - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", - "dev": true - }, - "shallow-clone": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", - "dev": true, - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^2.0.1", - "lazy-cache": "^0.2.3", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "dev": true, - "requires": { - "is-buffer": "^1.0.2" - } - } - } - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "dev": true, - "requires": { - "ajv": "^5.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - } - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", - "dev": true, - "requires": { - "node-forge": "0.7.5" - } - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "^5.0.3" - } - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - } - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "simple-is": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", - "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=" - }, - "sisteransi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", - "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-explorer": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-1.5.0.tgz", - "integrity": "sha512-skfca9IJvJKsI+J3sWFQ+hCqUDmZxhGgM20/L7PpNGRnQSVyXPYi7U0TDw0eNj5Yhtsm//psmNkxQmHuEJJ6FA==", - "dev": true, - "requires": { - "btoa": "^1.1.2", - "convert-source-map": "^1.1.1", - "docopt": "^0.6.2", - "glob": "^7.1.2", - "open": "0.0.5", - "source-map": "^0.5.1", - "temp": "^0.8.3", - "underscore": "^1.8.3" - } - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", - "dev": true - }, - "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true, - "requires": { - "debug": "^2.6.8", - "handle-thing": "^1.2.5", - "http-deceiver": "^1.2.7", - "safe-buffer": "^5.0.1", - "select-hose": "^2.0.0", - "spdy-transport": "^2.0.18" - } - }, - "spdy-transport": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.1.tgz", - "integrity": "sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q==", - "dev": true, - "requires": { - "debug": "^2.6.8", - "detect-node": "^2.0.3", - "hpack.js": "^2.1.6", - "obuf": "^1.1.1", - "readable-stream": "^2.2.9", - "safe-buffer": "^5.0.1", - "wbuf": "^1.7.2" - } - }, - "spin.js": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/spin.js/-/spin.js-2.3.2.tgz", - "integrity": "sha1-bKpW1SBnNFD9XPvGlx5tB3LDeho=" - }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", - "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", - "dev": true - }, - "stackframe": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", - "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true, - "requires": { - "duplexer": "~0.1.1" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "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, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "style-loader": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", - "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^0.3.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" - } - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true - }, - "tapable": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", - "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==", - "dev": true - }, - "tar": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "dev": true, - "requires": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true - } - } - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - } - }, - "test-exclude": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", - "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - } - } - }, - "token-stream": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", - "dev": true - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - } - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "dev": true, - "requires": { - "glob": "^7.1.2" - } - }, - "ts-jest": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-21.0.1.tgz", - "integrity": "sha512-MIX8uMMr7FSRT56GASXUxeorEs3x2iO+JwkVzUHwxjzld4+UtPMZ9EEUpX7JU7eFKDkXaD1aAIVnuNrg15Xnuw==", - "dev": true, - "requires": { - "babel-core": "^6.24.1", - "babel-plugin-istanbul": "^4.1.4", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-preset-jest": "^21.0.0", - "fs-extra": "^4.0.0", - "jest-config": "^21.0.0", - "jest-util": "^21.0.0", - "pkg-dir": "^2.0.0", - "source-map-support": "^0.4.4", - "yargs": "^8.0.1" - }, - "dependencies": { - "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "dev": true - }, - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - }, - "acorn-globals": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true, - "requires": { - "acorn": "^4.0.4" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", - "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", - "dev": true - }, - "babel-preset-jest": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", - "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^21.2.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "expect": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", - "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^21.2.1", - "jest-get-type": "^21.2.0", - "jest-matcher-utils": "^21.2.1", - "jest-message-util": "^21.2.1", - "jest-regex-util": "^21.2.0" - } - }, - "jest-config": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", - "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^21.2.1", - "jest-environment-node": "^21.2.1", - "jest-get-type": "^21.2.0", - "jest-jasmine2": "^21.2.1", - "jest-regex-util": "^21.2.0", - "jest-resolve": "^21.2.0", - "jest-util": "^21.2.1", - "jest-validate": "^21.2.1", - "pretty-format": "^21.2.1" - } - }, - "jest-diff": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", - "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^21.2.0", - "pretty-format": "^21.2.1" - } - }, - "jest-environment-jsdom": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", - "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", - "dev": true, - "requires": { - "jest-mock": "^21.2.0", - "jest-util": "^21.2.1", - "jsdom": "^9.12.0" - } - }, - "jest-environment-node": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", - "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", - "dev": true, - "requires": { - "jest-mock": "^21.2.0", - "jest-util": "^21.2.1" - } - }, - "jest-get-type": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", - "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", - "dev": true - }, - "jest-jasmine2": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", - "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "expect": "^21.2.1", - "graceful-fs": "^4.1.11", - "jest-diff": "^21.2.1", - "jest-matcher-utils": "^21.2.1", - "jest-message-util": "^21.2.1", - "jest-snapshot": "^21.2.1", - "p-cancelable": "^0.3.0" - } - }, - "jest-matcher-utils": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", - "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^21.2.0", - "pretty-format": "^21.2.1" - } - }, - "jest-message-util": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", - "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0" - } - }, - "jest-mock": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", - "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", - "dev": true - }, - "jest-regex-util": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", - "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", - "dev": true - }, - "jest-resolve": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", - "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", - "dev": true, - "requires": { - "browser-resolve": "^1.11.2", - "chalk": "^2.0.1", - "is-builtin-module": "^1.0.0" - } - }, - "jest-snapshot": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", - "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-diff": "^21.2.1", - "jest-matcher-utils": "^21.2.1", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^21.2.1" - } - }, - "jest-util": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", - "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", - "dev": true, - "requires": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "jest-message-util": "^21.2.1", - "jest-mock": "^21.2.0", - "jest-validate": "^21.2.1", - "mkdirp": "^0.5.1" - } - }, - "jest-validate": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", - "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^21.2.0", - "leven": "^2.1.0", - "pretty-format": "^21.2.1" - } - }, - "jsdom": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", - "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", - "dev": true, - "requires": { - "abab": "^1.0.3", - "acorn": "^4.0.4", - "acorn-globals": "^3.1.0", - "array-equal": "^1.0.0", - "content-type-parser": "^1.0.1", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.2.37 < 0.3.0", - "escodegen": "^1.6.1", - "html-encoding-sniffer": "^1.0.1", - "nwmatcher": ">= 1.3.9 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.79.0", - "sax": "^1.2.1", - "symbol-tree": "^3.2.1", - "tough-cookie": "^2.3.2", - "webidl-conversions": "^4.0.0", - "whatwg-encoding": "^1.0.1", - "whatwg-url": "^4.3.0", - "xml-name-validator": "^2.0.1" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "dev": true - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pretty-format": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", - "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "whatwg-url": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", - "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - } - } - }, - "xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "ts-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-3.0.2.tgz", - "integrity": "sha512-dy82zfGOAZtF2LRsmryU1aKebtcdIS+diswWoMjFx0wY+knHLENVI2vOvmjB7fy8i4kWRuUPK2FAxjMB4CDmCA==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "enhanced-resolve": "^3.0.0", - "loader-utils": "^1.0.2", - "semver": "^5.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typescript": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.1.tgz", - "integrity": "sha1-7znN6ierrAtQAkLWcmq5DgyEZjE=", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.19", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", - "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" - }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", - "dev": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true, - "requires": { - "source-map": "^0.5.6", - "uglify-js": "^2.8.29", - "webpack-sources": "^1.0.1" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - } - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "ui-select": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/ui-select/-/ui-select-0.19.8.tgz", - "integrity": "sha1-dIYISKf9i8SU2YVtL2J3bqmGN8E=" - }, - "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", - "dev": true - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-loader": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", - "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "mime": "1.3.x" - } - }, - "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", - "dev": true, - "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "watch": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", - "dev": true, - "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "webpack": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz", - "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==", - "dev": true, - "requires": { - "acorn": "^5.0.0", - "acorn-dynamic-import": "^2.0.0", - "ajv": "^5.1.5", - "ajv-keywords": "^2.0.0", - "async": "^2.1.2", - "enhanced-resolve": "^3.4.0", - "escope": "^3.6.0", - "interpret": "^1.0.0", - "json-loader": "^0.5.4", - "json5": "^0.5.1", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "mkdirp": "~0.5.0", - "node-libs-browser": "^2.0.0", - "source-map": "^0.5.3", - "supports-color": "^4.2.1", - "tapable": "^0.2.7", - "uglifyjs-webpack-plugin": "^0.4.6", - "watchpack": "^1.4.0", - "webpack-sources": "^1.0.1", - "yargs": "^8.0.2" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "^2.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "webpack-bundle-size-analyzer": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-size-analyzer/-/webpack-bundle-size-analyzer-2.7.0.tgz", - "integrity": "sha1-LsBTn9V/hxYIOJizi4kv6UyIxrw=", - "requires": { - "commander": "^2.7.1", - "filesize": "^3.1.2", - "humanize": "0.0.9" - } - }, - "webpack-dev-middleware": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", - "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", - "dev": true, - "requires": { - "memory-fs": "~0.4.1", - "mime": "^1.5.0", - "path-is-absolute": "^1.0.0", - "range-parser": "^1.0.3", - "time-stamp": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "time-stamp": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz", - "integrity": "sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.1.tgz", - "integrity": "sha512-qFKs4Wg6JI6FkAQ6WFqeDCCxXEBLsDHkqJB3f9tmlqx8C68Y9vQWwcaMT4Q9H8WF32Q6QUNmgK4qQkdHfXvj/g==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "array-includes": "^3.0.3", - "bonjour": "^3.5.0", - "chokidar": "^1.6.0", - "compression": "^1.5.2", - "connect-history-api-fallback": "^1.3.0", - "del": "^3.0.0", - "express": "^4.13.3", - "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.17.4", - "internal-ip": "1.2.0", - "ip": "^1.1.5", - "loglevel": "^1.4.1", - "opn": "^5.1.0", - "portfinder": "^1.0.9", - "selfsigned": "^1.9.1", - "serve-index": "^1.7.2", - "sockjs": "0.3.18", - "sockjs-client": "1.1.4", - "spdy": "^3.4.1", - "strip-ansi": "^3.0.1", - "supports-color": "^4.2.1", - "webpack-dev-middleware": "^1.11.0", - "yargs": "^6.6.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "sockjs": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", - "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^2.0.2" - } - }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "dev": true, - "requires": { - "debug": "^2.6.6", - "eventsource": "0.1.6", - "faye-websocket": "~0.11.0", - "inherits": "^2.0.1", - "json3": "^3.3.2", - "url-parse": "^1.1.8" - }, - "dependencies": { - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - } - } - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "^2.0.0" - } - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - } - } - } - }, - "webpack-manifest-plugin": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz", - "integrity": "sha512-MX60Bv2G83Zks9pi3oLOmRgnPAnwrlMn+lftMrWBm199VQjk46/xgzBi9lPfpZldw2+EI2S+OevuLIaDuxCWRw==", - "dev": true, - "requires": { - "fs-extra": "^0.30.0", - "lodash": ">=3.5 <5" - }, - "dependencies": { - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - } - } - }, - "webpack-merge": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.0.tgz", - "integrity": "sha1-atciI7PguDflMeRZfBmfkJNhUR4=", - "dev": true, - "requires": { - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "webpack-node-externals": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz", - "integrity": "sha1-Iyxi7GCSsQBjWj0p2DwXRxKN+b0=" - }, - "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "webpack-visualizer-plugin": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/webpack-visualizer-plugin/-/webpack-visualizer-plugin-0.1.11.tgz", - "integrity": "sha1-uHcK2GtPZSYSxosbeCJT+vn4o04=", - "requires": { - "d3": "^3.5.6", - "mkdirp": "^0.5.1", - "react": "^0.14.0", - "react-dom": "^0.14.0" - } - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, - "requires": { - "http-parser-js": ">=0.4.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-fetch": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", - "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=" - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "with": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", - "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", - "dev": true, - "requires": { - "acorn": "^3.1.0", - "acorn-globals": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - }, - "acorn-globals": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true, - "requires": { - "acorn": "^4.0.4" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } - } - } - } - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "worker-rpc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", - "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", - "requires": { - "microevent.ts": "~0.1.1" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yabh": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/yabh/-/yabh-1.1.0.tgz", - "integrity": "sha1-xmBOXUZJGJCtmazPAilO7zIuvUY=" - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true - }, - "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - } - } -} diff --git a/eperusteet/eperusteet-app/yo/package.json.old b/eperusteet/eperusteet-app/yo/package.json.old deleted file mode 100644 index 8138232d21..0000000000 --- a/eperusteet/eperusteet-app/yo/package.json.old +++ /dev/null @@ -1,116 +0,0 @@ -{ - "version": "0.0.0", - "name": "yo", - "private": true, - "scripts": { - "copy": "cp -R ../../../eperusteet-ui/dist/ ./dist/uusi", - "dev": "webpack-dev-server --config webpack.dev.js", - "build": "webpack --config webpack.prod.js", - "unit": "jest --runInBand --no-cache --verbose", - "unit:watch": "./node_modules/jest/bin/jest.js --watch --notify", - "unit:debug": "node --inspect --debug-brk ./node_modules/jest/bin/jest.js --runInBand --verbose", - "dbnuke": "docker-compose rm app_db", - "dbinspect": "docker-compose exec app_db psql -U app", - "coverage": "./node_modules/jest/bin/jest.js --runInBand --verbose --no-cache --coverage", - "ci": "tsc --version && tsc --noEmit && npm run unit && npm run build", - "prettier": "./node_modules/prettier/bin/prettier.js --config .prettierrc --write \"app/scripts/**/*.ts\" \"app/styles/**/*.{scss,css}\"", - "analyze": "xdg-open .bundle_stats.html", - "build:analyze": "npm run build && npm run analyze", - "analyze-stats": "./node_modules/webpack/bin/webpack.js --config webpack.prod.js --json | webpack-bundle-size-analyzer", - "analyze-sourcemap": "npm run build && source-map-explorer dist/app.js" - }, - "dependencies": { - "angular": "1.6.6", - "angular-animate": "1.6.6", - "angular-cache": "4.4.2", - "angular-cookies": "1.6.6", - "angular-elastic": "2.5.1", - "angular-i18n": "1.6.6", - "angular-loading-bar": "0.9.0", - "angular-local-storage": "0.7.1", - "angular-moment": "1.0.0-beta.3", - "angular-resource": "1.6.6", - "angular-route": "1.6.6", - "angular-sanitize": "1.6.6", - "angular-spinner": "0.8.0", - "angular-translate": "2.18.1", - "angular-translate-loader-static-files": "2.15.2", - "angular-ui-bootstrap": "2.5.0", - "angular-ui-router": "0.4.2", - "angular-ui-sortable": "https://github.com/nkala/ui-sortable.git#v0.13.4xx", - "angular-ui-tree": "2.22.6", - "angular-ui-utils": "0.1.1", - "angularjs-slider": "5.8.7", - "babel-plugin-angularjs-annotate": "0.8.2", - "ckeditor": "4.7.0", - "eperusteet-frontend-utils": "Opetushallitus/eperusteet-frontend-utils#master", - "es6-promise": "4.1.1", - "file-saver": "^2.0.2", - "fork-ts-checker-webpack-plugin": "3.1.1", - "jquery": "2.1.4", - "jquery-sticky": "1.0.4", - "jquery-ui": "1.12.1", - "js-xlsx": "SheetJS/js-xlsx", - "lodash": "3.10.1", - "mathjax": "2.7.1", - "moment": "2.22.2", - "ng-file-upload": "12.2.13", - "restangular": "1.6.1", - "ui-select": "0.19.8", - "webpack-bundle-size-analyzer": "2.7.0", - "webpack-node-externals": "1.6.0", - "webpack-visualizer-plugin": "0.1.11" - }, - "devDependencies": { - "@types/angular": "1.6.6", - "@types/angular-ui-router": "1.1.39", - "@types/file-saver": "^2.0.1", - "@types/jest": "23.3.7", - "@types/jquery": "3.3.29", - "@types/jqueryui": "1.11.37", - "@types/lodash": "3.10.1", - "@types/moment": "2.13.0", - "@types/node": "8.0.31", - "angular-mocks": "1.6.6", - "awesome-typescript-loader": "3.4.0", - "babel-core": "6.26.0", - "babel-loader": "7.1.2", - "babel-preset-env": "1.6.1", - "bootstrap": "3.3.7", - "bootstrap-sass": "3.3.7", - "clean-webpack-plugin": "0.1.17", - "copy-webpack-plugin": "4.0.1", - "css-loader": "0.28.7", - "fb-watchman": "2.0.0", - "file-loader": "0.11.2", - "friendly-errors-webpack-plugin": "1.6.1", - "html-loader": "0.5.1", - "html-webpack-plugin": "2.30.1", - "imports-loader": "0.7.1", - "jest": "23.6.0", - "node-sass": "4.14.0", - "nodemon": "1.12.1", - "prettier": "1.6.1", - "pug": "2.0.0-rc.4", - "pug-jest": "1.0.1", - "pug-loader": "2.3.0", - "sass-loader": "6.0.6", - "source-map-explorer": "1.5.0", - "style-loader": "0.18.2", - "ts-jest": "21.0.1", - "ts-loader": "3.0.2", - "typescript": "2.6.1", - "uglifyjs-webpack-plugin": "0.4.6", - "url-loader": "0.5.9", - "webpack": "3.8.1", - "webpack-dev-server": "2.9.1", - "webpack-manifest-plugin": "1.3.2", - "webpack-merge": "4.1.0" - }, - "engines": { - "node": ">= 10.15.0" - }, - "resolutions": { - "angular-translate/angular": "1.6.6" - } -} diff --git a/eperusteet/eperusteet-app/yo/test/.jshintrc b/eperusteet/eperusteet-app/yo/test/.jshintrc deleted file mode 100644 index 69babe096f..0000000000 --- a/eperusteet/eperusteet-app/yo/test/.jshintrc +++ /dev/null @@ -1,34 +0,0 @@ -{ - "node": true, - "browser": true, - "esnext": true, - "bitwise": true, - "camelcase": true, - "curly": true, - "eqeqeq": true, - "immed": true, - "indent": 2, - "latedef": true, - "newcap": true, - "noarg": true, - "quotmark": "single", - "undef": true, - "unused": true, - "strict": true, - "trailing": true, - "smarttabs": true, - "globals": { - "after": false, - "afterEach": false, - "angular": false, - "before": false, - "beforeEach": false, - "browser": false, - "describe": false, - "expect": false, - "inject": false, - "it": false, - "spyOn": false - } -} - diff --git a/eperusteet/eperusteet-app/yo/test/runner.html b/eperusteet/eperusteet-app/yo/test/runner.html deleted file mode 100644 index f4a00a12b0..0000000000 --- a/eperusteet/eperusteet-app/yo/test/runner.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - End2end Test Runner - - - - - - \ No newline at end of file diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/esitys.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/esitys.ts deleted file mode 100644 index e285f3b2a5..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/esitys.ts +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -/// - -declare var beforeEach: any; -declare var describe: any; -declare var expect: any; -declare var inject: any; -declare var it: any; -declare var module: any; // FIXME: Tämä ei ole varmaan viisasta -declare var queryDeferred: any; -declare var spyOn: any; - -describe('Controller: EsitysCtrl', function() { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var EsitysCtrl, - scope; - - // Initialize the controller and a mock scope - beforeEach(inject(function($controller, $rootScope) { - scope = $rootScope.$new(); - EsitysCtrl = $controller('EsitysCtrl', { - $scope: scope - }); - })); - - /*it('should attach a list of awesomeThings to the scope', function () { - expect(scope.awesomeThings.length).toBe(3); - });*/ -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/haku.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/haku.ts deleted file mode 100644 index 7d4523f6ae..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/haku.ts +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -describe('Controller: HakuCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var SearchCtrl, - scope, - koulutusalaService; - - // Mock koulutusalaService - beforeEach(module(function($provide) { - koulutusalaService = { - haeKoulutusalat: function() { - return []; - }, - haeKoulutusalaNimi: function(koodi) { - return {}; - } - }; - $provide.value('koulutusalaService', koulutusalaService); - var mockHaku = { - getHakuparametrit: function () { - return {koulutusala: ''}; - }, - setHakuparametrit: function () { - // no-op - } - }; - $provide.value('Haku', mockHaku); - })); - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - - scope = $rootScope.$new(); - SearchCtrl = $controller('HakuCtrl', { - $scope: scope - }); - })); - - it('should work', function () { - //TODO - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/omatperusteprojektit.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/omatperusteprojektit.ts deleted file mode 100644 index 27dbeb08e9..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/omatperusteprojektit.ts +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -describe('Controller: OmatperusteprojektitCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var OmatperusteprojektitCtrl, - scope; - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - scope = $rootScope.$new(); - OmatperusteprojektitCtrl = $controller('OmatperusteprojektitCtrl', { - $scope: scope - }); - })); - - it('should work', function () { - //TODO - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteenTiedot.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteenTiedot.ts deleted file mode 100644 index 8cd2c2e54e..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteenTiedot.ts +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -describe('Controller: PerusteenTiedotCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var PerusteenTiedotCtrl, - scope; - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - - var mockPerusteprojektiTiedot = { - query: function() { - queryDeferred = $q.defer(); - return {$promise: queryDeferred.promise}; - }, - getProjekti: function () {return {};}, - getPeruste: function () {return {};}, - getSisalto: function () {return {};} - }; - spyOn(mockPerusteprojektiTiedot, 'query').andCallThrough(); - - scope = $rootScope.$new(); - PerusteenTiedotCtrl = $controller('PerusteenTiedotCtrl', { - $scope: scope, - perusteprojektiTiedot: mockPerusteprojektiTiedot, - valittavatKielet: [] - }); - })); - - it('should work', function () { - //TODO - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojekti.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojekti.ts deleted file mode 100644 index 8624bd1353..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojekti.ts +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; - -describe('Controller: PerusteprojektiCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var PerusteprojektiCtrl, - scope; - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - var mockKoulutusalaService = { - query: function() { - queryDeferred = $q.defer(); - return {$promise: queryDeferred.promise}; - } - }; - spyOn(mockKoulutusalaService, 'query').andCallThrough(); - - var mockOpintoalaService = { - query: function() { - queryDeferred = $q.defer(); - return {$promise: queryDeferred.promise}; - } - }; - spyOn(mockOpintoalaService, 'query').andCallThrough(); - - var mockPerusteprojektiTiedot = { - query: function() { - queryDeferred = $q.defer(); - return {$promise: queryDeferred.promise}; - }, - getProjekti: function () {return {};}, - getPeruste: function () {return {};}, - getSisalto: function () {return {};} - }; - spyOn(mockPerusteprojektiTiedot, 'query').andCallThrough(); - - var mockPerusteprojektiOikeudet = { - noudaOikeudet: function() { - queryDeferred = $q.defer(); - return {$promise: queryDeferred.promise}; - }, - getOikeudet: function () {return {};}, - onkoOikeudet: function () {return true;}, - }; - spyOn(mockPerusteprojektiOikeudet, 'noudaOikeudet').andCallThrough(); - - scope = $rootScope.$new(); - PerusteprojektiCtrl = $controller('PerusteprojektiCtrl', { - $scope: scope, - koulutusalaService: mockKoulutusalaService, - opintoalaService: mockOpintoalaService, - perusteprojektiTiedot: mockPerusteprojektiTiedot, - perusteprojektiOikeudet: mockPerusteprojektiOikeudet - }); - })); - - it('should work', function () { - //TODO - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojektiTiedot.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojektiTiedot.ts deleted file mode 100644 index 06eb4f8493..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojektiTiedot.ts +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -describe('Controller: ProjektinTiedotCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var PerusteprojektiCtrl, - scope, - koulutusalaService, - opintoalaService, - perusteprojektiTiedot; - - // Mock koulutusalaService - beforeEach(module(function($provide) { - koulutusalaService = { - haeKoulutusalat: function() { - return []; - }, - haeKoulutusalaNimi: function(koodi) { - return {}; - } - }; - $provide.value('koulutusalaService', koulutusalaService); - - opintoalaService = { - haeOpintoalat: function() { - return []; - }, - haeOpintoalaNimi: function(koodi) { - return {}; - } - }; - $provide.value('opintoalaService', opintoalaService); - - perusteprojektiTiedot = { - getProjekti: function () {return {};}, - getPeruste: function () {return {};}, - getSisalto: function () {return {};} - }; - $provide.value('perusteprojektiTiedot', perusteprojektiTiedot); - })); - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - scope = $rootScope.$new(); - PerusteprojektiCtrl = $controller('ProjektinTiedotCtrl', { - $scope: scope - }); - })); - - it('should work', function () { - //TODO - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojektisisalto.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojektisisalto.ts deleted file mode 100644 index 3b41770957..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojektisisalto.ts +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -describe('Controller: PerusteprojektisisaltoCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var PerusteprojektisisaltoCtrl, - scope; - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - - var mockPerusteprojektiTiedot = { - query: function() { - queryDeferred = $q.defer(); - return {$promise: queryDeferred.promise}; - }, - getProjekti: function () {return {};}, - getPeruste: function () {return {};}, - getSisalto: function () {return {};} - }; - spyOn(mockPerusteprojektiTiedot, 'query').andCallThrough(); - - scope = $rootScope.$new(); - PerusteprojektisisaltoCtrl = $controller('PerusteprojektisisaltoCtrl', { - $scope: scope, - perusteprojektiTiedot: mockPerusteprojektiTiedot - }); - })); - - it('should work', function () { - //TODO - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojektitoimikausi.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojektitoimikausi.ts deleted file mode 100644 index 582d53e4ab..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/perusteprojektitoimikausi.ts +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -describe('Controller: PerusteprojektiToimikausiCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var PerusteprojektiToimikausiCtrl, - scope; - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - scope = $rootScope.$new(); - scope.projekti = {}; - scope.projekti.toimikausiAlku = {}; - scope.projekti.toimikausiLoppu = {}; - PerusteprojektiToimikausiCtrl = $controller('PerusteprojektiToimikausiCtrl', { - $scope: scope - }); - })); - - it('should work', function () { - //TODO - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/projektinperustiedot.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/projektinperustiedot.ts deleted file mode 100644 index 022da835cc..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/projektinperustiedot.ts +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -describe('Controller: ProjektinperustiedotCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var ProjektinperustiedotCtrl, - scope; - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - scope = $rootScope.$new(); - scope.projekti = {}; - scope.projekti.paatosPvm = {}; - ProjektinperustiedotCtrl = $controller('ProjektinperustiedotCtrl', { - $scope: scope - }); - })); - - it('should work', function () { - //TODO - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/projektiryhma.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/projektiryhma.ts deleted file mode 100644 index 082ee26756..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/projektiryhma.ts +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -describe('Controller: ProjektiryhmaCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var ProjektiryhmaCtrl, - scope; - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - scope = $rootScope.$new(); - ProjektiryhmaCtrl = $controller('ProjektiryhmaCtrl', { - $scope: scope - }); - })); - - it('should work', function () { - //TODO - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/controllers/tutkinnonosaosaalue.ts b/eperusteet/eperusteet-app/yo/test/spec/controllers/tutkinnonosaosaalue.ts deleted file mode 100644 index 81ea9a7155..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/controllers/tutkinnonosaosaalue.ts +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -describe('Controller: TutkinnonosaosaalueCtrl', function () { - - // load the controller's module - beforeEach(module('eperusteApp')); - - var TutkinnonosaosaalueCtrl, - scope; - - // Initialize the controller and a mock scope - beforeEach(inject(function ($controller, $rootScope) { - scope = $rootScope.$new(); - TutkinnonosaosaalueCtrl = $controller('TutkinnonosaosaalueCtrl', { - $scope: scope - }); - })); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/directives/arviointi.ts b/eperusteet/eperusteet-app/yo/test/spec/directives/arviointi.ts deleted file mode 100644 index b8eda2d5af..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/directives/arviointi.ts +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -describe('Directive: arviointi', function () { - - var ASTEIKOT = _.indexBy([{"id" : 2, - "osaamistasot" : [ { - "id" : 2, - "otsikko" : { - "_id" : "48", - "fi" : "Tyydyttävä T1", - "sv" : "[Tyydyttävä T1]" - } - }] - }], 'id'); - - // load the directive's module - beforeEach(module('eperusteApp', - 'views/aloitussivu.html', - 'views/partials/arviointi.html', - 'views/partials/arvioinninTekstikentta.html', function ($provide) { - $provide.value('YleinenData', { - arviointiasteikot: ASTEIKOT, - haeArviointiasteikot: angular.noop, - vaihdaKieli: angular.noop - }); - })); - - var element, scope, $compile, $http; - - - beforeEach(inject(function ($rootScope, _$compile_, $httpBackend) { - $http = $httpBackend; - $httpBackend.when('GET', /cas\/me/).respond({}); - $httpBackend.when('GET', /localisation.+/).respond({}); - $httpBackend.when('GET', /eperusteet-service\/api.+/).respond({}); - scope = $rootScope.$new(); - $compile = _$compile_; - })); - - function kaannaElementti() { - element = angular.element(''); - $compile(element)(scope); - scope.$digest(); - } - - it('näyttää kohdealueet ja kriteerit', function () { - scope.arviointi = { - id: 2276, - lisatiedot: null, - arvioinninKohdealueet: [{ - otsikko: {fi: 'Työprosessin hallinta'}, - arvioinninKohteet: [{ - otsikko : {fi: 'Suunnittelu'}, - _arviointiAsteikko: '2', - osaamistasonKriteerit: [{ - _osaamistaso: '2', - kriteerit: [ - {fi: 'kriteeri 1'}, - {fi: 'kriteeri 2'}, - {fi: 'kriteeri 3'} - ] - }] - }] - }] - }; - $http.flush(); - kaannaElementti(); - var html = element.html(); - expect(html).toContain('Työprosessin hallinta'); - expect(html).toContain('Suunnittelu'); - expect(html).toContain('kriteeri 2'); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/directives/ckeditor.ts b/eperusteet/eperusteet-app/yo/test/spec/directives/ckeditor.ts deleted file mode 100644 index 5c58d25d34..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/directives/ckeditor.ts +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -describe('Directive: ckeditor', function () { - - // load the directive's module - beforeEach(module('eperusteApp')); - - var element, - scope; - - beforeEach(inject(function ($rootScope) { - scope = $rootScope.$new(); - scope.model = 'Editable'; - })); - - it('should make hidden element visible', inject(function ($compile) { - element = angular.element('
      Editable
      '); - element = $compile(element)(scope); - expect(element.text()).toBe('Editable'); - })); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/directives/datecomparisonvalidator.ts b/eperusteet/eperusteet-app/yo/test/spec/directives/datecomparisonvalidator.ts deleted file mode 100644 index e86e417901..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/directives/datecomparisonvalidator.ts +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -describe('Directive: dateComparisonValidator', function () { - - // load the directive's module - beforeEach(module('eperusteApp')); - - var element, - scope; - - beforeEach(inject(function ($rootScope) { - scope = $rootScope.$new(); - })); - - it('should work', inject(function ($compile) { - // TODO - })); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/directives/esitysOtsikko.ts b/eperusteet/eperusteet-app/yo/test/spec/directives/esitysOtsikko.ts deleted file mode 100644 index d1ab8d92ac..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/directives/esitysOtsikko.ts +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -describe('Directive: esitysOtsikko', function() { - - // load the directive's module - beforeEach(module('eperusteApp')); - - var element, - scope; - - beforeEach(inject(function($rootScope) { - scope = $rootScope.$new(); - })); - - it('should make hidden element visible', inject(function($compile) { - element = angular.element(''); - element = $compile(element)(scope); - //expect(element.text()).toBe('this is the esitysOtsikko directive'); - })); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/directives/formfield.ts b/eperusteet/eperusteet-app/yo/test/spec/directives/formfield.ts deleted file mode 100644 index 6fedaabc55..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/directives/formfield.ts +++ /dev/null @@ -1,143 +0,0 @@ -'use strict'; -import _ from "lodash"; - -describe('Directive: formfield', function () { - - // load the directive's module - beforeEach(module('eperusteApp', - 'views/partials/formfield.html', - 'views/partials/numberinput.html', - 'views/multiinput.html')); - - var element, scope, $compile, $timeout, $httpBackend; - - beforeEach(inject(function ($rootScope, _$compile_, _$httpBackend_, _$timeout_) { - $httpBackend = _$httpBackend_; - $httpBackend.when('GET', /cas\/me/).respond({}); - $httpBackend.when('GET', /localisation.+/).respond({}); - $httpBackend.when('GET', /eperusteet-service\/api.+/).respond({}); - $httpBackend.when('GET', /views\/aloitussivu.+/).respond({}); - scope = $rootScope.$new(); - $compile = _$compile_; - $timeout = _$timeout_; - })); - - function kaanna(el) { - element = angular.element(el); - element = $compile(element)(scope); - scope.$digest(); - } - - it('should assign unique labels', function () { - scope.data = {text: null}; - var template = _.template(''); - var field, input, label; - _.each(_.range(5), function (item, index) { - field = template({type: index > 2 ? 'number' : 'text'}); - kaanna(field); - input = element.find('input'); - label = element.find('label'); - $timeout.flush(); - expect(input.length).toBe(1); - expect(label.length).toBe(1); - expect(input.attr('id')).toBe('thelabel-' + index); - expect(label.attr('for')).toBe('thelabel-' + index); - }); - }); - - describe('deep object text field', function () { - it('should update the model properly on text input', function () { - scope.data = { - deeper: { - anddeeper: { - text: null - } - } - }; - kaanna(''); - var input = element.find('input'); - input.scope().input.model = 'value'; - scope.$digest(); - expect(scope.data.deeper.anddeeper.text).toBe('value'); - }); - }); - - describe('formfield of type textarea', function () { - it('should render itself as textarea element', function () { - scope.data = { - model: { - fi: 'moi' - } - }; - kaanna(''); - var input = element.find('textarea'); - expect(input.length).toBe(1); - }); - }); - - describe('number type input', function () { - it('should render itself as type="number"', function () { - scope.data = {number: 0}; - kaanna(''); - var input = element.find('input'); - expect(input.length).toBe(1); - expect(input.attr('type')).toBe('number'); - }); - - it('should validate itself on a form', function () { - scope.data = {number: 0}; - kaanna('
      ' + - '' + - '
      '); - var form = scope.myform; - $timeout.flush(); - var field = form.innerForm.tmpName; - field.$setViewValue('asdf'); - expect(field.$valid).toBe(false); - expect(field.$error.number).toBe(true); - field.$setViewValue('8'); - expect(field.$valid).toBe(true); - field.$setViewValue('1'); - expect(field.$error.min).toBe(true); - field.$setViewValue('100'); - expect(field.$error.max).toBe(true); - }); - }); - - describe('options type input', function () { - it('should support flat array', function () { - scope.data = {option: 'first option'}; - scope.options = ['first option', 'second option']; - kaanna(''); - var options = element.find('option').not('.ng-hide'); - expect(options.length).toBe(2); - expect(options.eq(0).text()).toBe('first option'); - expect(options.eq(0).attr('selected')).toBe('selected'); - expect(options.eq(1).text()).toBe('second option'); - expect(options.eq(1).attr('selected')).toBeUndefined(); - }); - - it('should support placeholder option', function () { - scope.data = {option: 200}; - scope.options = [ - {value: 100, label: 'first option'}, - {value: 200, label: 'second option'} - ]; - kaanna(''); - var options = element.find('option'); - expect(options.length).toBe(3); - expect(options.eq(0).text()).toBe('choose one'); - expect(options.eq(1).text()).toBe('first option'); - expect(options.eq(2).text()).toBe('second option'); - expect(options.eq(2).attr('selected')).toBe('selected'); - }); - }); - - describe('date type input', function () { - it('should be rendered with a datepicker', function () { - scope.data = {date: 23456789}; - kaanna(''); - expect(element.find('.input-group-btn button').length).toBe(1); - }); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/directives/numberinput.ts b/eperusteet/eperusteet-app/yo/test/spec/directives/numberinput.ts deleted file mode 100644 index 6dfe4ea66d..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/directives/numberinput.ts +++ /dev/null @@ -1,142 +0,0 @@ -'use strict'; -import _ from "lodash"; - -describe('Directive: numberinput', function () { - - // load the directive's module - beforeEach(module('eperusteApp', - 'views/partials/numberinput.html')); - - var element, scope, $compile, $timeout; - - beforeEach(inject(function ($rootScope, _$compile_, $httpBackend, _$timeout_) { - $httpBackend.when('GET', /localisation.+/).respond({}); - $httpBackend.when('GET', /eperusteet-service\/api.+/).respond({}); - $httpBackend.when('GET', /views\/aloitussivu.+/).respond({}); - $httpBackend.when('GET', /cas\/me/).respond({}); - scope = $rootScope.$new(); - $compile = _$compile_; - $timeout = _$timeout_; - })); - - function kaanna(el) { - element = angular.element(el); - element = $compile(element)(scope); - scope.$digest(); - } - - describe('without type', function () { - var input; - beforeEach(function () { - scope.data = {number: 1}; - var html = '
      '; - kaanna(html); - input = element.find('input'); - }); - - it('should render itself as input type=number', function () { - expect(input.attr('type')).toBe('number'); - }); - - it('should accept integers', function () { - scope.data.number = 5; - scope.$digest(); - expect(scope.myform.$valid).toBeTruthy(); - }); - - it('should not accept text', function () { - scope.data.number = 'asdf'; - expect(function () { - scope.$digest(); - }).toThrow(); - }); - - it('should accept floats', function () { - scope.data.number = 123.45; - scope.$digest(); - expect(scope.myform.$valid).toBeTruthy(); - }); - }); - - describe('with type integer', function () { - var input; - beforeEach(function () { - scope.data = {number: 1}; - var html = '
      '; - kaanna(html); - input = element.find('input'); - }); - - it('should render itself as input type=number', function () { - expect(input.attr('type')).toBe('number'); - }); - - it('should accept integers', function () { - scope.data.number = 5; - scope.$digest(); - expect(scope.myform.$valid).toBeTruthy(); - }); - - /* - it('should not accept text', function () { - scope.data.number = 'asdf'; - scope.$digest(); - expect(scope.myform.$error.number).toBeTruthy(); - }); - */ - it('should not accept floats', function () { - scope.data.number = 123.45; - scope.$digest(); - expect(scope.myform.$error.integer).toBeTruthy(); - }); - }); - - describe('with type float', function () { - var input; - beforeEach(function () { - scope.data = {number: 1}; - var html = '
      ' + - '' + - '
      '; - kaanna(html); - input = element.find('input'); - }); - - it('should accept integers', function () { - scope.data.number = 5; - scope.$digest(); - expect(scope.myform.$valid).toBeTruthy(); - }); - - it('should not accept text', function () { - scope.data.number = 'asdf'; - scope.$digest(); - expect(scope.myform.$error.float).toBeTruthy(); - }); - - it('should accept floats on steps', function () { - scope.data.number = 100.4; - scope.$digest(); - expect(scope.myform.$valid).toBeTruthy(); - }); - - it('should not accept floats between steps', function () { - $timeout.flush(); - scope.data.number = 123.3; - scope.$digest(); - expect(scope.myform.$error.step).toBeTruthy(); - }); - - it('should respect min/max limits', function () { - $timeout.flush(); - var field = scope.myform.innerForm.tmpName; - field.$setViewValue('-1'); - expect(scope.myform.$error.min).toBeTruthy(); - field.$setViewValue('201'); - expect(scope.myform.$error.max).toBeTruthy(); - field.$setViewValue('199'); - expect(scope.myform.$error.min).toBeFalsy(); - expect(scope.myform.$error.max).toBeFalsy(); - }); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/directives/ohje.ts b/eperusteet/eperusteet-app/yo/test/spec/directives/ohje.ts deleted file mode 100644 index 808e2a9f79..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/directives/ohje.ts +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -describe('Directive: ohje', function () { - - // load the directive's module - beforeEach(module('eperusteApp', - 'views/aloitussivu.html', - 'views/partials/ohje.html' - )); - - var element, scope, $compile, $http, $timeout; - - - beforeEach(inject(function ($rootScope, _$compile_, $httpBackend, _$timeout_) { - $http = $httpBackend; - $httpBackend.when('GET', /localisation.+/).respond({}); - $httpBackend.when('GET', /eperusteet-service\/api.+/).respond({}); - $httpBackend.when('GET', /cas\/me/).respond({}); - scope = $rootScope.$new(); - $compile = _$compile_; - $timeout = _$timeout_; - })); - - function kaannaElementti(el) { - element = angular.element(el); - $compile(element)(scope); - scope.$digest(); - } - - it('constructs a badge for mouseover', function () { - kaannaElementti(''); - expect(element.find('.badge').length).toBe(1); - expect(element.text()).toMatch(/\s*\?\s*/); - }); - - it('it wraps an existing element with custom title', function () { - scope.model = { - otsikko: {fi: 'My title'} - }; - kaannaElementti('

      Text

      '); - expect(element.find('.popover-element').attr('popover-title')).toBe('My title'); - expect(element.find('.my-text').length).toBe(1); - expect(element.find('.badge').length).toBe(0); - }); - - it('allows custom appended content', function () { - scope.model = { - teksti: {fi: 'Joku teksti'}, - extra: '
      {{num}}
      ' - }; - kaannaElementti(''); - element.isolateScope().show(); - $timeout.flush(); - expect(element.find('.extra-item').length).toBe(2); - expect(element.find('.popover-content').text()).toMatch(/Joku teksti/); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/directives/rajaus.ts b/eperusteet/eperusteet-app/yo/test/spec/directives/rajaus.ts deleted file mode 100644 index f9e402ec14..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/directives/rajaus.ts +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -describe('Directive: rajaus', function () { - - // load the directive's module - beforeEach(module('eperusteApp', - 'views/aloitussivu.html', - 'views/partials/rajaus.html' - )); - - var element, scope, $compile, $http; - - - beforeEach(inject(function ($rootScope, _$compile_, $httpBackend) { - $http = $httpBackend; - $httpBackend.when('GET', /localisation.+/).respond({}); - $httpBackend.when('GET', /eperusteet-service\/api.+/).respond({}); - scope = $rootScope.$new(); - $compile = _$compile_; - })); - - function kaannaElementti(el) { - element = angular.element(el); - $compile(element)(scope); - scope.$digest(); - }; - - it('accepts placeholder as string', function () { - scope.model = {}; - kaannaElementti(''); - expect(element.find('input').attr('placeholder')).toBe('TESTERSTRING'); - }); - - it('accepts placeholder as model', function () { - scope.model = {}; - scope.search = { - placeholder: 'MODELSTRING' - }; - kaannaElementti(''); - expect(element.find('input').attr('placeholder')).toBe('MODELSTRING'); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/PerusteenOsat.ts b/eperusteet/eperusteet-app/yo/test/spec/services/PerusteenOsat.ts deleted file mode 100644 index 223a98bbc3..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/PerusteenOsat.ts +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -describe('Service: PerusteenOsat', function () { - - // load the service's module - beforeEach(module('eperusteApp')); - - // instantiate service - var PerusteenOsat; - beforeEach(inject(function (_PerusteenOsat_) { - PerusteenOsat = _PerusteenOsat_; - })); - - it('should do something', function () { - expect(!!PerusteenOsat).toBe(true); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/algoritmit.ts b/eperusteet/eperusteet-app/yo/test/spec/services/algoritmit.ts deleted file mode 100644 index 788219c15a..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/algoritmit.ts +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -'use strict'; - -describe('Service: Algoritmit', function() { - var $q, - service, - obj, - puu; - - beforeEach(module('eperusteApp')); - beforeEach(inject(function(Algoritmit, _$q_) { - service = Algoritmit; - $q = _$q_; - - obj = { - something: { - complitely: 'different' - } - }; - - puu = { - sisalto: '0', - lapset: [{ - sisalto: '1', - lapset: [] - }, { - sisalto: '2', - lapset: [{ - sisalto: '3', - }, { - sisalto: '4', - lapset: [{ - sisalto: '5', - }] - }] - }] - }; - })); - - describe('access', function() { - it('can access nested objects', function() { - expect(service.access(obj, 'something', 'complitely')).toBe('different'); - expect(service.access(obj, 'something', 'complitely', 'different')).toBe(undefined); - }); - }); - - describe('rajausVertailu', function() { - it('compares strings incasesensitively', function() { - var obj = { - fi: 'Testiolio' - }; - - expect(service.rajausVertailu('testi', obj, 'fi')).toBe(true); - expect(service.rajausVertailu('TeSTi', obj, 'fi')).toBe(true); - expect(service.rajausVertailu('testit', obj, 'fi')).toBe(false); - expect(service.rajausVertailu('rkKij', 'testimerkkijono')).toBe(true); - }); - }); - - describe('mapLapsisolmut', function() { - it('traverses a tree and returns altered nodes', function() { - var result = service.mapLapsisolmut(puu, 'lapset', function(solmu) { - solmu.sisalto = 'etuliite-' + solmu.sisalto; - return solmu; - }); - - expect(puu.lapset[0].sisalto).toBe('1'); - expect(result[0].sisalto).toBe('etuliite-1'); - expect(result[1].sisalto).toBe('etuliite-2'); - expect(result[1].lapset[0].sisalto).toBe('etuliite-3'); - expect(result[1].lapset[1].lapset[0].sisalto).toBe('etuliite-5'); - }); - }); - - describe('kaikilleLapsisolmuille', function() { - it('can alter the state of all nodes of a tree', function() { - service.kaikilleLapsisolmuille(puu, 'lapset', function(solmu) { - solmu.sisalto = 'etuliite-' + solmu.sisalto; - }); - - expect(puu.lapset[0].sisalto).toBe('etuliite-1'); - expect(puu.lapset[1].sisalto).toBe('etuliite-2'); - expect(puu.lapset[1].lapset[0].sisalto).toBe('etuliite-3'); - expect(puu.lapset[1].lapset[1].lapset[0].sisalto).toBe('etuliite-5'); - }); - }); - - describe('perusteenSuoritustavanYksikko', function() { - it('palauttaa perusteen suoritustavan yksikön', function() { - var yksikko = service.perusteenSuoritustavanYksikko({ - suoritustavat: [{ - suoritustapakoodi: 'naytto' - }, { - suoritustapakoodi: 'ops', - laajuusYksikko: 'osp' - }] - }, 'ops'); - expect(yksikko).toBe('osp'); - }); - }); - - describe('normalizeTeksti', function() { - it('poistaa tekstistä ei halutut merkit', function() { - expect(service.normalizeTeksti('x y')).toBe('x y'); - expect(service.normalizeTeksti('\n\r')).toBe(''); - expect(service.normalizeTeksti(' Hei olen \rtodella huonosti formatoitu +teksti. ')) - .toBe('Hei olen todella huonosti formatoitu +teksti.'); - - expect(service.normalizeTeksti({ - fi: ' Lorem   ipsum', - sv: 'toinen teksti ' - })) - .toEqual({ - fi: 'Lorem ipsum', - sv: 'toinen teksti' - }); - - }); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/kayttajaprofiilit.ts b/eperusteet/eperusteet-app/yo/test/spec/services/kayttajaprofiilit.ts deleted file mode 100644 index eb8fe996c8..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/kayttajaprofiilit.ts +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -describe('Service: Kayttajaprofiilit', function() { - - // load the service's module - beforeEach(module('eperusteApp')); - - // instantiate service - var Kayttajaprofiilit; - beforeEach(inject(function(_Kayttajaprofiilit_) { - Kayttajaprofiilit = _Kayttajaprofiilit_; - })); - - it('should do something', function() { - expect(!!Kayttajaprofiilit).toBe(true); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/muodostumissaannot.ts b/eperusteet/eperusteet-app/yo/test/spec/services/muodostumissaannot.ts deleted file mode 100644 index 6556c74bee..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/muodostumissaannot.ts +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -'use strict'; - -describe('Service: Muodostumissaannot', function() { - var $q, - service, - algo, - osat, - viitteet, - rakenne; - - beforeEach(module('eperusteApp')); - beforeEach(inject(function(Muodostumissaannot, Algoritmit, _$q_) { - service = Muodostumissaannot; - algo = Algoritmit; - $q = _$q_; - - osat = { - A: { - nimi: 'A', - rooli: 'määritelty', - muodostumisSaanto: { - laajuus: { - minimi: 50, - maksimi: 60, - }, - }, - osat: [{ - _tutkinnonOsaViite: '9975' - }, { - _tutkinnonOsaViite: '11299' - }, { - _tutkinnonOsaViite: '8690' - }, { - _tutkinnonOsaViite: '8204' - }, { - _tutkinnonOsaViite: '9502' - }], - }, - B: { - nimi: 'B', - rooli: 'määritelty', - muodostumisSaanto: { - laajuus: { - minimi: 30, - maksimi: 35, - }, - }, - osat: [{ - _tutkinnonOsaViite: '10596' - }, { - _tutkinnonOsaViite: '8018' - }, { - _tutkinnonOsaViite: '10195' - }], - }, - V: { - nimi: 'V', - rooli: 'määritelty', - muodostumisSaanto: { - laajuus: { - minimi: 70, - maksimi: 70, - }, - }, - osat: [{ - _tutkinnonOsaViite: '10596' - }, { - _tutkinnonOsaViite: '8018' - }, { - _tutkinnonOsaViite: '10195' - }], - }, - X: { - nimi: 'X', - rooli: 'määrittelemätön', - muodostumisSaanto: { - laajuus: { - minimi: 20, - maksimi: 30, - }, - }, - osat: [], - }, - }; - - rakenne = { - rooli: 'määritelty', - nimi: 'ROOT', - muodostumisSaanto: { - laajuus: { - minimi: 140, - maksimi: 140, - }, - }, - osat: [osat.X, osat.A, osat.B, osat.V, { - pakollinen: false, - _tutkinnonOsaViite: '9228' - }], - }; - - viitteet = { - 8018: { - id: 8018, - laajuus: 20, - tyyppi: 'normaali', - _tutkinnonOsa: '8019' - }, - 8204: { - id: 8204, - laajuus: 20, - tyyppi: 'normaali', - _tutkinnonOsa: '8205' - }, - 8444: { - id: 8444, - laajuus: 20, - tyyppi: 'normaali', - _tutkinnonOsa: '8445' - }, - 8690: { - id: 8690, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '8691' - }, - 8934: { - id: 8934, - laajuus: 20, - tyyppi: 'normaali', - _tutkinnonOsa: '8935' - }, - 9228: { - id: 9228, - laajuus: 20, - tyyppi: 'normaali', - _tutkinnonOsa: '9229' - }, - 9502: { - id: 9502, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '9503' - }, - 9723: { - id: 9723, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '9724' - }, - 9975: { - id: 9975, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '9976' - }, - 10195: { - id: 10195, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '10196' - }, - 10419: { - id: 10419, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '10420' - }, - 10596: { - id: 10596, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '10597' - }, - 10792: { - id: 10792, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '10793' - }, - 10947: { - id: 10947, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '10948' - }, - 11113: { - id: 11113, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '11114' - }, - 11299: { - id: 11299, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '11300' - }, - 11445: { - id: 11445, - laajuus: 10, - tyyppi: 'normaali', - _tutkinnonOsa: '11446' - } - }; - - service.laskeLaajuudet(rakenne, viitteet); - })); - - describe('Muodostumissäännöt', function() { - - it('pystyy validoimaan ryhmän A', function() { - expect(service.validoiRyhma(osat.A, viitteet)).toBe(0); - expect(osat.A.$virhe).toBeUndefined(); - }); - - it('pystyy validoimaan ryhmän B', function() { - expect(service.validoiRyhma(osat.B, viitteet)).toBe(0); - expect(osat.B.$virhe).toBeUndefined(); - }); - - it('pystyy validoimaan ryhmän X', function() { - expect(service.validoiRyhma(osat.X, viitteet)).toBe(0); - expect(osat.X.$virhe).toBeUndefined(); - }); - - it('pystyy validoimaan ryhmän V', function() { - expect(service.validoiRyhma(osat.V, viitteet)).toBe(1); - expect(osat.V.$virhe.virhe).toBe('muodostumis-rakenne-validointi-laajuus'); - }); - - it('pystyy validoimaan koko puun', function() { - expect(service.validoiRyhma(rakenne, viitteet)).toBe(1); - expect(rakenne.$virhe).toBeUndefined(); - }); - - it('pystyy laskemaan laajuudet ryhmille', function() { - function testaa(osa, laajuus, vaadittu) { - expect(osa.$laajuus).toBe(laajuus); - expect(osa.$vaadittuLaajuus).toBe(vaadittu); - } - - testaa(rakenne, 185, 140); - algo.kaikilleLapsisolmuille(rakenne, 'osat', function(osa) { - if (osa.osat) { - if (osa.nimi === 'A') { testaa(osa, 60, 60); } - else if (osa.nimi === 'B') { testaa(osa, 40, 35); } - else if (osa.nimi === 'V') { testaa(osa, 40, 70); } - else if (osa.nimi === 'X') { testaa(osa, 30, 30); } - } - }); - }); - - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/muokkausutils.ts b/eperusteet/eperusteet-app/yo/test/spec/services/muokkausutils.ts deleted file mode 100644 index d55a572854..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/muokkausutils.ts +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -describe('Service: MuokkausUtils', function() { - var service, data; - - beforeEach(module('eperusteApp')); - beforeEach(inject(function(MuokkausUtils) { - service = MuokkausUtils; - data = { - taso1: { - taso2: { - taso3: { - avain: 'arvo' - } - }, - taso2array: [ - {nimi: 'item1'}, - {nimi: 'item2'}, - ] - } - }; - })); - - it('has kertoo onko polku olemassa', function() { - expect(service.nestedHas(data, 'taso1.taso2.taso3', '.')).toBe(true); - expect(service.nestedHas(data, 'taso1.taso2.taso4', '.')).toBe(false); - expect(service.nestedHas(data, 'taso1.taso2array[0]', '.')).toBe(true); - expect(service.nestedHas(data, 'taso1.taso2array[3]', '.')).toBe(false); - }); - - it('get saa datan syvästä hierarkiasta', function() { - expect(service.nestedGet(data, 'taso1.taso2.taso3.avain', '.')).toBe('arvo'); - }); - - it('set asettaa datan syvään hierarkiaan', function() { - service.nestedSet(data, 'taso1.taso2.taso3.avain', '.', 'uusiarvo'); - expect(service.nestedGet(data, 'taso1.taso2.taso3.avain', '.')).toBe('uusiarvo'); - }); - - it('set asettaa täysin uuden objektin', function() { - service.nestedSet(data, 'taso1.taso2.uusitaso.nimi', '.', 'uusiarvo'); - expect(service.nestedGet(data, 'taso1.taso2.uusitaso.nimi', '.')).toBe('uusiarvo'); - }); - - it('get saa datan taulukosta', function() { - expect(service.nestedGet(data, 'taso1.taso2array[0].nimi', '.')).toBe('item1'); - expect(service.nestedGet(data, 'taso1.taso2array[1].nimi', '.')).toBe('item2'); - }); -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/navigaatiopolku.ts b/eperusteet/eperusteet-app/yo/test/spec/services/navigaatiopolku.ts deleted file mode 100644 index 64ab64d1fa..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/navigaatiopolku.ts +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -describe('Service: Navigaatiopolku', function () { - - // load the service's module - beforeEach(module('eperusteApp')); - - // instantiate service - var Navigaatiopolku; - beforeEach(inject(function (_Navigaatiopolku_) { - Navigaatiopolku = _Navigaatiopolku_; - })); - - it('should do something', function () { - expect(!!Navigaatiopolku).toBe(true); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/opintoalat.ts b/eperusteet/eperusteet-app/yo/test/spec/services/opintoalat.ts deleted file mode 100644 index 7b9e5a6fab..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/opintoalat.ts +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -describe('Service: Opintoalat', function () { - - // load the service's module - beforeEach(module('eperusteApp')); - - // instantiate service - var Opintoalat; - beforeEach(inject(function (_Opintoalat_) { - Opintoalat = _Opintoalat_; - })); - - it('should do something', function () { - expect(!!Opintoalat).toBe(true); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/perusteprojekti.ts b/eperusteet/eperusteet-app/yo/test/spec/services/perusteprojekti.ts deleted file mode 100644 index 5c95d073e6..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/perusteprojekti.ts +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -describe('Service: PerusteprojektiResource', function () { - - // load the service's module - beforeEach(module('eperusteApp')); - - // instantiate service - var PerusteprojektiResource; - beforeEach(inject(function (_PerusteprojektiResource_) { - PerusteprojektiResource = _PerusteprojektiResource_; - })); - - it('should do something', function () { - expect(!!PerusteprojektiResource).toBe(true); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/sivunavi.ts b/eperusteet/eperusteet-app/yo/test/spec/services/sivunavi.ts deleted file mode 100644 index 6dca45acfb..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/sivunavi.ts +++ /dev/null @@ -1,79 +0,0 @@ -'use strict'; - -describe('Service: PerusteProjektiSivunavi', function() { - - // load the service's module - beforeEach(module('eperusteApp')); - - beforeEach(function () { - var mockTiedot = { - getProjekti: function () { return {}; }, - getPeruste: function () { return {}; }, - getSisalto: function () { return {}; }, - getYlTiedot: function () { - return { - oppiaineet: [ - {nimi: {fi: 'Matematiikka'}}, - {nimi: {fi: 'B-kieli'}, oppimaarat: [ - {nimi: {fi: 'Ranska'}}, - {nimi: {fi: 'Saksa'}}, - ]} - ] - }; - } - }; - - var loader = { - then: function (cb) { - cb(mockTiedot); - } - }; - - var yleinenMock = { - isPerusopetus: function () { return true; } - }; - - module(function ($provide) { - $provide.value('PerusteprojektiTiedotService', loader); - $provide.value('YleinenData', yleinenMock); - }); - - }); - - // instantiate service - var PerusteProjektiSivunavi, PerusopetusService, $timeout, $http; - - beforeEach(inject(function(_PerusteProjektiSivunavi_, _PerusopetusService_, _$timeout_, $httpBackend) { - PerusteProjektiSivunavi = _PerusteProjektiSivunavi_; - PerusopetusService = _PerusopetusService_; - $timeout = _$timeout_; - $http = $httpBackend; - $httpBackend.when('GET', /cas\/me/).respond({}); - $httpBackend.when('GET', /views.+/).respond({}); - $httpBackend.when('GET', /localisation.+/).respond({}); - $httpBackend.when('GET', /eperusteet-service\/api.+/).respond({}); - })); - - it('should build sivunavi hierarchy for YL', function () { - var items = []; - var callbacks = { - changed: function (value) { - items = value; - }, - typeChanged: function () {} - }; - - spyOn(callbacks, 'typeChanged'); - PerusteProjektiSivunavi.register('itemsChanged', callbacks.changed); - PerusteProjektiSivunavi.register('typeChanged', callbacks.typeChanged); - PerusteProjektiSivunavi.refresh(true); - $timeout.flush(); - - expect(callbacks.typeChanged).toHaveBeenCalledWith('YL'); - var level2Items = _.filter(items, function (item) { - return item.depth === 2; - }); - expect(_.size(level2Items)).toBe(2); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/utils.ts b/eperusteet/eperusteet-app/yo/test/spec/services/utils.ts deleted file mode 100644 index 9a1df503e2..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/utils.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus - * - * This program is free software: Licensed under the EUPL, Version 1.1 or - as - * soon as they will be approved by the European Commission - subsequent versions - * of the EUPL (the "Licence"); - * - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * European Union Public Licence for more details. - */ - -'use strict'; - -describe('Service: Utils', function() { - var service; - var fn; - beforeEach(module('eperusteApp')); - beforeEach(inject(function(Utils) { - service = Utils; - fn = service.presaveStrip; - })); - - describe('presaveStrip', function() { - it('does nothing for non-objects or non-arrays', function() { - expect(fn(undefined)).toBe(undefined); - expect(fn('string')).toBe('string'); - expect(fn(98)).toBe(98); - }); - - it('strips objects in arrays', function() { - var arr = [ - {a: 1, b: 2, $extra: 'foo'}, - {c: 3, $d: 'a'} - ]; - expect(fn(arr)).toEqual([{a: 1, b: 2},{c: 3}]); - }); - - it('strips deep objects', function() { - var obj = { - arr: [ - {a: 1, b: 2, $extra: 'foo'}, - {c: 3, $d: 'a'} - ], - nimi: {$joku: true, fi: 'asdf'}, - $extra: false, - foo: { - bar : { - $remove: { - thiswhole: 'thing', - $doesnt: 'matter' - }, - dontremove: 5678 - } - } - }; - expect(fn(obj)).toEqual({ - arr: [{a: 1, b: 2},{c: 3}], - nimi: {fi: 'asdf'}, - foo: {bar: {dontremove: 5678}} - }); - }); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/test/spec/services/varmistusdialogi.ts b/eperusteet/eperusteet-app/yo/test/spec/services/varmistusdialogi.ts deleted file mode 100644 index ac1d01f86a..0000000000 --- a/eperusteet/eperusteet-app/yo/test/spec/services/varmistusdialogi.ts +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -describe('Service: Varmistusdialogi', function () { - - // load the service's module - beforeEach(module('eperusteApp')); - - // instantiate service - var Varmistusdialogi; - beforeEach(inject(function (_Varmistusdialogi_) { - Varmistusdialogi = _Varmistusdialogi_; - })); - - it('should do something', function () { - expect(!!Varmistusdialogi).toBe(true); - }); - -}); diff --git a/eperusteet/eperusteet-app/yo/tsconfig.json b/eperusteet/eperusteet-app/yo/tsconfig.json deleted file mode 100644 index 9a0d58b56b..0000000000 --- a/eperusteet/eperusteet-app/yo/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "es3", - "module": "es2015", - "moduleResolution": "node", - "sourceMap": true, - "alwaysStrict": true, - "allowSyntheticDefaultImports": true, - "lib": [ - "dom", - "es2015", - "es2015.promise", - "es5" - ], - "baseUrl": ".", - "paths": { - "app/*": ["app/*"], - "scripts/*": ["app/scripts/*"] - } - }, - "files": [ - "./app/index.ts" - ] -} diff --git a/eperusteet/eperusteet-app/yo/typings.json b/eperusteet/eperusteet-app/yo/typings.json deleted file mode 100644 index 5b9f19d28c..0000000000 --- a/eperusteet/eperusteet-app/yo/typings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "yo", - "dependencies": {}, - "globalDependencies": { - "angular": "registry:dt/angular#1.5.0+20161016133926", - "jquery": "registry:dt/jquery#1.10.0+20170310222111", - "restangular": "registry:dt/restangular#1.5.0+20160921174330" - } -} diff --git a/eperusteet/eperusteet-app/yo/webpack.common.js b/eperusteet/eperusteet-app/yo/webpack.common.js deleted file mode 100644 index b6e7a8f7df..0000000000 --- a/eperusteet/eperusteet-app/yo/webpack.common.js +++ /dev/null @@ -1,150 +0,0 @@ -const path = require("path"); -const webpack = require("webpack"); -const HtmlWebpackPlugin = require("html-webpack-plugin"); -const ManifestPlugin = require("webpack-manifest-plugin"); -const CopyWebpackPlugin = require("copy-webpack-plugin"); - -// FIX https://github.com/webpack-contrib/copy-webpack-plugin/issues/59 -// Fails on linux too -const fs = require('fs'); -const gracefulFs = require('graceful-fs'); -gracefulFs.gracefulify(fs); - -// FIXME: import-loader -// https://github.com/angular-ui/ui-sortable/issues/518 - -module.exports = { - resolve: { - extensions: [".ts", ".js", ".css", ".html", ".pug"], - alias: { - views: path.resolve(__dirname, "./app/views/"), - scripts: path.resolve(__dirname, "./app/scripts/"), - "eperusteet-esitys": path.resolve(__dirname, "./app/eperusteet-esitys/"), - styles: path.resolve(__dirname, "./app/styles/"), - images: path.resolve(__dirname, "./app/images/") - } - }, - entry: { - app: "./app/index.ts" - // vendor: [ - // "lodash", - // "angular", - // "jquery", - // "jquery-ui", - // ] - }, - module: { - rules: [ - { - test: /\.tsx?$/, - exclude: /node_modules/, - use: [ - "imports-loader?$UI=jquery-ui/ui/widgets/sortable", - { - loader: "ts-loader", - options: { - transpileOnly: true, - } - } - ] - }, - { - test: /\.js$/, - use: [ - { - loader: "babel-loader", - } - ] - }, - { - test: /\.(scss|css)$/, - use: [ - { - loader: "style-loader" - }, - { - loader: "css-loader" - }, - { - loader: "sass-loader" - } - ] - }, - { - test: /\.(html)$/, - use: { - loader: "html-loader", - options: { - attrs: [":data-src"], - minimize: true, - removeComments: true, - collapseWhitespace: true - } - } - }, - { - test: /\.pug$/, - use: ["pug-loader"] - }, - { - test: /\.(woff|woff2|eot|ttf|otf)$/, - use: [ - { - loader: "url-loader", - options: { - limit: 8192 - } - } - ] - }, - { - test: /\.(jpe?g|png|gif|svg)$/i, - use: ["file-loader"] - } - ] - }, - plugins: [ - new webpack.ProvidePlugin({ - $: "jquery", - jQuery: "jquery", - "window.jQuery": "jquery", - }), - new HtmlWebpackPlugin({ - filename: "index.html", - template: "app/index.html", - hash: true - }), - - new CopyWebpackPlugin( - [ - { - context: path.resolve(__dirname, "./node_modules/mathjax/"), - from: "**/*", - to: "bower_components/MathJax" - }, - { - context: path.resolve(__dirname, "./node_modules/ckeditor/"), - from: "**/*", - to: "bower_components/ckeditor" - }, - { - context: path.resolve(__dirname, "./app/ckeditor-plugins/"), - from: "**", - to: "ckeditor-plugins" - }, - { - context: path.resolve(__dirname, "./app/images/"), - from: "**/*", - to: "images" - }, - { - context: path.resolve(__dirname, "./app/views/"), - from: "**/*.html", - to: "views" - } - ], - {} - ), - new ManifestPlugin() - ] -}; diff --git a/eperusteet/eperusteet-app/yo/webpack.dev.js b/eperusteet/eperusteet-app/yo/webpack.dev.js deleted file mode 100644 index 751fdbe188..0000000000 --- a/eperusteet/eperusteet-app/yo/webpack.dev.js +++ /dev/null @@ -1,33 +0,0 @@ -const merge = require("webpack-merge"); -const path = require("path"); -const webpack = require("webpack"); -// const FriendlyErrorsWebpackPlugin = require("friendly-errors-webpack-plugin"); - -const basePath = __dirname; - -module.exports = merge(require("./webpack.common.js"), { - plugins: [ - new webpack.DefinePlugin({ - "process.env.NODE_ENV": JSON.stringify("development") - }), - // new FriendlyErrorsWebpackPlugin(), - new webpack.HotModuleReplacementPlugin() - ], - output: { - path: path.join(__dirname, "dist"), - filename: "[name].js", - }, - devtool: "eval-source-map", - devServer: { - host: "127.0.0.1", - port: 9000, - hot: true, - quiet: true, - proxy: { - "/eperusteet-service": { - target: "http://localhost:8080", - secure: false - } - } - } -}); diff --git a/eperusteet/eperusteet-app/yo/webpack.prod.js b/eperusteet/eperusteet-app/yo/webpack.prod.js deleted file mode 100644 index 2ac3f78d14..0000000000 --- a/eperusteet/eperusteet-app/yo/webpack.prod.js +++ /dev/null @@ -1,32 +0,0 @@ -const merge = require("webpack-merge"); -const path = require("path"); -const webpack = require("webpack"); -const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); -const CleanWebpackPlugin = require("clean-webpack-plugin"); -const Visualizer = require("webpack-visualizer-plugin"); - -const basePath = __dirname; - -module.exports = merge(require("./webpack.common.js"), { - output: { - path: path.join(__dirname, "dist"), - filename: "[name].js", - // publicPath: "/eperusteet-app/" - }, - devtool: "nosources-source-map", - plugins: [ - new CleanWebpackPlugin(["dist"]), - new UglifyJSPlugin({ - sourceMap: true, - mangle: false, - uglifyOptions: { - mangle: false, - } - }), - new webpack.optimize.ModuleConcatenationPlugin(), - new webpack.optimize.OccurrenceOrderPlugin(), - new Visualizer({ - filename: "../.bundle_stats.html" - }), - ] -}); diff --git a/eperusteet/eperusteet-app/yo/yarn.lock b/eperusteet/eperusteet-app/yo/yarn.lock deleted file mode 100644 index e7225aa509..0000000000 --- a/eperusteet/eperusteet-app/yo/yarn.lock +++ /dev/null @@ -1,9608 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0-beta.35": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - -"@types/angular-ui-router@1.1.39": - version "1.1.39" - resolved "https://registry.yarnpkg.com/@types/angular-ui-router/-/angular-ui-router-1.1.39.tgz#dffe4083e8a59b287981cb41896447f32b3663c4" - integrity sha512-j7lQBN8J3w/LG4TVGi268gnmCwM2jKcbUAJFI83RNS3bYAl2b1weWeqzIc2YZmf2Eyyn0NP2LAsgPdqJtte9TQ== - dependencies: - "@types/angular" "*" - -"@types/angular@*": - version "1.6.32" - resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.32.tgz#fc791aad038227d9413eb5e552993e1076f8a509" - integrity sha512-xpx7oFBN2oQEwtD80m+aI8wpejzGvlgkgzYD+MpxFTyJtlbwUUUIaJEaEJOtgtF/9Fndt3q6W1qNGf7vO2AUjw== - -"@types/angular@1.6.6": - version "1.6.6" - resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.6.tgz#5009a7f58542e3325c4b5a8f12c06c2dd8eedd38" - integrity sha1-UAmn9YVC4zJcS1qPEsBsLdju3Tg= - dependencies: - "@types/jquery" "*" - -"@types/file-saver@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.1.tgz#e18eb8b069e442f7b956d313f4fadd3ef887354e" - integrity sha512-g1QUuhYVVAamfCifK7oB7G3aIl4BbOyzDOqVyUfEr4tfBKrXfeH+M+Tg7HKCXSrbzxYdhyCP7z9WbKo0R2hBCw== - -"@types/jest@23.3.7": - version "23.3.7" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.7.tgz#77f9a4332ccf8db680a31818ade3ee454c831a79" - integrity sha512-N0p6mHrS0RHC3A9hHN4QH1RM2fGSb2E8rt6ONEK5xKSnyKtn/JAhr1VritkCn6cdyDBephVB80THqJGWzK8FAw== - -"@types/jquery@*": - version "3.2.12" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.2.12.tgz#f496823108c3874c97c9a822e675a3926ee64b46" - integrity sha512-xZzTbUju6AYFE/088UcH2+dB7yTLHlujDju9pfncD1WLl2LWa6Mn+WzKjFfhn8YA+he53j5K0Rfdw89BN0kDug== - -"@types/jquery@3.3.29": - version "3.3.29" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.29.tgz#680a2219ce3c9250483722fccf5570d1e2d08abd" - integrity sha512-FhJvBninYD36v3k6c+bVk1DSZwh7B5Dpb/Pyk3HKVsiohn0nhbefZZ+3JXbWQhFyt0MxSl2jRDdGQPHeOHFXrQ== - dependencies: - "@types/sizzle" "*" - -"@types/jqueryui@1.11.37": - version "1.11.37" - resolved "https://registry.yarnpkg.com/@types/jqueryui/-/jqueryui-1.11.37.tgz#baf66986ae3d57be7f0df631806e3faafe90b131" - integrity sha512-aKT7dOhxYTTkLS43q5miBeuRpfyh916sgI7m/6EJJvJR6j36e5eRORONZyzD5twTLMdMw6uYR7vqhreIHps9tw== - dependencies: - "@types/jquery" "*" - -"@types/lodash@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-3.10.1.tgz#ef8c8c35649f07884e0fb7763b24baaf7e175c36" - integrity sha1-74yMNWSfB4hOD7d2OyS6r34XXDY= - -"@types/moment@2.13.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@types/moment/-/moment-2.13.0.tgz#604ebd189bc3bc34a1548689404e61a2a4aac896" - integrity sha1-YE69GJvDvDShVIaJQE5hoqSqyJY= - dependencies: - moment "*" - -"@types/node@8.0.31": - version "8.0.31" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.31.tgz#d9af61093cf4bfc9f066ca34de0175012cfb0ce9" - integrity sha512-R+LdMJHJQwRd/Ca0Nr5KnwbSWHxTD3DWz4ivqoPeNH+YPcuirMWK+Ti9Mx32jOecmPhHOCd+6CefU5e1eVq2Ew== - -"@types/sizzle@*": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" - integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== - -abab@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= - -abab@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" - integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== - -abbrev@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" - integrity sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8= - -accepts@~1.3.3, accepts@~1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" - integrity sha1-hiRnWMfdbSGmR0/whKR0DsBesh8= - dependencies: - mime-types "~2.1.16" - negotiator "0.6.1" - -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" - integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ= - dependencies: - acorn "^4.0.3" - -acorn-globals@^3.0.0, acorn-globals@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" - integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8= - dependencies: - acorn "^4.0.4" - -acorn-globals@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" - integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-walk@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.0.tgz#c957f4a1460da46af4a0388ce28b4c99355b0cbc" - integrity sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg== - -acorn@^3.1.0, acorn@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= - -acorn@^4.0.3, acorn@^4.0.4, acorn@~4.0.2: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= - -acorn@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" - integrity sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA== - -acorn@^5.5.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== - -acorn@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.2.tgz#6a459041c320ab17592c6317abbfdf4bbaa98ca4" - integrity sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg== - -adler-32@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/adler-32/-/adler-32-1.2.0.tgz#6a3e6bf0a63900ba15652808cb15c6813d1a5f25" - integrity sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU= - dependencies: - exit-on-epipe "~1.0.1" - printj "~1.1.0" - -ajv-keywords@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" - integrity sha1-opbhf3v658HOT34N5T0pyzIWLfA= - -ajv@^4.9.1: - version "4.11.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" - integrity sha1-tu50ZXuZOgHc5Et5RNVvSFgo1b0= - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2" - integrity sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI= - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - json-schema-traverse "^0.3.0" - json-stable-stringify "^1.0.1" - -ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -angular-animate@1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.6.tgz#6925647b141a040d241bf125040f1a150fcd8a70" - integrity sha1-aSVkexQaBA0kG/ElBA8aFQ/NinA= - -angular-cache@4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/angular-cache/-/angular-cache-4.4.2.tgz#05ea5ec0f76214717ab24308d884ea286ce439e6" - integrity sha1-BepewPdiFHF6skMI2ITqKGzkOeY= - dependencies: - cachefactory "1.2.0" - -angular-cookies@1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-cookies/-/angular-cookies-1.6.6.tgz#311642dafdbc4ff7cd69220b8925b88359fba148" - integrity sha1-MRZC2v28T/fNaSILiSW4g1n7oUg= - -angular-elastic@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/angular-elastic/-/angular-elastic-2.5.1.tgz#e938ab1bd8c76415b8ca6514b15fe3593a5df535" - integrity sha1-6TirG9jHZBW4ymUUsV/jWTpd9TU= - dependencies: - angular ">=1.0.6" - -angular-i18n@1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-i18n/-/angular-i18n-1.6.6.tgz#f21cbf9161a449be4b7140d8b153f6ca9b087d24" - integrity sha1-8hy/kWGkSb5LcUDYsVP2ypsIfSQ= - -angular-loading-bar@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/angular-loading-bar/-/angular-loading-bar-0.9.0.tgz#37ef52c25f102c216e7b3cdfd2fc5a5df9628e45" - integrity sha1-N+9Swl8QLCFuezzf0vxaXflijkU= - -angular-local-storage@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/angular-local-storage/-/angular-local-storage-0.7.1.tgz#fbd2730763c29fa9af5725e0186c780621e8cdd2" - integrity sha1-+9JzB2PCn6mvVyXgGGx4BiHozdI= - -angular-mocks@1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-mocks/-/angular-mocks-1.6.6.tgz#c93018e7838c6dc5ceaf1a6bcf9be13c830ea515" - integrity sha1-yTAY54OMbcXOrxprz5vhPIMOpRU= - -angular-moment@1.0.0-beta.3: - version "1.0.0-beta.3" - resolved "https://registry.yarnpkg.com/angular-moment/-/angular-moment-1.0.0-beta.3.tgz#70bcbe3dd88ce4489f187ebced120013b9c9971e" - integrity sha1-cLy+PdiM5EifGH687RIAE7nJlx4= - dependencies: - moment ">=2.8.0 <2.11.0" - -angular-resource@1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-resource/-/angular-resource-1.6.6.tgz#430660e969c3e7cf40c5e247e5e690f06d6efc61" - integrity sha1-QwZg6WnD589AxeJH5eaQ8G1u/GE= - -angular-route@1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-route/-/angular-route-1.6.6.tgz#8c11748aa195c717b1b615a7e746442bfc7c61f4" - integrity sha1-jBF0iqGVxxexthWn50ZEK/x8YfQ= - -angular-sanitize@1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-sanitize/-/angular-sanitize-1.6.6.tgz#0fd065a19931517fbece66596d325d72b6e06041" - integrity sha1-D9BloZkxUX++zmZZbTJdcrbgYEE= - -angular-spinner@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/angular-spinner/-/angular-spinner-0.8.0.tgz#012e99a6452d030f624f9523b985690123ebe3ce" - integrity sha1-AS6ZpkUtAw9iT5UjuYVpASPr484= - dependencies: - spin.js "^2.0.0" - -angular-translate-loader-static-files@2.15.2: - version "2.15.2" - resolved "https://registry.yarnpkg.com/angular-translate-loader-static-files/-/angular-translate-loader-static-files-2.15.2.tgz#38f27b0dfd8b631b8ce8b3e0f06aa3f1311105e9" - integrity sha1-OPJ7Df2LYxuM6LPg8Gqj8TERBek= - dependencies: - angular-translate "~2.15.2" - -angular-translate@2.18.1: - version "2.18.1" - resolved "https://registry.yarnpkg.com/angular-translate/-/angular-translate-2.18.1.tgz#b29ed0d2f9bac44075e7aad3284166c59e150791" - integrity sha512-Mw0kFBqsv5j8ItL9IhRZunIlVmIRW6iFsiTmRs9wGr2QTt8z4rehYlWyHos8qnXc/kyOYJiW50iH50CSNHGB9A== - dependencies: - angular ">=1.2.26 <=1.7" - -angular-translate@~2.15.2: - version "2.15.2" - resolved "https://registry.yarnpkg.com/angular-translate/-/angular-translate-2.15.2.tgz#f9a3c2b8d5daeb7d76c9e2c01ff3c3d57fe12b90" - integrity sha1-+aPCuNXa6312yeLAH/PD1X/hK5A= - dependencies: - angular ">=1.2.26 <=1.6" - -angular-ui-bootstrap@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/angular-ui-bootstrap/-/angular-ui-bootstrap-2.5.0.tgz#2facefb915386655dc5f44150258032517236d01" - integrity sha1-L6zvuRU4ZlXcX0QVAlgDJRcjbQE= - -angular-ui-router@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/angular-ui-router/-/angular-ui-router-0.4.2.tgz#b6aed1ca69a683c82e3992898eabd4ba15868608" - integrity sha1-tq7Rymmmg8guOZKJjqvUuhWGhgg= - dependencies: - angular "^1.0.8" - -"angular-ui-sortable@https://github.com/nkala/ui-sortable.git#v0.13.4xx": - version "0.13.4" - resolved "https://github.com/nkala/ui-sortable.git#6629e86c030521938445060e71d0664d226c7925" - -angular-ui-tree@2.22.6: - version "2.22.6" - resolved "https://registry.yarnpkg.com/angular-ui-tree/-/angular-ui-tree-2.22.6.tgz#849727fdd1d13d84c1a590bb08934cc224e5a407" - integrity sha512-VzuXM6NdYeQD0Y1RF5oTYc3o8yoW9mtxhnJs5Fvwu40V1Alzq7ybJj+kvApXZ69M0mvRd8LLM+3Q4pI26md+fA== - -angular-ui-utils@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/angular-ui-utils/-/angular-ui-utils-0.1.1.tgz#ff8b5c4abb2aebeb08ee05d09a78c4cfbfb65009" - integrity sha1-/4tcSrsq6+sI7gXQmnjEz7+2UAk= - -angular@1.6.6, angular@>=1.0.6, "angular@>=1.2.26 <=1.6", "angular@>=1.2.26 <=1.7", angular@^1.0.8: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.6.tgz#fd5a3cfb437ce382d854ee01120797978527cb64" - integrity sha1-/Vo8+0N844LYVO4BEgeXl4Uny2Q= - -angularjs-slider@5.8.7: - version "5.8.7" - resolved "https://registry.yarnpkg.com/angularjs-slider/-/angularjs-slider-5.8.7.tgz#e39b3319e394ef3589813a57cc3e16fa21f95429" - integrity sha1-45szGeOU7zWJgTpXzD4W+iH5VCk= - -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= - dependencies: - string-width "^2.0.0" - -ansi-escapes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" - integrity sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ== - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.1.0, ansi-styles@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - integrity sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - integrity sha1-126/jKlNJ24keja61EpLdKthGZE= - dependencies: - default-require-extensions "^1.0.0" - -aproba@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" - integrity sha1-ldNgDwdxCqDpKYxyatXs8urLq6s= - -are-we-there-yet@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" - integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM= - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.0 || ^1.1.13" - -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" - integrity sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY= - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.0.1, arr-flatten@^1.0.3, arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= - -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1.js@^4.0.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" - integrity sha1-SLokC0WpKA6UdImQull9IWYX/UA= - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y= - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ= - -assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= - dependencies: - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -ast-types@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" - integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - integrity sha1-GdOGodntxufByF04iu28xW0zYC0= - -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= - -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== - -async@^1.4.0, async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.1.2, async@^2.1.4, async@^2.1.5: - version "2.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" - integrity sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw== - dependencies: - lodash "^4.14.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" - integrity sha1-GcenYEc3dEaPILLS0DNyrX1Mv10= - -autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= - dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - -awesome-typescript-loader@3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-3.4.0.tgz#aed2c83af614d617d11e3ec368ac3befb55d002f" - integrity sha512-sXPUe8HexKO4/NGTOtFP7ue+LbaALphiP22A8FaJCZT2avTtMQj3uVtrPRIvNf/6484i8rgx9d//jewiaqFH0w== - dependencies: - colors "^1.1.2" - enhanced-resolve "3.3.0" - loader-utils "^1.1.0" - lodash "^4.17.4" - micromatch "^3.0.3" - mkdirp "^0.5.1" - object-assign "^4.1.1" - source-map-support "^0.4.15" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8= - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.2.1, aws4@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4= - -aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== - -babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@6.26.0, babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" - integrity sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g= - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.0" - debug "^2.6.8" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.7" - slash "^1.0.0" - source-map "^0.5.6" - -babel-generator@^6.18.0, babel-generator@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" - integrity sha1-rBriAHC3n248odMmlhMFN3TyDcU= - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.6" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" - integrity sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew== - dependencies: - babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.2.0" - -babel-loader@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126" - integrity sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A== - dependencies: - find-cache-dir "^1.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-angularjs-annotate@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/babel-plugin-angularjs-annotate/-/babel-plugin-angularjs-annotate-0.8.2.tgz#7f9a37fbb7511668e836cb91a2e43e98e12f9ed9" - integrity sha512-gkPuZr4aYxhJPjqrwYlnXQIzlRagp+vxJhqaoYc3w9gBZ2/H2fKIt7a3iXoC5JQGm7ee9Lj7CWPfnfcYX/34Iw== - dependencies: - babel-code-frame "^6.26.0" - babel-types "^6.26.0" - simple-is "~0.2.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-istanbul@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e" - integrity sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24= - dependencies: - find-up "^2.1.0" - istanbul-lib-instrument "^1.7.5" - test-exclude "^4.1.1" - -babel-plugin-istanbul@^4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" - integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== - dependencies: - babel-plugin-syntax-object-rest-spread "^6.13.0" - find-up "^2.1.0" - istanbul-lib-instrument "^1.10.1" - test-exclude "^4.2.1" - -babel-plugin-jest-hoist@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz#2cef637259bd4b628a6cace039de5fcd14dbb006" - integrity sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ== - -babel-plugin-jest-hoist@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" - integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc= - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= - -babel-plugin-syntax-object-rest-spread@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" - integrity sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo= - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-env@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" - integrity sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^2.1.2" - invariant "^2.2.2" - semver "^5.3.0" - -babel-preset-jest@^21.0.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz#ff9d2bce08abd98e8a36d9a8a5189b9173b85638" - integrity sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA== - dependencies: - babel-plugin-jest-hoist "^21.2.0" - babel-plugin-syntax-object-rest-spread "^6.13.0" - -babel-preset-jest@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" - integrity sha1-jsegOhOPABoaj7HoETZSvxpV2kY= - dependencies: - babel-plugin-jest-hoist "^23.2.0" - babel-plugin-syntax-object-rest-spread "^6.13.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -balanced-match@^0.4.1, balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base62@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/base62/-/base62-1.2.0.tgz#31e7e560dc846c9f44c1a531df6514da35474157" - integrity sha1-MeflYNyEbJ9EwaUx32UU2jVHQVc= - -base64-js@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" - integrity sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - integrity sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40= - dependencies: - tweetnacl "^0.14.3" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -binary-extensions@^1.0.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" - integrity sha1-muuabF6IY4qtFx4Wf1kAq+JINdA= - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - -bluebird@^2.10.2: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" - integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= - -bluebird@^3.4.7: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" - integrity sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw= - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8= - dependencies: - hoek "2.x.x" - -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - integrity sha1-T4owBctKfjiJ90kDD9JbluAdLjE= - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - integrity sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw== - dependencies: - hoek "4.x.x" - -bootstrap-sass@3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz#6596c7ab40f6637393323ab0bc80d064fc630498" - integrity sha1-ZZbHq0D2Y3OTMjqwvIDQZPxjBJg= - -bootstrap@3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.3.7.tgz#5a389394549f23330875a3b150656574f8a9eb71" - integrity sha1-WjiTlFSfIzMIdaOxUGVldPip63E= - -boxen@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d" - integrity sha1-DxHn/jRO25OXl3/BPt5/ZNlWSB0= - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^1.0.0" - -brace-expansion@^1.0.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" - integrity sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk= - dependencies: - balanced-match "^0.4.1" - concat-map "0.0.1" - -brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - integrity sha1-wHshHHyVLsH479Uad+8NHTmQopI= - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.2.2.tgz#241f868c2b2690d9febeee5a7c83fbbf25d00b1b" - integrity sha1-JB+GjCsmkNn+vu5afIP7vyXQCxs= - dependencies: - arr-flatten "^1.0.3" - array-unique "^0.3.2" - define-property "^1.0.0" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.0" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^2.1.0" - to-regex "^3.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" - integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== - -browser-resolve@^1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" - integrity sha1-j/CbCixCFxihBRwmCzLkj0QpOM4= - dependencies: - resolve "1.1.7" - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.0.8" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.8.tgz#c8fa3b1b7585bb7ba77c5560b60996ddec6d5309" - integrity sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" - integrity sha1-mYgkSHS/XtTijalWZtzWasj8Njo= - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" - integrity sha1-2qJ3cXRwki7S/hhZQRihdUOXId0= - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0= - dependencies: - pako "~0.2.0" - -browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - -browserslist@^2.1.2: - version "2.5.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.5.1.tgz#68e4bc536bbcc6086d62843a2ffccea8396821c6" - integrity sha512-jAvM2ku7YDJ+leAq3bFH1DE0Ylw+F+EQDq4GkqZfgPEqpWYw9ofQH85uKSB9r3Tv7XDbfqVtE+sdvKJW7IlPJA== - dependencies: - caniuse-lite "^1.0.30000744" - electron-to-chromium "^1.3.24" - -bser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" - integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= - dependencies: - node-int64 "^0.4.0" - -btoa@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.1.2.tgz#3e40b81663f81d2dd6596a4cb714a8dc16cfabe0" - integrity sha1-PkC4FmP4HS3WWWpMtxSo3BbPq+A= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-shims@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E= - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cachefactory@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/cachefactory/-/cachefactory-1.2.0.tgz#9a0efdfb8fa7df6c3238bb706d7b28fc318803c1" - integrity sha1-mg79+4+n32wyOLtwbXso/DGIA8E= - dependencies: - yabh "1.1.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= - dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000740" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000740.tgz#03fcaaa176e3ed075895f72d46c1a12149bbeac9" - integrity sha1-A/yqoXbj7QdYlfctRsGhIUm76sk= - -caniuse-lite@^1.0.30000744: - version "1.0.30000748" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000748.tgz#44c8d6da52ad65a5d7b9dca4efebd0bdd982ba09" - integrity sha1-RMjW2lKtZaXXudyk7+vQvdmCugk= - -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - integrity sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0= - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -cfb@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cfb/-/cfb-1.1.0.tgz#44fb1b30eee014fa5633a0ed5f26c87fd765799a" - integrity sha512-ZqfxNGWTMKhd0a/n6YKJLq8hWbd5kR3cA4kXwUj9vVEdHlwJ09werR8gN15Z7Y1FTXqdD6dE3GGCxv4uc28raA== - dependencies: - adler-32 "~1.2.0" - commander "^2.16.0" - crc-32 "~1.2.0" - printj "~1.1.2" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^2.0.1, chalk@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" - integrity sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ== - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -character-parser@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" - integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= - dependencies: - is-regex "^1.0.3" - -chokidar@^1.6.0, chokidar@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -chokidar@^3.3.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -ci-info@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.1.tgz#47b44df118c48d2597b56d342e7e25791060171a" - integrity sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -ckeditor@4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/ckeditor/-/ckeditor-4.7.0.tgz#79b0fe6067503883a572f99a3e72b19d3a567a1a" - integrity sha1-ebD+YGdQOIOlcvmaPnKxnTpWeho= - -clap@^1.0.9: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" - integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== - dependencies: - chalk "^1.1.3" - -class-utils@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.5.tgz#17e793103750f9627b2176ea34cfd1b565903c80" - integrity sha1-F+eTEDdQ+WJ7IXbqNM/RtWWQPIA= - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - lazy-cache "^2.0.2" - static-extend "^0.1.1" - -clean-css@4.1.x: - version "4.1.9" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" - integrity sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE= - dependencies: - source-map "0.5.x" - -clean-css@^3.3.0: - version "3.4.28" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.28.tgz#bf1945e82fc808f55695e6ddeaec01400efd03ff" - integrity sha1-vxlF6C/ICPVWlebd6uwBQA79A/8= - dependencies: - commander "2.8.x" - source-map "0.4.x" - -clean-webpack-plugin@0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-0.1.17.tgz#71c57242e6d47204d46f809413176e7bed28ec49" - integrity sha512-Bts/V725v8Ijosp4K1cqppQXgXcrohxoMsg0CV2xL4y/vua1G5pAfHEW/eJIiKF+GNNG72mdjbipxMRFEms7yg== - dependencies: - rimraf "^2.6.1" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -clone-deep@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8" - integrity sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg= - dependencies: - for-own "^1.0.0" - is-plain-object "^2.0.1" - kind-of "^3.2.2" - shallow-clone "^0.1.2" - -clone@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" - integrity sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= - dependencies: - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -codepage@~1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/codepage/-/codepage-1.14.0.tgz#8cbe25481323559d7d307571b0fff91e7a1d2f99" - integrity sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k= - dependencies: - commander "~2.14.1" - exit-on-epipe "~1.0.1" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.3.0, color-convert@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" - integrity sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o= - dependencies: - color-name "^1.1.1" - -color-name@^1.0.0, color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= - dependencies: - color-name "^1.0.0" - -color@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - -colors@^1.1.2, colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk= - dependencies: - delayed-stream "~1.0.0" - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== - dependencies: - delayed-stream "~1.0.0" - -commander@2.11.x, commander@^2.5.0, commander@^2.7.1, commander@~2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== - -commander@2.8.x: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= - dependencies: - graceful-readlink ">= 1.0.0" - -commander@^2.16.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commander@~2.14.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" - integrity sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw== - -commander@~2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -commoner@^0.10.1: - version "0.10.8" - resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" - integrity sha1-NPw2cs0kOT6LtH5wyqApOBH08sU= - dependencies: - commander "^2.5.0" - detective "^4.3.1" - glob "^5.0.15" - graceful-fs "^4.1.2" - iconv-lite "^0.4.5" - mkdirp "^0.5.0" - private "^0.1.6" - q "^1.1.2" - recast "^0.11.17" - -component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - -compressible@~2.0.11: - version "2.0.11" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" - integrity sha1-FnGKdd4oPtjmBAQWJaIGRYZ5fYo= - dependencies: - mime-db ">= 1.29.0 < 2" - -compression@^1.5.2: - version "1.7.1" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db" - integrity sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s= - dependencies: - accepts "~1.3.4" - bytes "3.0.0" - compressible "~2.0.11" - debug "2.6.9" - on-headers "~1.0.1" - safe-buffer "5.1.1" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -configstore@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" - integrity sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw== - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -connect-history-api-fallback@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" - integrity sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk= - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constantinople@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.0.tgz#7569caa8aa3f8d5935d62e1fa96f9f702cd81c79" - integrity sha1-dWnKqKo/jVk11i4fqW+fcCzYHHk= - dependencies: - acorn "^3.1.0" - is-expression "^2.0.1" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - -content-type-parser@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" - integrity sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ= - -content-type@~1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.1.1, convert-source-map@^1.4.0, convert-source-map@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - integrity sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU= - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-webpack-plugin@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz#9728e383b94316050d0c7463958f2b85c0aa8200" - integrity sha1-lyjjg7lDFgUNDHRjlY8rhcCqggA= - dependencies: - bluebird "^2.10.2" - fs-extra "^0.26.4" - glob "^6.0.4" - is-glob "^3.1.0" - loader-utils "^0.2.15" - lodash "^4.3.0" - minimatch "^3.0.0" - node-dir "^0.1.10" - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= - -core-js@^2.4.0, core-js@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" - integrity sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -crc-32@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" - integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== - dependencies: - exit-on-epipe "~1.0.1" - printj "~1.1.0" - -create-ecdh@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" - integrity sha1-iIxyNZbN92EvZJgjPuvXo1MBc30= - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" - integrity sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0= - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - ripemd160 "^2.0.0" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.6" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" - integrity sha1-rLniIaThe9sHbpBlfEK5PjcmzwY= - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g= - dependencies: - boom "2.x.x" - -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - integrity sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4= - dependencies: - boom "5.x.x" - -crypto-browserify@^3.11.0: - version "3.11.1" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" - integrity sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - -css-color-names@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-loader@0.28.7: - version "0.28.7" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b" - integrity sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg== - dependencies: - babel-code-frame "^6.11.0" - css-selector-tokenizer "^0.7.0" - cssnano ">=2.6.1 <4" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - object-assign "^4.0.1" - postcss "^5.0.6" - postcss-modules-extract-imports "^1.0.0" - postcss-modules-local-by-default "^1.0.1" - postcss-modules-scope "^1.0.0" - postcss-modules-values "^1.1.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-selector-tokenizer@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" - integrity sha1-5piEdK6MlTR3v15+/s/OzNnPTIY= - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-what@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" - integrity sha1-lGfQMsOM+u+58teVASUwYvh/ob0= - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= - -"cssnano@>=2.6.1 <4": - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= - dependencies: - autoprefixer "^6.3.1" - decamelize "^1.1.2" - defined "^1.0.0" - has "^1.0.1" - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-calc "^5.2.0" - postcss-colormin "^2.1.8" - postcss-convert-values "^2.3.4" - postcss-discard-comments "^2.0.4" - postcss-discard-duplicates "^2.0.1" - postcss-discard-empty "^2.0.1" - postcss-discard-overridden "^0.1.1" - postcss-discard-unused "^2.2.1" - postcss-filter-plugins "^2.0.0" - postcss-merge-idents "^2.1.5" - postcss-merge-longhand "^2.0.1" - postcss-merge-rules "^2.0.3" - postcss-minify-font-values "^1.0.2" - postcss-minify-gradients "^1.0.1" - postcss-minify-params "^1.0.4" - postcss-minify-selectors "^2.0.4" - postcss-normalize-charset "^1.1.0" - postcss-normalize-url "^3.0.7" - postcss-ordered-values "^2.1.0" - postcss-reduce-idents "^2.2.2" - postcss-reduce-initial "^1.0.0" - postcss-reduce-transforms "^1.0.3" - postcss-svgo "^2.1.1" - postcss-unique-selectors "^2.0.2" - postcss-value-parser "^3.2.3" - postcss-zindex "^2.0.1" - -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" - integrity sha1-uANhcMefB6kP8vFuIihAJ6JDhIs= - -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ= - dependencies: - cssom "0.3.x" - -cssstyle@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" - integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog== - dependencies: - cssom "0.3.x" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - -d3@^3.5.6: - version "3.5.17" - resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8" - integrity sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g= - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= - dependencies: - es5-ext "^0.10.9" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.1.tgz#d416ac3896918f29ca84d81085bc3705834da579" - integrity sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.1.0" - whatwg-url "^7.0.0" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= - -debug@2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - integrity sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw= - dependencies: - ms "2.0.0" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -deep-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= - -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - integrity sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8= - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= - dependencies: - strip-bom "^2.0.0" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - integrity sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ= - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= - dependencies: - globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@1.1.1, depd@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -detect-node@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" - integrity sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc= - -detective@^4.3.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1" - integrity sha1-blqMaybmx6JUsca210kNmOyR7dE= - dependencies: - acorn "^4.0.3" - defined "^1.0.0" - -diff@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" - integrity sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww== - -diffie-hellman@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" - integrity sha1-tYNXOScM/ias9jIJn97SoH8gnl4= - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a" - integrity sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -docopt@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/docopt/-/docopt-0.6.2.tgz#b28e9e2220da5ec49f7ea5bb24a47787405eeb11" - integrity sha1-so6eIiDaXsSffqW7JKR3h0Be6xE= - -doctypes@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" - integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= - -dom-converter@~0.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" - integrity sha1-pF71cnuJDJv/5tfIduexnLDhfzs= - dependencies: - utila "~0.3" - -dom-serializer@0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= - dependencies: - domelementtype "~1.1.1" - entities "~1.1.1" - -domain-browser@^1.1.1: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" - integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw= - -domelementtype@1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= - -domelementtype@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -domhandler@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" - integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ= - dependencies: - domelementtype "1" - -domutils@1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" - integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU= - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== - dependencies: - is-obj "^1.0.0" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -duplexer@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU= - dependencies: - jsbn "~0.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.2.7: - version "1.3.24" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz#9b7b88bb05ceb9fa016a177833cc2dde388f21b6" - integrity sha1-m3uIuwXOufoBahd4M8wt3jiPIbY= - -electron-to-chromium@^1.3.24: - version "1.3.27" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" - integrity sha1-eOy4o5kGYYe7N07t412ccFZagD0= - -elliptic@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - integrity sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8= - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - integrity sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA= - -enhanced-resolve@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3" - integrity sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.5" - -enhanced-resolve@^3.0.0, enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" - integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24= - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" - -entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= - -envify@^3.0.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/envify/-/envify-3.4.1.tgz#d7122329e8df1688ba771b12501917c9ce5cbce8" - integrity sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg= - dependencies: - jstransform "^11.0.3" - through "~2.3.4" - -eperusteet-frontend-utils@Opetushallitus/eperusteet-frontend-utils#master: - version "0.0.1" - resolved "https://codeload.github.com/Opetushallitus/eperusteet-frontend-utils/tar.gz/7f72016a87332bef727073409c41c675a229fc40" - -errno@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" - integrity sha1-uJbiOp5ei6M4cfyZar02NfyaHH0= - dependencies: - prr "~0.0.0" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - integrity sha1-+FWobOYa3E6GIcPNoh56dhLDqNw= - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.1.tgz#a3202b8fb03114aa9b40a0e3669e48b2b65a010a" - integrity sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo= - dependencies: - stackframe "^1.0.3" - -es-abstract@^1.5.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" - integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" - -es-abstract@^1.7.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" - integrity sha512-dvhwFL3yjQxNNsOWx6exMlaDrRHCRGMQlnx5lsXDCZ/J7G/frgIIl94zhZSp/galVAYp7VzPi1OrAHta89/yGQ== - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - integrity sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0= - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.30" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939" - integrity sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk= - dependencies: - es6-iterator "2" - es6-symbol "~3.1" - -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" - integrity sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI= - dependencies: - d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-promise@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" - integrity sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng== - -es6-promise@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-templates@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" - integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ= - dependencies: - recast "~0.11.12" - through "~2.3.6" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escodegen@^1.6.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" - integrity sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw== - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.5.6" - -escodegen@^1.9.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" - integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esprima-fb@^15001.1.0-dev-harmony-fb: - version "15001.1.0-dev-harmony-fb" - resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901" - integrity sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE= - -esprima@^2.6.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - -esprima@^3.1.3, esprima@~3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - integrity sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw== - -esrecurse@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" - integrity sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM= - dependencies: - estraverse "^4.1.0" - object-assign "^4.0.1" - -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - -etag@~1.8.0, etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - -event-stream@~3.3.0: - version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" - integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.3" - stream-combiner "~0.0.4" - through "~2.3.1" - -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" - integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= - -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= - -eventsource@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" - integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= - dependencies: - original ">=0.0.5" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" - integrity sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg== - dependencies: - merge "^1.1.3" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit-on-epipe@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" - integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - -expect@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-21.2.1.tgz#003ac2ac7005c3c29e73b38a272d4afadd6d1d7b" - integrity sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw== - dependencies: - ansi-styles "^3.2.0" - jest-diff "^21.2.1" - jest-get-type "^21.2.0" - jest-matcher-utils "^21.2.1" - jest-message-util "^21.2.1" - jest-regex-util "^21.2.0" - -expect@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" - integrity sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w== - dependencies: - ansi-styles "^3.2.0" - jest-diff "^23.6.0" - jest-get-type "^22.1.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - -express@^4.13.3: - version "4.15.5" - resolved "https://registry.yarnpkg.com/express/-/express-4.15.5.tgz#670235ca9598890a5ae8170b83db722b842ed927" - integrity sha1-ZwI1ypWYiQpa6BcLg9tyK4Qu2Sc= - dependencies: - accepts "~1.3.3" - array-flatten "1.1.1" - content-disposition "0.5.2" - content-type "~1.0.2" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.1" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - finalhandler "~1.0.6" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.1" - path-to-regexp "0.1.7" - proxy-addr "~1.1.5" - qs "6.5.0" - range-parser "~1.2.0" - send "0.15.6" - serve-static "1.12.6" - setprototypeof "1.0.3" - statuses "~1.3.1" - type-is "~1.6.15" - utils-merge "1.0.0" - vary "~1.1.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" - integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ= - -extend@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - -extglob@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.2.tgz#3290f46208db1b2e8eb8be0c94ed9e6ad80edbe2" - integrity sha512-I0+eZBH+jFGL8F5BnIz2ON2nKCjTS3AS3H/5PeSmCp7UVC70Ym8IhdRiQly2juKYQ//f7z1aj1BRpQniFJoU1w== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" - integrity sha1-4QgOBljjALBilJkMxw4VAiNf1VA= - -fast-deep-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" - integrity sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8= - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - integrity sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg= - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@2.0.0, fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= - dependencies: - bser "^2.0.0" - -fbjs@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.6.1.tgz#9636b7705f5ba9684d44b72f78321254afc860f7" - integrity sha1-lja3cF9bqWhNRLcveDISVK/IYPc= - dependencies: - core-js "^1.0.0" - loose-envify "^1.0.0" - promise "^7.0.3" - ua-parser-js "^0.7.9" - whatwg-fetch "^0.9.0" - -file-loader@0.11.2: - version "0.11.2" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34" - integrity sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg== - dependencies: - loader-utils "^1.0.2" - -file-saver@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.2.tgz#06d6e728a9ea2df2cce2f8d9e84dfcdc338ec17a" - integrity sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw== - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - -filesize@^3.1.2: - version "3.5.10" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.10.tgz#fc8fa23ddb4ef9e5e0ab6e1e64f679a24a56761f" - integrity sha1-/I+iPdtO+eXgq24eZPZ5okpWdh8= - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM= - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f" - integrity sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8= - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= - -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -fork-ts-checker-webpack-plugin@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" - integrity sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ= - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" - integrity sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8= - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -frac@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b" - integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -friendly-errors-webpack-plugin@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz#e32781c4722f546a06a9b5d7a7cfa28520375d70" - integrity sha1-4yeBxHIvVGoGqbXXp8+ihSA3XXA= - dependencies: - chalk "^1.1.3" - error-stack-parser "^2.0.0" - string-length "^1.0.1" - -from@~0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= - -fs-extra@^0.26.4: - version "0.26.7" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" - integrity sha1-muH92UiXeY7at20JGM9C0MMYT6k= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" - integrity sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.0.0, fsevents@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" - integrity sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw== - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.36" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU= - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.0.2, function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -gauge@~2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" - integrity sha1-HCOFX5YvF7OtPQ3HRD8wRULt/gk= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gaze@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" - integrity sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU= - dependencies: - globule "^1.0.0" - -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U= - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.6" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" - integrity sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY= - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.0.3, glob@~7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globule@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f" - integrity sha1-xJNS5NwYPYWJPuglOF65lLtt9F8= - dependencies: - glob "~7.1.1" - lodash "~4.16.4" - minimatch "~3.0.2" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -handle-thing@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" - integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= - -handlebars@^4.0.3: - version "4.0.10" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" - integrity sha1-PTDHGLCaPZbyPqTMH0A8TTup/08= - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - integrity sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4= - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - integrity sha1-M0gdDxu/9gDdID11gSpqX7oALio= - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - -har-validator@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" - integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA== - dependencies: - ajv "^5.3.0" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - integrity sha1-hGFzP1OLCDfJNh45qauelwTcLyg= - dependencies: - function-bind "^1.0.2" - -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" - integrity sha1-ZuodhW206KVHDK32/OI65SRO8uE= - dependencies: - inherits "^2.0.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hawk@3.1.3, hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ= - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - integrity sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ== - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" - -he@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= - -hoek@4.x.x: - version "4.2.0" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" - integrity sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ== - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.4.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.1.tgz#4b0445e41c004a8bd1337773a4ff790ca40318c8" - integrity sha1-SwRF5BwASovRM3dzpP95DKQDGMg= - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-comment-regex@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" - integrity sha1-ZouTd26q5V696POtRkswekljYl4= - -html-encoding-sniffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" - integrity sha1-eb96eF6klf5mFl5zQVPzY/9UN9o= - dependencies: - whatwg-encoding "^1.0.1" - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-entities@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - -html-loader@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.1.tgz#4f1e8396a1ea6ab42bedc987dfac058070861ebe" - integrity sha512-RxokXoxcsRSWcN553Ew+K0TUo68gQfmddTuUIZ4xRD8Ax1xXzX2UYQ3FC3D5MoRPGAdL1erWKeEFihDrrdxHiA== - dependencies: - es6-templates "^0.2.2" - fastparse "^1.1.1" - html-minifier "^3.0.1" - loader-utils "^1.0.2" - object-assign "^4.1.0" - -html-minifier@^3.0.1, html-minifier@^3.2.3: - version "3.5.5" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.5.tgz#3bdc9427e638bbe3dbde96c0eb988b044f02739e" - integrity sha512-g+1+NBycQI0fGnggd52JM8TRUweG7+9W2wrtjGitMAqc4G7maweAHvVAAjz9veHseIH3tYKE2lk2USGSoewIrQ== - dependencies: - camel-case "3.0.x" - clean-css "4.1.x" - commander "2.11.x" - he "1.1.x" - ncname "1.0.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.1.x" - -html-webpack-plugin@2.30.1: - version "2.30.1" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz#7f9c421b7ea91ec460f56527d78df484ee7537d5" - integrity sha1-f5xCG36pHsRg9WUn1430hO51N9U= - dependencies: - bluebird "^3.4.7" - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - toposort "^1.0.0" - -htmlparser2@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" - integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4= - dependencies: - domelementtype "1" - domhandler "2.1" - domutils "1.1" - readable-stream "1.0" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@~1.6.1, http-errors@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-parser-js@>=0.4.0: - version "0.4.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.8.tgz#763f75c4b771a0bb44653b07070bff6ca7bc5561" - integrity sha512-jmHp99g6/fLx0pRNJqzsQgjsclCHAY7NhIeA3/U+bsGNvgbvUCQFQY9m5AYpqpAxY/2VcikfbKpjQozSTiz0jA== - -http-proxy-middleware@~0.17.4: - version "0.17.4" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" - integrity sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM= - dependencies: - http-proxy "^1.16.2" - is-glob "^3.1.0" - lodash "^4.17.2" - micromatch "^2.3.11" - -http-proxy@^1.16.2: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" - integrity sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I= - dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8= - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" - integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI= - -humanize@0.0.9: - version "0.0.9" - resolved "https://registry.yarnpkg.com/humanize/-/humanize-0.0.9.tgz#1994ffaecdfe9c441ed2bdac7452b7bb4c9e41a4" - integrity sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ= - -iconv-lite@0.4.13: - version "0.4.13" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" - integrity sha1-H4irpKsLFQjoMSrMOTRfNumS4vI= - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.4.5: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= - dependencies: - postcss "^6.0.1" - -ieee754@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" - integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q= - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -import-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" - integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - -imports-loader@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.7.1.tgz#f204b5f34702a32c1db7d48d89d5e867a0441253" - integrity sha1-8gS180cCoywdt9SNidXoZ6BEElM= - dependencies: - loader-utils "^1.0.2" - source-map "^0.5.6" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4= - -internal-ip@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" - integrity sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w= - dependencies: - meow "^3.3.0" - -interpret@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" - integrity sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA= - -invariant@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A= - dependencies: - loose-envify "^1.0.0" - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0" - integrity sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA= - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.0.2, is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - integrity sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw= - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= - dependencies: - builtin-modules "^1.0.0" - -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - integrity sha1-hut1OSgF3cM69xySoO7fdO52BLI= - -is-ci@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" - integrity sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4= - dependencies: - ci-info "^1.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.1.tgz#2c6023599bde2de9d5d2c8b9a9d94082036b6ef2" - integrity sha512-G3fFVFTqfaqu7r4YuSBHKBAuOaLz8Sy7ekklUpFEliaLMP1Y2ZjoN9jS62YWCAPQrQpMUQSitRlrzibbuCZjdA== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - -is-expression@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-2.1.0.tgz#91be9d47debcfef077977e9722be6dcfb4465ef0" - integrity sha1-kb6dR968/vB3l36XIr5tz7RGXvA= - dependencies: - acorn "~3.3.0" - object-assign "^4.0.1" - -is-expression@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" - integrity sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8= - dependencies: - acorn "~4.0.2" - object-assign "^4.0.1" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" - integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go= - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-odd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088" - integrity sha1-O4qTLrAos3dcObsJ6RdnrM22kIg= - dependencies: - is-number "^3.0.0" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= - -is-path-in-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" - integrity sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw= - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" - integrity sha1-/AbloWg/vaE95mev9xe7wQpI838= - dependencies: - path-is-inside "^1.0.1" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - -is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= - -is-regex@^1.0.3, is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.0.1" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= - -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - integrity sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI= - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-api@^1.3.1: - version "1.3.7" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" - integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.2.1" - istanbul-lib-hook "^1.2.2" - istanbul-lib-instrument "^1.10.2" - istanbul-lib-report "^1.1.5" - istanbul-lib-source-maps "^1.2.6" - istanbul-reports "^1.5.1" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" - integrity sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q== - -istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== - -istanbul-lib-hook@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" - integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" - integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.1" - semver "^5.3.0" - -istanbul-lib-instrument@^1.7.5: - version "1.8.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz#66f6c9421cc9ec4704f76f2db084ba9078a2b532" - integrity sha1-ZvbJQhzJ7EcE928tsIS6kHiitTI= - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.1.1" - semver "^5.3.0" - -istanbul-lib-report@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" - integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== - dependencies: - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" - integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== - dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" - integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== - dependencies: - handlebars "^4.0.3" - -jest-changed-files@^23.4.2: - version "23.4.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" - integrity sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA== - dependencies: - throat "^4.0.0" - -jest-cli@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4" - integrity sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.11" - import-local "^1.0.0" - is-ci "^1.0.10" - istanbul-api "^1.3.1" - istanbul-lib-coverage "^1.2.0" - istanbul-lib-instrument "^1.10.1" - istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.4.2" - jest-config "^23.6.0" - jest-environment-jsdom "^23.4.0" - jest-get-type "^22.1.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve-dependencies "^23.6.0" - jest-runner "^23.6.0" - jest-runtime "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - jest-watcher "^23.4.0" - jest-worker "^23.2.0" - micromatch "^2.3.11" - node-notifier "^5.2.1" - prompts "^0.1.9" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - yargs "^11.0.0" - -jest-config@^21.0.0: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-21.2.1.tgz#c7586c79ead0bcc1f38c401e55f964f13bf2a480" - integrity sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A== - dependencies: - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^21.2.1" - jest-environment-node "^21.2.1" - jest-get-type "^21.2.0" - jest-jasmine2 "^21.2.1" - jest-regex-util "^21.2.0" - jest-resolve "^21.2.0" - jest-util "^21.2.1" - jest-validate "^21.2.1" - pretty-format "^21.2.1" - -jest-config@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" - integrity sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ== - dependencies: - babel-core "^6.0.0" - babel-jest "^23.6.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^23.4.0" - jest-environment-node "^23.4.0" - jest-get-type "^22.1.0" - jest-jasmine2 "^23.6.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - pretty-format "^23.6.0" - -jest-diff@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-21.2.1.tgz#46cccb6cab2d02ce98bc314011764bb95b065b4f" - integrity sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA== - dependencies: - chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^21.2.0" - pretty-format "^21.2.1" - -jest-diff@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" - integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g== - dependencies: - chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" - -jest-docblock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" - integrity sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c= - dependencies: - detect-newline "^2.1.0" - -jest-each@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" - integrity sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg== - dependencies: - chalk "^2.0.1" - pretty-format "^23.6.0" - -jest-environment-jsdom@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz#38d9980c8259b2a608ec232deee6289a60d9d5b4" - integrity sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg== - dependencies: - jest-mock "^21.2.0" - jest-util "^21.2.1" - jsdom "^9.12.0" - -jest-environment-jsdom@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" - integrity sha1-BWp5UrP+pROsYqFAosNox52eYCM= - dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" - jsdom "^11.5.1" - -jest-environment-node@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-21.2.1.tgz#98c67df5663c7fbe20f6e792ac2272c740d3b8c8" - integrity sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw== - dependencies: - jest-mock "^21.2.0" - jest-util "^21.2.1" - -jest-environment-node@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" - integrity sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA= - dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" - -jest-get-type@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23" - integrity sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q== - -jest-get-type@^22.1.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" - integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== - -jest-haste-map@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16" - integrity sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg== - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - invariant "^2.2.4" - jest-docblock "^23.2.0" - jest-serializer "^23.0.1" - jest-worker "^23.2.0" - micromatch "^2.3.11" - sane "^2.0.0" - -jest-jasmine2@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz#9cc6fc108accfa97efebce10c4308548a4ea7592" - integrity sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A== - dependencies: - chalk "^2.0.1" - expect "^21.2.1" - graceful-fs "^4.1.11" - jest-diff "^21.2.1" - jest-matcher-utils "^21.2.1" - jest-message-util "^21.2.1" - jest-snapshot "^21.2.1" - p-cancelable "^0.3.0" - -jest-jasmine2@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" - integrity sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ== - dependencies: - babel-traverse "^6.0.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^23.6.0" - is-generator-fn "^1.0.0" - jest-diff "^23.6.0" - jest-each "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - pretty-format "^23.6.0" - -jest-leak-detector@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de" - integrity sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg== - dependencies: - pretty-format "^23.6.0" - -jest-matcher-utils@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz#72c826eaba41a093ac2b4565f865eb8475de0f64" - integrity sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg== - dependencies: - chalk "^2.0.1" - jest-get-type "^21.2.0" - pretty-format "^21.2.1" - -jest-matcher-utils@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" - integrity sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog== - dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" - -jest-message-util@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-21.2.1.tgz#bfe5d4692c84c827d1dcf41823795558f0a1acbe" - integrity sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ== - dependencies: - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - -jest-message-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" - integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8= - dependencies: - "@babel/code-frame" "^7.0.0-beta.35" - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - stack-utils "^1.0.1" - -jest-mock@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-21.2.0.tgz#7eb0770e7317968165f61ea2a7281131534b3c0f" - integrity sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw== - -jest-mock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" - integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ= - -jest-regex-util@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-21.2.0.tgz#1b1e33e63143babc3e0f2e6c9b5ba1eb34b2d530" - integrity sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ== - -jest-regex-util@^23.3.0: - version "23.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" - integrity sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U= - -jest-resolve-dependencies@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d" - integrity sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA== - dependencies: - jest-regex-util "^23.3.0" - jest-snapshot "^23.6.0" - -jest-resolve@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-21.2.0.tgz#068913ad2ba6a20218e5fd32471f3874005de3a6" - integrity sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw== - dependencies: - browser-resolve "^1.11.2" - chalk "^2.0.1" - is-builtin-module "^1.0.0" - -jest-resolve@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" - integrity sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA== - dependencies: - browser-resolve "^1.11.3" - chalk "^2.0.1" - realpath-native "^1.0.0" - -jest-runner@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38" - integrity sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA== - dependencies: - exit "^0.1.2" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-docblock "^23.2.0" - jest-haste-map "^23.6.0" - jest-jasmine2 "^23.6.0" - jest-leak-detector "^23.6.0" - jest-message-util "^23.4.0" - jest-runtime "^23.6.0" - jest-util "^23.4.0" - jest-worker "^23.2.0" - source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082" - integrity sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw== - dependencies: - babel-core "^6.0.0" - babel-plugin-istanbul "^4.1.6" - chalk "^2.0.1" - convert-source-map "^1.4.0" - exit "^0.1.2" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - realpath-native "^1.0.0" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^11.0.0" - -jest-serializer@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" - integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU= - -jest-snapshot@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-21.2.1.tgz#29e49f16202416e47343e757e5eff948c07fd7b0" - integrity sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg== - dependencies: - chalk "^2.0.1" - jest-diff "^21.2.1" - jest-matcher-utils "^21.2.1" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^21.2.1" - -jest-snapshot@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" - integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg== - dependencies: - babel-types "^6.0.0" - chalk "^2.0.1" - jest-diff "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-resolve "^23.6.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^23.6.0" - semver "^5.5.0" - -jest-util@^21.0.0, jest-util@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-21.2.1.tgz#a274b2f726b0897494d694a6c3d6a61ab819bb78" - integrity sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g== - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.11" - jest-message-util "^21.2.1" - jest-mock "^21.2.0" - jest-validate "^21.2.1" - mkdirp "^0.5.1" - -jest-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" - integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE= - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^23.4.0" - mkdirp "^0.5.1" - slash "^1.0.0" - source-map "^0.6.0" - -jest-validate@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7" - integrity sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg== - dependencies: - chalk "^2.0.1" - jest-get-type "^21.2.0" - leven "^2.1.0" - pretty-format "^21.2.1" - -jest-validate@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" - integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== - dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - leven "^2.1.0" - pretty-format "^23.6.0" - -jest-watcher@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" - integrity sha1-0uKM50+NrWxq/JIrksq+9u0FyRw= - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - string-length "^2.0.0" - -jest-worker@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" - integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= - dependencies: - merge-stream "^1.0.1" - -jest@23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d" - integrity sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw== - dependencies: - import-local "^1.0.0" - jest-cli "^23.6.0" - -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - integrity sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc= - dependencies: - jsbn "~0.1.0" - -jquery-sticky@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/jquery-sticky/-/jquery-sticky-1.0.4.tgz#2fe8d03dc904685340daa12cbdd1ca0c921b09ac" - integrity sha1-L+jQPckEaFNA2qEsvdHKDJIbCaw= - dependencies: - jquery "*" - -jquery-ui@1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.12.1.tgz#bcb4045c8dd0539c134bc1488cdd3e768a7a9e51" - integrity sha1-vLQEXI3QU5wTS8FIjN0+dop6nlE= - -jquery@*: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" - integrity sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c= - -jquery@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.1.4.tgz#228bde698a0c61431dc2630a6a154f15890d2317" - integrity sha1-IoveaYoMYUMdwmMKahVPFYkNIxc= - -js-base64@^2.1.8: - version "2.5.1" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" - integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== - -js-base64@^2.1.9: - version "2.3.2" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" - integrity sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw== - -js-stringify@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" - integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-xlsx@SheetJS/js-xlsx: - version "0.14.1" - resolved "https://codeload.github.com/SheetJS/js-xlsx/tar.gz/1eb1ec985a640b71c5b5bbe006e240f45cf239ab" - dependencies: - adler-32 "~1.2.0" - cfb "^1.1.0" - codepage "~1.14.0" - commander "~2.17.1" - crc-32 "~1.2.0" - exit-on-epipe "~1.0.1" - ssf "~0.10.2" - -js-yaml@^3.7.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" - integrity sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.0.0" - -jsdom@^9.12.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" - integrity sha1-6MVG//ywbADUgzyoRBD+1/igl9Q= - dependencies: - abab "^1.0.3" - acorn "^4.0.4" - acorn-globals "^3.1.0" - array-equal "^1.0.0" - content-type-parser "^1.0.1" - cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" - escodegen "^1.6.1" - html-encoding-sniffer "^1.0.1" - nwmatcher ">= 1.3.9 < 2.0.0" - parse5 "^1.5.1" - request "^2.79.0" - sax "^1.2.1" - symbol-tree "^3.2.1" - tough-cookie "^2.3.2" - webidl-conversions "^4.0.0" - whatwg-encoding "^1.0.1" - whatwg-url "^4.3.0" - xml-name-validator "^2.0.1" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsprim@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" - integrity sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg= - dependencies: - assert-plus "1.0.0" - extsprintf "1.0.2" - json-schema "0.2.3" - verror "1.3.6" - -jstransform@^11.0.3: - version "11.0.3" - resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223" - integrity sha1-CaeJk+CuTU70SH9hVakfYZDLQiM= - dependencies: - base62 "^1.1.0" - commoner "^0.10.1" - esprima-fb "^15001.1.0-dev-harmony-fb" - object-assign "^2.0.0" - source-map "^0.4.2" - -jstransformer@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" - integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= - dependencies: - is-promise "^2.0.0" - promise "^7.0.1" - -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0, kind-of@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0, kind-of@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.0.2.tgz#f57bec933d9a2209ffa96c5c08343607b7035fda" - integrity sha512-ru8+TQHbN8956c7ZlkgK5Imjx0GMat3jN45GNIthpPeb+SzLrqSg/NG7llQtIqUTbrdu5Oi0lSnIoJmDTwwSzw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - -kleur@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" - integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== - -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= - dependencies: - package-json "^4.0.0" - -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -lazy-cache@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" - integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= - dependencies: - set-getter "^0.1.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= - -loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@~0.2.5: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= - -lodash._bindcallback@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= - -lodash._createassigner@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" - integrity sha1-g4pbri/aymOsIt7o4Z+k5taXCxE= - dependencies: - lodash._bindcallback "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash.restparam "^3.0.0" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= - -lodash.assign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" - integrity sha1-POnwI0tLIiPilrj6CsH+6OvKZPo= - dependencies: - lodash._baseassign "^3.0.0" - lodash._createassigner "^3.0.0" - lodash.keys "^3.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.defaults@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" - integrity sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw= - dependencies: - lodash.assign "^3.0.0" - lodash.restparam "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.tail@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" - integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= - -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.3.0, lodash@~4.17.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= - -lodash@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lodash@~4.16.4: - version "4.16.6" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" - integrity sha1-0iyaxmAojzhD4Wun0rXQbMon13c= - -loglevel@^1.4.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.0.tgz#3863984a2c326b986fbb965f378758a6dc8a4324" - integrity sha512-OQ2jhWI5G2qsvO0UFNyCQWgKl/tFiwuPIXxELzACeUO2FqstN/R7mmL09+nhv6xOWVPPojQO1A90sCEoJSgBcQ== - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= - -loose-envify@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg= - dependencies: - js-tokens "^3.0.0" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= - -lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - integrity sha1-HRdnnAac2l0ECZGgnbwsDbN35V4= - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - -macaddress@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" - integrity sha1-WQTcU3w57G2+/q6QIycTX6hRHxI= - -make-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" - integrity sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg= - dependencies: - pify "^2.3.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" - integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -math-expression-evaluator@^1.2.14: - version "1.2.17" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" - integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw= - -mathjax@2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/mathjax/-/mathjax-2.7.1.tgz#c82d2f853b2f58f738e3355329adf0b2d8f8face" - integrity sha1-yC0vhTsvWPc44zVTKa3wstj4+s4= - -md5.js@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" - integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0= - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - -memory-fs@^0.4.0, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.3.0, meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - -merge@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^2.1.5, micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2" - integrity sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.2.2" - define-property "^1.0.0" - extend-shallow "^2.0.1" - extglob "^2.0.2" - fragment-cache "^0.2.1" - kind-of "^5.0.2" - nanomatch "^1.2.1" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -"mime-db@>= 1.29.0 < 2", mime-db@~1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" - integrity sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE= - -mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" - integrity sha1-gg9XIpa70g7CXtVeW13oaeVDbrE= - -mime-db@~1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" - integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== - -mime-types@^2.1.12, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" - integrity sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0= - dependencies: - mime-db "~1.27.0" - -mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17: - version "2.1.17" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" - integrity sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo= - dependencies: - mime-db "~1.30.0" - -mime-types@~2.1.19: - version "2.1.21" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" - integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== - dependencies: - mime-db "~1.37.0" - -mime@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - integrity sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM= - -mime@1.3.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" - integrity sha1-WR2E02U6awtKO5343lqoEI5y5eA= - -mime@^1.3.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== - -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - integrity sha1-5md4PZLonb00KBi1IwudYqZyrRg= - -minimalistic-assert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" - integrity sha1-cCvi3aazf0g2vLP121ZkG2Sh09M= - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.2, minimatch@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" - integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q= - dependencies: - brace-expansion "^1.0.0" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -mixin-deep@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.2.0.tgz#d02b8c6f8b6d4b8f5982d3fd009c4919851c3fe2" - integrity sha1-0CuMb4ttS49ZgtP9AJxJGYUcP+I= - dependencies: - for-in "^1.0.2" - is-extendable "^0.1.1" - -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -moment@*: - version "2.18.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" - integrity sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8= - -moment@2.22.2: - version "2.22.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" - integrity sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y= - -"moment@>=2.8.0 <2.11.0": - version "2.10.6" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.10.6.tgz#6cb21967c79cba7b0ca5e66644f173662b3efa77" - integrity sha1-bLIZZ8ecunsMpeZmRPFzZis++nc= - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.1.1.tgz#6e7de86a570872ab17058adea7160bbeca814dde" - integrity sha1-bn3oalcIcqsXBYrepxYLvsqBTd4= - dependencies: - dns-packet "^1.0.1" - thunky "^0.1.0" - -nan@^2.13.2: - version "2.16.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" - integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== - -nan@^2.3.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" - integrity sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY= - -nanomatch@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.3.tgz#15e1c02dcf990c27a283b08c0ba1801ce249a6a6" - integrity sha512-HqDMQWJlwpXbfKDpAnkc6AJQh5PFqVlrjYbruDjYVAS+05TQUb1qhIde4G9jMzHbs/u6bgEok1jMAV4yJzoh+w== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^1.0.0" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - is-odd "^1.0.0" - kind-of "^5.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -ncname@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" - integrity sha1-W1etGLHKCShk72Kwse2BlPODtxw= - dependencies: - xml-char-classes "^1.0.0" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= - -ng-file-upload@12.2.13: - version "12.2.13" - resolved "https://registry.yarnpkg.com/ng-file-upload/-/ng-file-upload-12.2.13.tgz#01800f3872e526f95310f8477e99e4f12d0d8d14" - integrity sha1-AYAPOHLlJvlTEPhHfpnk8S0NjRQ= - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-dir@^0.1.10: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= - dependencies: - minimatch "^3.0.2" - -node-forge@0.6.33: - version "0.6.33" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc" - integrity sha1-RjgRh59XPUUVWtap9D3ClujoXrw= - -node-gyp@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-libs-browser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" - integrity sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY= - dependencies: - assert "^1.1.1" - browserify-zlib "^0.1.4" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "0.0.1" - os-browserify "^0.2.0" - path-browserify "0.0.0" - process "^0.11.0" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.0.5" - stream-browserify "^2.0.1" - stream-http "^2.3.1" - string_decoder "^0.10.25" - timers-browserify "^2.0.2" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-notifier@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz#c77a4a7b84038733d5fb351aafd8a268bfe19a01" - integrity sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q== - dependencies: - growly "^1.3.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - -node-pre-gyp@^0.6.36: - version "0.6.38" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d" - integrity sha1-6Sog+DQWQVu0CG9tH7eLPac9ET0= - dependencies: - hawk "3.1.3" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-sass@4.14.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.0.tgz#a8e9d7720f8e15b4a1072719dcf04006f5648eeb" - integrity sha512-AxqU+DFpk0lEz95sI6jO0hU0Rwyw7BXVEv6o9OItoXLyeygPeaSpiV4rwQb10JiTghHaa0gZeD21sz+OsQluaw== - dependencies: - async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^3.0.0" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - in-publish "^2.0.0" - lodash "^4.17.15" - meow "^3.7.0" - mkdirp "^0.5.1" - nan "^2.13.2" - node-gyp "^3.8.0" - npmlog "^4.0.0" - request "^2.88.0" - sass-graph "^2.2.4" - stdout-stream "^1.4.0" - "true-case-path" "^1.0.2" - -nodemon@1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.1.tgz#996a56dc49d9f16bbf1b78a4de08f13634b3878d" - integrity sha1-mWpW3EnZ8Wu/G3ik3gjxNjSzh40= - dependencies: - chokidar "^1.7.0" - debug "^2.6.8" - es6-promise "^3.3.1" - ignore-by-default "^1.0.1" - lodash.defaults "^3.1.2" - minimatch "^3.0.4" - ps-tree "^1.1.0" - touch "^3.1.0" - undefsafe "0.0.3" - update-notifier "^2.2.0" - -"nopt@2 || 3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.3.6" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff" - integrity sha1-SY+kIMlkAfeHQCuiHmAN75+YH/8= - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -"npmlog@0 || 1 || 2 || 3 || 4": - version "4.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" - integrity sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518= - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.1" - set-blocking "~2.0.0" - -npmlog@^4.0.0, npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ= - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -"nwmatcher@>= 1.3.9 < 2.0.0": - version "1.4.2" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.2.tgz#c5e545ab40d22a56b0326531c4beaed7a888b3ea" - integrity sha512-QMkCGQFYp5p+zwU3INntLmz1HMfSx9dMVJMYKmE1yuSf/22Wjo6VPFa405mCLUuQn9lbQvH2DZN9lt10ZNvtAg== - -nwsapi@^2.0.7: - version "2.0.9" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" - integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== - -oauth-sign@~0.8.1, oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" - integrity sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo= - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - integrity sha1-xUYBd4rVYPEULODgG8yotW0TQm0= - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -obuf@^1.0.0, obuf@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" - integrity sha1-EEEktsYCxnlogaBCVB0220OlJk4= - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= - -once@^1.3.0, once@^1.3.3, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -open@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" - integrity sha1-QsPhjslUZra/DcQvOilFw/DK2Pw= - -opn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519" - integrity sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg== - dependencies: - is-wsl "^1.1.0" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -original@>=0.0.5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" - integrity sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs= - dependencies: - url-parse "1.0.x" - -os-browserify@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" - integrity sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - integrity sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - integrity sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw= - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== - -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" - integrity sha1-N8T5t+06tlx0gXtfJICTf7+XxxI= - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= - -parseurl@~1.3.1, parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - integrity sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - -pause-stream@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= - dependencies: - through "~2.3" - -pbkdf2@^3.0.3: - version "3.0.14" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" - integrity sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -portfinder@^1.0.9: - version "1.0.13" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" - integrity sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek= - dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= - dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" - -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= - dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" - -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= - dependencies: - postcss "^5.0.14" - -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= - dependencies: - postcss "^5.0.4" - -postcss-discard-empty@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= - dependencies: - postcss "^5.0.14" - -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= - dependencies: - postcss "^5.0.16" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-filter-plugins@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" - integrity sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew= - dependencies: - postcss "^5.0.4" - uniqid "^4.0.0" - -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= - dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" - -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= - dependencies: - postcss "^5.0.4" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - vendors "^1.0.0" - -postcss-message-helpers@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= - dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= - dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" - -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" - uniqs "^2.0.0" - -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - -postcss-modules-extract-imports@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" - integrity sha1-ZhQOzs447wa/DT41XWm/WdFB6oU= - dependencies: - postcss "^6.0.1" - -postcss-modules-local-by-default@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-scope@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-values@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= - dependencies: - postcss "^5.0.5" - -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" - -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= - dependencies: - postcss "^5.0.4" - -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= - dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" - -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= - dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" - -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" - integrity sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU= - -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: - version "5.2.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" - integrity sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs= - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@^6.0.1: - version "6.0.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.12.tgz#6b0155089d2d212f7bd6a0cecd4c58c007403535" - integrity sha512-K6SLofXEK43FBSyZ6/ExQV7ji24OEw4tEY6x1CAf7+tcoMWJoO24Rf3rVFVpk+5IQL1e1Cy3sTKfg7hXuLzafg== - dependencies: - chalk "^2.1.0" - source-map "^0.5.7" - supports-color "^4.4.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0, prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - -prettier@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.6.1.tgz#850f411a3116226193e32ea5acfc21c0f9a76d7d" - integrity sha512-f85qBoQiqiFM/sCmJaN4Lagj9bqMcv38vCftqp4GfVessAqq3Ns6g+3gd8UXReStLLE/DGEdwiZXoFKxphKqwg== - -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -pretty-format@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" - integrity sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A== - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -pretty-format@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" - integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -printj@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.0.tgz#85487b5e8f96763b0b4a253613bef9dd9b387e3c" - integrity sha512-NbiNBOQ0GioHyeD3ni8wZB7ZmfU7mxIrqhWR5XSreX3rUVvk5UOwpzxOnWqrLdCtoBbdQ40sEwC+nXxxjlUo0A== - -printj@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" - integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== - -private@^0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -private@^0.1.7, private@~0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" - integrity sha1-aM5eih7woju1cMwoU3tTMqumPvE= - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - -process@^0.11.0: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -promise@^7.0.1, promise@^7.0.3: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -prompts@^0.1.9: - version "0.1.14" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" - integrity sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w== - dependencies: - kleur "^2.0.1" - sisteransi "^0.1.1" - -proxy-addr@~1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918" - integrity sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg= - dependencies: - forwarded "~0.1.0" - ipaddr.js "1.4.0" - -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo= - -ps-tree@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" - integrity sha1-tCGyQUDWID8e08dplrRCewjowBQ= - dependencies: - event-stream "~3.3.0" - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.24: - version "1.1.29" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" - integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== - -public-encrypt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" - integrity sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY= - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -pug-attrs@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.2.tgz#8be2b2225568ffa75d1b866982bff9f4111affcb" - integrity sha1-i+KyIlVo/6ddG4Zpgr/59BEa/8s= - dependencies: - constantinople "^3.0.1" - js-stringify "^1.0.1" - pug-runtime "^2.0.3" - -pug-code-gen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.0.tgz#96aea39a9e62f1ec5d2b6a5b42a29d528c70b43d" - integrity sha512-E4oiJT+Jn5tyEIloj8dIJQognbiNNp0i0cAJmYtQTFS0soJ917nlIuFtqVss3IXMEyQKUew3F4gIkBpn18KbVg== - dependencies: - constantinople "^3.0.1" - doctypes "^1.1.0" - js-stringify "^1.0.1" - pug-attrs "^2.0.2" - pug-error "^1.3.2" - pug-runtime "^2.0.3" - void-elements "^2.0.1" - with "^5.0.0" - -pug-error@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.2.tgz#53ae7d9d29bb03cf564493a026109f54c47f5f26" - integrity sha1-U659nSm7A89WRJOgJhCfVMR/XyY= - -pug-filters@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-2.1.5.tgz#66bf6e80d97fbef829bab0aa35eddff33fc964f3" - integrity sha512-xkw71KtrC4sxleKiq+cUlQzsiLn8pM5+vCgkChW2E6oNOzaqTSIBKIQ5cl4oheuDzvJYCTSYzRaVinMUrV4YLQ== - dependencies: - clean-css "^3.3.0" - constantinople "^3.0.1" - jstransformer "1.0.0" - pug-error "^1.3.2" - pug-walk "^1.1.5" - resolve "^1.1.6" - uglify-js "^2.6.1" - -pug-jest@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pug-jest/-/pug-jest-1.0.1.tgz#ea823a7dd9b6160b0269878e059e5fcd91f10f68" - integrity sha1-6oI6fdm2FgsCaYeOBZ5fzZHxD2g= - dependencies: - pug "^2.0.0-beta6" - -pug-lexer@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-3.1.0.tgz#fd087376d4a675b4f59f8fef422883434e9581a2" - integrity sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI= - dependencies: - character-parser "^2.1.1" - is-expression "^3.0.0" - pug-error "^1.3.2" - -pug-linker@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.3.tgz#25f59eb750237f0368e59c3379764229c0189c41" - integrity sha512-DCKczglCXOzJ1lr4xUj/lVHYvS+lGmR2+KTCjZjtIpdwaN7lNOoX2SW6KFX5X4ElvW+6ThwB+acSUg08UJFN5A== - dependencies: - pug-error "^1.3.2" - pug-walk "^1.1.5" - -pug-load@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.9.tgz#ee217c914cc1d9324d44b86c32d1df241d36de7a" - integrity sha512-BDdZOCru4mg+1MiZwRQZh25+NTRo/R6/qArrdWIf308rHtWA5N9kpoUskRe4H6FslaQujC+DigH9LqlBA4gf6Q== - dependencies: - object-assign "^4.1.0" - pug-walk "^1.1.5" - -pug-loader@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pug-loader/-/pug-loader-2.3.0.tgz#b869294413a2218f0a7dd92a953e592283676c10" - integrity sha1-uGkpRBOiIY8KfdkqlT5ZIoNnbBA= - dependencies: - loader-utils "~0.2.5" - pug-walk "^1.0.0" - resolve "^1.1.7" - -pug-parser@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-4.0.0.tgz#c9f52322e4eabe4bf5beeba64ed18373bb627801" - integrity sha512-ocEUFPdLG9awwFj0sqi1uiZLNvfoodCMULZzkRqILryIWc/UUlDlxqrKhKjAIIGPX/1SNsvxy63+ayEGocGhQg== - dependencies: - pug-error "^1.3.2" - token-stream "0.0.1" - -pug-runtime@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.3.tgz#98162607b0fce9e254d427f33987a5aee7168bda" - integrity sha1-mBYmB7D86eJU1CfzOYelrucWi9o= - -pug-strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.2.tgz#d313afa01bcc374980e1399e23ebf2eb9bdc8513" - integrity sha1-0xOvoBvMN0mA4TmeI+vy65vchRM= - dependencies: - pug-error "^1.3.2" - -pug-walk@^1.0.0, pug-walk@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.5.tgz#90e943acbcf7021e6454cf1b32245891cba6f851" - integrity sha512-rJlH1lXerCIAtImXBze3dtKq/ykZMA4rpO9FnPcIgsWcxZLOvd8zltaoeOVFyBSSqCkhhJWbEbTMga8UxWUUSA== - -pug@2.0.0-rc.4, pug@^2.0.0-beta6: - version "2.0.0-rc.4" - resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.0-rc.4.tgz#b7b08f6599bd5302568042b7436984fb28c80a13" - integrity sha512-SL7xovj6E2Loq9N0UgV6ynjMLW4urTFY/L/Fprhvz13Xc5vjzkjZjI1QHKq31200+6PSD8PyU6MqrtCTJj6/XA== - dependencies: - pug-code-gen "^2.0.0" - pug-filters "^2.1.5" - pug-lexer "^3.1.0" - pug-linker "^3.0.3" - pug-load "^2.0.9" - pug-parser "^4.0.0" - pug-runtime "^2.0.3" - pug-strip-comments "^1.0.2" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= - -q@^1.1.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" - integrity sha1-3QG6ydBtMObyGa7LglPunr3DCPE= - -qs@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" - integrity sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg== - -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= - -qs@~6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@0.0.x: - version "0.0.4" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" - integrity sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw= - -querystringify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" - integrity sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs= - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - integrity sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -randombytes@^2.0.0, randombytes@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" - integrity sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.0.3, range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" - integrity sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU= - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-dom@^0.14.0: - version "0.14.9" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.14.9.tgz#05064a3dcf0fb1880a3b2bfc9d58c55d8d9f6293" - integrity sha1-BQZKPc8PsYgKOyv8nVjFXY2fYpM= - -react@^0.14.0: - version "0.14.9" - resolved "https://registry.yarnpkg.com/react/-/react-0.14.9.tgz#9110a6497c49d44ba1c0edd317aec29c2e0d91d1" - integrity sha1-kRCmSXxJ1EuhwO3TF67CnC4NkdE= - dependencies: - envify "^3.0.0" - fbjs "^0.6.1" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@1.0: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -"readable-stream@^2.0.0 || ^1.1.13": - version "2.2.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816" - integrity sha1-i0Ou125xSDk40SqNRsbPGgCx+BY= - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.2.6, readable-stream@^2.2.9: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg= - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -realpath-native@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560" - integrity sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g== - dependencies: - util.promisify "^1.0.0" - -recast@^0.11.17, recast@~0.11.12: - version "0.11.23" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" - integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM= - dependencies: - ast-types "0.9.6" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -reduce-css-calc@^1.2.6: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" - integrity sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk= - dependencies: - balanced-match "^0.4.2" - -regenerate@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" - integrity sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg== - -regenerator-runtime@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" - integrity sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A== - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - -regex-not@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.0.tgz#42f83e39771622df826b02af176525d6a5f157f9" - integrity sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k= - dependencies: - extend-shallow "^2.0.1" - -regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -registry-auth-token@^3.0.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" - integrity sha1-+w0yie4Nmtosu1KvXf5mywcNMAY= - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= - dependencies: - rc "^1.0.1" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" - integrity sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk= - dependencies: - css-select "^1.1.0" - dom-converter "~0.1" - htmlparser2 "~3.3.0" - strip-ansi "^3.0.0" - utila "~0.3" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= - -repeat-string@^1.5.2, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -request-promise-core@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" - integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= - dependencies: - lodash "^4.13.1" - -request-promise-native@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" - integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU= - dependencies: - request-promise-core "1.1.1" - stealthy-require "^1.1.0" - tough-cookie ">=2.3.3" - -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - integrity sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA= - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -request@^2.79.0: - version "2.83.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" - integrity sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - hawk "~6.0.2" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - stringstream "~0.0.5" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - -request@^2.87.0, request@^2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -requires-port@1.0.x, requires-port@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.1.6, resolve@^1.1.7: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" - integrity sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q== - dependencies: - path-parse "^1.0.5" - -restangular@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/restangular/-/restangular-1.6.1.tgz#add1743f27d77b0b8a652e6485a760b6234ed024" - integrity sha1-rdF0PyfXewuKZS5khadgtiNO0CQ= - dependencies: - lodash "~4.17.0" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= - -rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== - dependencies: - glob "^7.0.5" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" - integrity sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc= - dependencies: - hash-base "^2.0.0" - inherits "^2.0.1" - -safe-buffer@5.1.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== - -safe-buffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" - integrity sha1-0mPKVGls2KMGtcplUekt5XkY++c= - -safe-buffer@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.2.0.tgz#d6d2e2fcab00e3d283c93b912b7c3a20846f1d56" - integrity sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg== - dependencies: - anymatch "^1.3.0" - exec-sh "^0.2.0" - fb-watchman "^2.0.0" - minimatch "^3.0.2" - minimist "^1.1.1" - walker "~1.0.5" - watch "~0.18.0" - optionalDependencies: - fsevents "^1.1.1" - -sass-graph@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" - integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= - dependencies: - glob "^7.0.0" - lodash "^4.0.0" - scss-tokenizer "^0.2.3" - yargs "^7.0.0" - -sass-loader@6.0.6: - version "6.0.6" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.6.tgz#e9d5e6c1f155faa32a4b26d7a9b7107c225e40f9" - integrity sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ== - dependencies: - async "^2.1.5" - clone-deep "^0.3.0" - loader-utils "^1.0.1" - lodash.tail "^4.1.1" - pify "^3.0.0" - -sax@^1.2.1, sax@^1.2.4, sax@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" - integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8= - dependencies: - ajv "^5.0.0" - -scss-tokenizer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" - integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= - dependencies: - js-base64 "^2.1.8" - source-map "^0.4.2" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.9.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52" - integrity sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI= - dependencies: - node-forge "0.6.33" - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= - -semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== - -semver@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -send@0.15.6: - version "0.15.6" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz#20f23a9c925b762ab82705fe2f9db252ace47e34" - integrity sha1-IPI6nJJbdiq4JwX+L52yUqzkfjQ= - dependencies: - debug "2.6.9" - depd "~1.1.1" - destroy "~1.0.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.3.4" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.3.1" - -serve-index@^1.7.2: - version "1.9.0" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.0.tgz#d2b280fc560d616ee81b48bf0fa82abed2485ce7" - integrity sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc= - dependencies: - accepts "~1.3.3" - batch "0.6.1" - debug "2.6.8" - escape-html "~1.0.3" - http-errors "~1.6.1" - mime-types "~2.1.15" - parseurl "~1.3.1" - -serve-static@1.12.6: - version "1.12.6" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.6.tgz#b973773f63449934da54e5beba5e31d9f4211577" - integrity sha1-uXN3P2NEmTTaVOW+ul4x2fQhFXc= - dependencies: - encodeurl "~1.0.1" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.15.6" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-getter@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" - integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= - dependencies: - to-object-path "^0.3.0" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.9" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" - integrity sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -simple-is@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz#2abb75aade39deb5cc815ce10e6191164850baf0" - integrity sha1-Krt1qt453rXMgVzhDmGRFkhQuvA= - -sisteransi@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" - integrity sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g== - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370" - integrity sha1-4StUh/re0+PeoKyR6UAL91tAE3A= - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^2.0.0" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= - dependencies: - hoek "2.x.x" - -sntp@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.0.2.tgz#5064110f0af85f7cfdb7d6b67a40028ce52b4b2b" - integrity sha1-UGQRDwr4X3z9t9a2ekACjOUrSys= - dependencies: - hoek "4.x.x" - -sockjs-client@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" - integrity sha1-W6vjhrd15M8U51IJEUUmVAFsixI= - dependencies: - debug "^2.6.6" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" - json3 "^3.3.2" - url-parse "^1.1.8" - -sockjs@0.3.18: - version "0.3.18" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" - integrity sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc= - dependencies: - faye-websocket "^0.10.0" - uuid "^2.0.2" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" - integrity sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A== - -source-map-explorer@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-1.5.0.tgz#654e2ba0db158fecfc99b9cefdf891b755b767d1" - integrity sha512-skfca9IJvJKsI+J3sWFQ+hCqUDmZxhGgM20/L7PpNGRnQSVyXPYi7U0TDw0eNj5Yhtsm//psmNkxQmHuEJJ6FA== - dependencies: - btoa "^1.1.2" - convert-source-map "^1.1.1" - docopt "^0.6.2" - glob "^7.1.2" - open "0.0.5" - source-map "^0.5.1" - temp "^0.8.3" - underscore "^1.8.3" - -source-map-resolve@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.0.tgz#fcad0b64b70afb27699e425950cb5ebcd410bc20" - integrity sha1-/K0LZLcK+ydpnkJZUMtevNQQvCA= - dependencies: - atob "^2.0.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.4.15, source-map-support@^0.4.4: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map-support@^0.5.6: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@0.4.x, source-map@^0.4.2, source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - integrity sha1-66T12pwNyZneaAMti092FzZSA2s= - dependencies: - amdefine ">=0.0.4" - -source-map@0.5.x, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3, source-map@~0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A= - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw= - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc= - -spdy-transport@^2.0.18: - version "2.0.20" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d" - integrity sha1-c15yBUxIayNU/onnAiVgBKOazk0= - dependencies: - debug "^2.6.8" - detect-node "^2.0.3" - hpack.js "^2.1.6" - obuf "^1.1.1" - readable-stream "^2.2.9" - safe-buffer "^5.0.1" - wbuf "^1.7.2" - -spdy@^3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" - integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= - dependencies: - debug "^2.6.8" - handle-thing "^1.2.5" - http-deceiver "^1.2.7" - safe-buffer "^5.0.1" - select-hose "^2.0.0" - spdy-transport "^2.0.18" - -spin.js@^2.0.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/spin.js/-/spin.js-2.3.2.tgz#6caa56d520673450fd5cfbc6971e6d0772c37a1a" - integrity sha1-bKpW1SBnNFD9XPvGlx5tB3LDeho= - -split-string@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-2.1.1.tgz#af4b06d821560426446c3cd931cda618940d37d0" - integrity sha1-r0sG2CFWBCZEbDzZMc2mGJQNN9A= - dependencies: - extend-shallow "^2.0.1" - -split-string@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.0.2.tgz#6129bc92731716e5aa1fb73c333078f0b7c114c8" - integrity sha512-d6myUSfwmBz1izkY4r7r7I0PL41rh21qUDYK1OgclmGHeoqQoujduGxMbzw6BlF3HKmJR4sMpbWVo7/Xzg4YBQ== - dependencies: - extend-shallow "^2.0.1" - -split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split@0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= - dependencies: - through "2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -ssf@~0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/ssf/-/ssf-0.10.2.tgz#65b2b4fcdfd967bc8e8383a41349009893115976" - integrity sha512-rDhAPm9WyIsY8eZEKyE8Qsotb3j/wBdvMWBUsOhJdfhKGLfQidRjiBUV0y/MkyCLiXQ38FG6LWW/VYUtqlIDZQ== - dependencies: - frac "~1.1.2" - -sshpk@^1.7.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77" - integrity sha1-LY1eu0pvqyj/ujf6YqkPSj6lnXc= - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -stack-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" - integrity sha1-1PM6tU6OOHeLDKXP07OvsS22hiA= - -stackframe@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" - integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= - -stdout-stream@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" - integrity sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s= - dependencies: - readable-stream "^2.0.1" - -stealthy-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-combiner@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" - integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= - dependencies: - duplexer "~0.1.1" - -stream-http@^2.3.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" - integrity sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" - integrity sha1-VpcPscOFWOnnC3KL894mmsRa36w= - dependencies: - strip-ansi "^3.0.0" - -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^0.10.25, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== - dependencies: - safe-buffer "~5.1.0" - -stringstream@~0.0.4, stringstream@~0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg= - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-bom@3.0.0, strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -style-loader@0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb" - integrity sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw== - dependencies: - loader-utils "^1.0.2" - schema-utils "^0.3.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.1.2, supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== - dependencies: - has-flag "^2.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -symbol-tree@^3.2.1, symbol-tree@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= - -tapable@^0.2.5, tapable@^0.2.7: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" - integrity sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI= - -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - integrity sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ= - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.0.0, tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -temp@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" - integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k= - dependencies: - os-tmpdir "^1.0.0" - rimraf "~2.2.6" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" - -test-exclude@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" - integrity sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA== - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - -test-exclude@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" - integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= - -through@2, through@~2.3, through@~2.3.1, through@~2.3.4, through@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" - integrity sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4= - -time-stamp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" - integrity sha1-lcakRTDhW6jW9KPsuMOj+sRto1c= - -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -timers-browserify@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" - integrity sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg== - dependencies: - setimmediate "^1.0.4" - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae" - integrity sha1-FTWL7kosg712N3uh3ASdDxiDeq4= - dependencies: - define-property "^0.2.5" - extend-shallow "^2.0.1" - regex-not "^1.0.0" - -to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -token-stream@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" - integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= - -toposort@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.4.tgz#a86107690cbee8cae43b349d2f60162500924dfc" - integrity sha1-qGEHaQy+6MrkOzSdL2AWJQCSTfw= - -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== - dependencies: - nopt "~1.0.10" - -tough-cookie@>=2.3.3, tough-cookie@^2.3.2, tough-cookie@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" - integrity sha1-C2GKVWW23qkL80JdBNVe3EdadWE= - dependencies: - punycode "^1.4.1" - -tough-cookie@^2.3.4, tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - integrity sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo= - dependencies: - punycode "^1.4.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - -"true-case-path@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" - integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== - dependencies: - glob "^7.1.2" - -ts-jest@21.0.1: - version "21.0.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-21.0.1.tgz#825138413eb299d12d60d0ae4d5a49f76b1cfeac" - integrity sha512-MIX8uMMr7FSRT56GASXUxeorEs3x2iO+JwkVzUHwxjzld4+UtPMZ9EEUpX7JU7eFKDkXaD1aAIVnuNrg15Xnuw== - dependencies: - babel-core "^6.24.1" - babel-plugin-istanbul "^4.1.4" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-preset-jest "^21.0.0" - fs-extra "^4.0.0" - jest-config "^21.0.0" - jest-util "^21.0.0" - pkg-dir "^2.0.0" - source-map-support "^0.4.4" - yargs "^8.0.1" - -ts-loader@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-3.0.2.tgz#e4aa476f54c4197bee0251cd53a783ed3665a629" - integrity sha512-dy82zfGOAZtF2LRsmryU1aKebtcdIS+diswWoMjFx0wY+knHLENVI2vOvmjB7fy8i4kWRuUPK2FAxjMB4CDmCA== - dependencies: - chalk "^2.0.1" - enhanced-resolve "^3.0.0" - loader-utils "^1.0.2" - semver "^5.0.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-is@~1.6.15: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" - integrity sha1-yrEPtJCeRByChC6v4a1kbIGARBA= - dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" - -typescript@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" - integrity sha1-7znN6ierrAtQAkLWcmq5DgyEZjE= - -ua-parser-js@^0.7.9: - version "0.7.17" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" - integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== - -uglify-js@3.1.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.2.tgz#b50bcf15a5fd9e9ed40afbcdef3b59d6891b291f" - integrity sha512-kKJ8zg7Ivw3DG9Ytgp4+iiSHq3HaHjEQMvyT2x2Bs8kSUwVemj6bPGFp6YWL81f5NAIOLVUKPxBSvqLRGXMpdw== - dependencies: - commander "~2.11.0" - source-map "~0.5.1" - -uglify-js@^2.6, uglify-js@^2.6.1, uglify-js@^2.8.29: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= - -uglifyjs-webpack-plugin@0.4.6, uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" - integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk= - dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" - -ui-select@0.19.8: - version "0.19.8" - resolved "https://registry.yarnpkg.com/ui-select/-/ui-select-0.19.8.tgz#74860848a7fd8bc494d9856d2f62776ea98637c1" - integrity sha1-dIYISKf9i8SU2YVtL2J3bqmGN8E= - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -undefsafe@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f" - integrity sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8= - -underscore@^1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" - integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= - -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqid@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" - integrity sha1-iSIN32t1GuUrX3JISGNShZa7hME= - dependencies: - macaddress "^0.2.8" - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - -universalify@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" - integrity sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc= - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - -update-notifier@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" - integrity sha1-G1g3z5DAc22IYncytmHBOPht5y8= - dependencies: - boxen "^1.0.0" - chalk "^1.0.0" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.9.tgz#cc8fea82c7b906e7777019250869e569e995c295" - integrity sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q== - dependencies: - loader-utils "^1.0.2" - mime "1.3.x" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - -url-parse@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" - integrity sha1-CFSGBCKv3P7+tsllxmLUgAFpkns= - dependencies: - querystringify "0.0.x" - requires-port "1.0.x" - -url-parse@^1.1.8: - version "1.1.9" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19" - integrity sha1-xn8dd11R8KGJEd17P/rSe7nlvRk= - dependencies: - querystringify "~1.0.0" - requires-port "1.0.x" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8" - integrity sha1-riig1y+TvyJCKhii43mZMRLeyOg= - dependencies: - define-property "^0.2.5" - isobject "^3.0.0" - lazy-cache "^2.0.2" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3, util@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -utila@~0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" - integrity sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY= - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" - integrity sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg= - -uuid@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= - -uuid@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" - integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE= - -uuid@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g== - -uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w= - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - -vary@~1.1.1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" - integrity sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI= - -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" - integrity sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw= - dependencies: - extsprintf "1.0.2" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= - dependencies: - indexof "0.0.1" - -void-elements@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= - -w3c-hr-time@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= - dependencies: - browser-process-hrtime "^0.1.2" - -walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -watch@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" - integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= - dependencies: - exec-sh "^0.2.0" - minimist "^1.2.0" - -watchpack@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" - integrity sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw= - dependencies: - async "^2.1.2" - chokidar "^1.7.0" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" - integrity sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4= - dependencies: - minimalistic-assert "^1.0.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webidl-conversions@^4.0.0, webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webpack-bundle-size-analyzer@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-size-analyzer/-/webpack-bundle-size-analyzer-2.7.0.tgz#2ec0539fd57f8716083898b38b892fe94c88c6bc" - integrity sha1-LsBTn9V/hxYIOJizi4kv6UyIxrw= - dependencies: - commander "^2.7.1" - filesize "^3.1.2" - humanize "0.0.9" - -webpack-dev-middleware@^1.11.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" - integrity sha1-007++y7dp+HTtdvgcolRMhllFwk= - dependencies: - memory-fs "~0.4.1" - mime "^1.3.4" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - time-stamp "^2.0.0" - -webpack-dev-server@2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.9.1.tgz#7ac9320b61b00eb65b2109f15c82747fc5b93585" - integrity sha512-qFKs4Wg6JI6FkAQ6WFqeDCCxXEBLsDHkqJB3f9tmlqx8C68Y9vQWwcaMT4Q9H8WF32Q6QUNmgK4qQkdHfXvj/g== - dependencies: - ansi-html "0.0.7" - array-includes "^3.0.3" - bonjour "^3.5.0" - chokidar "^1.6.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" - del "^3.0.0" - express "^4.13.3" - html-entities "^1.2.0" - http-proxy-middleware "~0.17.4" - internal-ip "1.2.0" - ip "^1.1.5" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" - selfsigned "^1.9.1" - serve-index "^1.7.2" - sockjs "0.3.18" - sockjs-client "1.1.4" - spdy "^3.4.1" - strip-ansi "^3.0.1" - supports-color "^4.2.1" - webpack-dev-middleware "^1.11.0" - yargs "^6.6.0" - -webpack-manifest-plugin@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz#5ea8ee5756359ddc1d98814324fe43496349a7d4" - integrity sha512-MX60Bv2G83Zks9pi3oLOmRgnPAnwrlMn+lftMrWBm199VQjk46/xgzBi9lPfpZldw2+EI2S+OevuLIaDuxCWRw== - dependencies: - fs-extra "^0.30.0" - lodash ">=3.5 <5" - -webpack-merge@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.0.tgz#6ad72223b3e0b837e531e4597c199f909361511e" - integrity sha1-atciI7PguDflMeRZfBmfkJNhUR4= - dependencies: - lodash "^4.17.4" - -webpack-node-externals@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz#232c62ec6092b100635a3d29d83c1747128df9bd" - integrity sha1-Iyxi7GCSsQBjWj0p2DwXRxKN+b0= - -webpack-sources@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" - integrity sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw== - dependencies: - source-list-map "^2.0.0" - source-map "~0.5.3" - -webpack-visualizer-plugin@0.1.11: - version "0.1.11" - resolved "https://registry.yarnpkg.com/webpack-visualizer-plugin/-/webpack-visualizer-plugin-0.1.11.tgz#b8770ad86b4f652612c68b1b782253faf9f8a34e" - integrity sha1-uHcK2GtPZSYSxosbeCJT+vn4o04= - dependencies: - d3 "^3.5.6" - mkdirp "^0.5.1" - react "^0.14.0" - react-dom "^0.14.0" - -webpack@3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83" - integrity sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw== - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^5.1.5" - ajv-keywords "^2.0.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" - webpack-sources "^1.0.1" - yargs "^8.0.2" - -websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= - dependencies: - http-parser-js ">=0.4.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.2.tgz#0e18781de629a18308ce1481650f67ffa2693a5d" - integrity sha1-Dhh4HeYpoYMIzhSBZQ9n/6JpOl0= - -whatwg-encoding@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" - integrity sha1-PGxFGhmO567FWx7GHQkgxngBpfQ= - dependencies: - iconv-lite "0.4.13" - -whatwg-encoding@^1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz#0e3684c6cb9995b43efc9df03e4c365d95fd9cc0" - integrity sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA= - -whatwg-mimetype@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz#a3d58ef10b76009b042d03e25591ece89b88d171" - integrity sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw== - -whatwg-url@^4.3.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" - integrity sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@1, which@^1.2.9: - version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - integrity sha1-mofEN48D6CfOyvGs31bHNsAcFOU= - dependencies: - isexe "^2.0.0" - -which@^1.2.12: - version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" - integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== - dependencies: - isexe "^2.0.0" - -which@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" - integrity sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0= - dependencies: - string-width "^1.0.1" - -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" - integrity sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw= - dependencies: - string-width "^1.0.1" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - -with@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" - integrity sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4= - dependencies: - acorn "^3.1.0" - acorn-globals "^3.0.0" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" - integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= - -xml-char-classes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" - integrity sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0= - -xml-name-validator@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU= - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -yabh@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/yabh/-/yabh-1.1.0.tgz#c6604e5d46491890ad99accf02294eef322ebd46" - integrity sha1-xmBOXUZJGJCtmazPAilO7zIuvUY= - -yallist@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw= - dependencies: - camelcase "^3.0.0" - -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= - dependencies: - camelcase "^4.1.0" - -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - -yargs@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yargs@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - -yargs@^8.0.1, yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0"