├── .github
├── CODEOWNERS
└── ISSUE_TEMPLATE.md
├── .gitignore
├── .npmignore
├── .travis.yml
├── CONTRIBUTING.md
├── README.md
├── bower.json
├── demo
├── index.html
├── simple-menu.js
└── simple-menubar.js
├── formatconfig.json
├── iron-menu-behavior.js
├── iron-menubar-behavior.js
├── manifest.json
├── package-lock.json
├── package.json
├── test
├── index.html
├── iron-menu-behavior.html
├── iron-menubar-behavior.html
├── test-menu.js
├── test-menubar.js
└── test-nested-menu.js
└── wct.conf.json
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @bicknellr
2 | /.travis.yml @azakus
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
2 | ### Description
3 |
4 |
5 | ### Expected outcome
6 |
7 |
8 |
9 | ### Actual outcome
10 |
11 |
12 |
13 | ### Live Demo
14 |
15 |
16 | ### Steps to reproduce
17 |
18 |
23 |
24 | ### Browsers Affected
25 |
26 | - [ ] Chrome
27 | - [ ] Firefox
28 | - [ ] Safari 9
29 | - [ ] Safari 8
30 | - [ ] Safari 7
31 | - [ ] Edge
32 | - [ ] IE 11
33 | - [ ] IE 10
34 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | bower_components*
2 | bower-*.json
3 | node_modules
4 | *.d.ts
5 | *.tgz
6 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | *.tgz
2 | .github
3 | .travis.yml
4 | formatconfig.json
5 | gen-tsd.json
6 | test/
7 | wct.conf.json
8 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | sudo: 'false'
3 | before_script:
4 | - npm install -g polymer-cli
5 | - git checkout package-lock.json
6 | - >-
7 | npm run format && git diff --exit-code || (echo -e '\n\033[31mERROR:\033[0m
8 | Project is not formatted. Please run "npm run format".' && false)
9 | env:
10 | global:
11 | - secure: >-
12 | LvRH7RiBsVoWm4dBcxnWOuJ1gcDG5iLB9WBOwmcq65KNlADFMqK72PibpaslTtESFjK6luQnPH/9o7sWTCD3gsRdOOsUwRzlc+0wQu/dmtg7X/TWGORlWLTa6Fgso7Zz0i74unZfNi5ipowjTB+VomXf4/fyPM9kUSxdLWtNxGY=
13 | - secure: >-
14 | DN5ZVv5gFl+HY6qWquZrN3Yc4pGnPWPGTK+DPvY0YBI9DsSNx0jZcoHxILWw6sJjaEhwfAl+IiW87Icfj7qMTNHAZlfx+uXkBJ39BxQezXXO8IPo7MiDektZCOZX7rENtzdQFbm9qptn7PC24i28KVkgrbLlzjDGN+QB5pVR6tg=
15 | node_js: node
16 | addons:
17 | firefox: latest
18 | chrome: stable
19 | script:
20 | - xvfb-run polymer test --module-resolution=node --npm
21 | - >-
22 | if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then polymer test
23 | --module-resolution=node --npm -s 'default'; fi
24 | dist: trusty
25 | cache:
26 | directories:
27 | - node_modules
28 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 |
13 |
14 | # Polymer Elements
15 | ## Guide for Contributors
16 |
17 | Polymer Elements are built in the open, and the Polymer authors eagerly encourage any and all forms of community contribution. When contributing, please follow these guidelines:
18 |
19 | ### Filing Issues
20 |
21 | **If you are filing an issue to request a feature**, please provide a clear description of the feature. It can be helpful to describe answers to the following questions:
22 |
23 | 1. **Who will use the feature?** _“As someone filling out a form…”_
24 | 2. **When will they use the feature?** _“When I enter an invalid value…”_
25 | 3. **What is the user’s goal?** _“I want to be visually notified that the value needs to be corrected…”_
26 |
27 | **If you are filing an issue to report a bug**, please provide:
28 |
29 | 1. **A clear description of the bug and related expectations.** Consider using the following example template for reporting a bug:
30 |
31 | ```markdown
32 | The `paper-foo` element causes the page to turn pink when clicked.
33 |
34 | ## Expected outcome
35 |
36 | The page stays the same color.
37 |
38 | ## Actual outcome
39 |
40 | The page turns pink.
41 |
42 | ## Steps to reproduce
43 |
44 | 1. Put a `paper-foo` element in the page.
45 | 2. Open the page in a web browser.
46 | 3. Click the `paper-foo` element.
47 | ```
48 |
49 | 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [https://jsbin.com/cagaye/edit?html,output](https://jsbin.com/cagaye/edit?html,output).
50 |
51 | 3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers.
52 |
53 | ### Submitting Pull Requests
54 |
55 | **Before creating a pull request**, please ensure that an issue exists for the corresponding change in the pull request that you intend to make. **If an issue does not exist, please create one per the guidelines above**. The goal is to discuss the design and necessity of the proposed change with Polymer authors and community before diving into a pull request.
56 |
57 | When submitting pull requests, please provide:
58 |
59 | 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues in the pull request description using the following syntax:
60 |
61 | ```markdown
62 | (For a single issue)
63 | Fixes #20
64 |
65 | (For multiple issues)
66 | Fixes #32, fixes #40
67 | ```
68 |
69 | 2. **A succinct description of the design** used to fix any related issues. For example:
70 |
71 | ```markdown
72 | This fixes #20 by removing styles that leaked which would cause the page to turn pink whenever `paper-foo` is clicked.
73 | ```
74 |
75 | 3. **At least one test for each bug fixed or feature added** as part of the pull request. Pull requests that fix bugs or add features without accompanying tests will not be considered.
76 |
77 | If a proposed change contains multiple commits, please [squash commits](https://www.google.com/url?q=http://blog.steveklabnik.com/posts/2012-11-08-how-to-squash-commits-in-a-github-pull-request) to as few as is necessary to succinctly express the change. A Polymer author can help you squash commits, so don’t be afraid to ask us if you need help with that!
78 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://www.npmjs.com/package/@polymer/iron-menu-behavior)
2 | [](https://travis-ci.org/PolymerElements/iron-menu-behavior)
3 | [](https://webcomponents.org/element/@polymer/iron-menu-behavior)
4 |
5 | ## `IronMenuBehavior`, `IronMenubarBehavior`
6 |
7 | `IronMenuBehavior` and `IronMenubarBehavior` implement accessible menu and
8 | menubar behaviors.
9 |
10 | See: [Documentation](https://www.webcomponents.org/element/@polymer/iron-menu-behavior),
11 | [Demo](https://www.webcomponents.org/element/@polymer/iron-menu-behavior/demo/demo/index.html).
12 |
13 | ## Usage
14 |
15 | ### Installation
16 |
17 | ```
18 | npm install --save @polymer/iron-menu-behavior
19 | ```
20 |
21 | ### In a Polymer 3 element
22 |
23 | ```js
24 | import {PolymerElement} from '@polymer/polymer/polymer-element.js';
25 | import {mixinBehaviors} from '@polymer/polymer/lib/legacy/class.js';
26 | import {html} from '@polymer/polymer/lib/utils/html-tag.js';
27 |
28 | import {IronMenuBehavior} from '@polymer/iron-menu-behavior/iron-menu-behavior.js';
29 |
30 | class SimpleMenu extends mixinBehaviors(IronMenuBehavior, PolymerElement) {
31 | static get template() {
32 | return html`
33 |
43 |
44 |
45 | `;
46 | }
47 | }
48 |
49 | customElements.define('simple-menu', SimpleMenu);
50 | ```
51 |
52 | Then, in your HTML:
53 |
54 | ```html
55 |
56 |
57 |
63 |
64 |
65 | Item 0
66 | Item 1
67 | Item 2 (disabled)
68 |
69 | ```
70 |
71 | ## Contributing
72 |
73 | If you want to send a PR to this element, here are the instructions for running
74 | the tests and demo locally:
75 |
76 | ### Installation
77 |
78 | ```sh
79 | git clone https://github.com/PolymerElements/iron-menu-behavior
80 | cd iron-menu-behavior
81 | npm install
82 | npm install -g polymer-cli
83 | ```
84 |
85 | ### Running the demo locally
86 |
87 | ```sh
88 | polymer serve --npm
89 | open http://127.0.0.1:/demo/
90 | ```
91 |
92 | ### Running the tests
93 |
94 | ```sh
95 | polymer test --npm
96 | ```
97 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "iron-menu-behavior",
3 | "license": "http://polymer.github.io/LICENSE.txt"
4 | }
5 |
--------------------------------------------------------------------------------
/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | iron-menu-behavior demo
19 |
20 |
21 |
28 |
29 |
30 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
Simple menu
77 |
87 |
88 |
89 |
90 |
Multi-select menu
91 |
101 |
102 |
103 |
104 |
105 |
Simple menubar
106 |
114 |
115 |
116 |
Multi-select menubar
117 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/demo/simple-menu.js:
--------------------------------------------------------------------------------
1 | /**
2 | @license
3 | Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 | This code may only be used under the BSD style license found at
5 | http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
6 | http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
7 | found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
8 | part of the polymer project is also subject to an additional IP rights grant
9 | found at http://polymer.github.io/PATENTS.txt
10 | */
11 | import '@polymer/polymer/polymer-legacy.js';
12 | import '@polymer/paper-styles/color.js';
13 |
14 | import {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';
15 | import {html} from '@polymer/polymer/lib/utils/html-tag.js';
16 |
17 | import {IronMenuBehavior} from '../iron-menu-behavior.js';
18 |
19 | Polymer({
20 | _template: html`
21 |
31 |
32 |
33 | `,
34 |
35 | is: 'simple-menu',
36 | behaviors: [IronMenuBehavior]
37 | });
38 |
--------------------------------------------------------------------------------
/demo/simple-menubar.js:
--------------------------------------------------------------------------------
1 | /**
2 | @license
3 | Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 | This code may only be used under the BSD style license found at
5 | http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
6 | http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
7 | found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
8 | part of the polymer project is also subject to an additional IP rights grant
9 | found at http://polymer.github.io/PATENTS.txt
10 | */
11 | import '@polymer/polymer/polymer-legacy.js';
12 | import '@polymer/paper-styles/color.js';
13 |
14 | import {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';
15 | import {html} from '@polymer/polymer/lib/utils/html-tag.js';
16 |
17 | import {IronMenubarBehavior} from '../iron-menubar-behavior.js';
18 |
19 | Polymer({
20 | _template: html`
21 |
31 |
32 |
33 | `,
34 |
35 | is: 'simple-menubar',
36 | behaviors: [IronMenubarBehavior]
37 | });
38 |
--------------------------------------------------------------------------------
/formatconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "style": {
3 | "ReflowComments": false
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/iron-menu-behavior.js:
--------------------------------------------------------------------------------
1 | /**
2 | @license
3 | Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 | This code may only be used under the BSD style license found at
5 | http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
6 | http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
7 | found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
8 | part of the polymer project is also subject to an additional IP rights grant
9 | found at http://polymer.github.io/PATENTS.txt
10 | */
11 | import '@polymer/polymer/polymer-legacy.js';
12 |
13 | import {IronA11yKeysBehavior} from '@polymer/iron-a11y-keys-behavior/iron-a11y-keys-behavior.js';
14 | import {IronMultiSelectableBehavior, IronMultiSelectableBehaviorImpl} from '@polymer/iron-selector/iron-multi-selectable.js';
15 | import {IronSelectableBehavior} from '@polymer/iron-selector/iron-selectable.js';
16 | import {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';
17 |
18 | /**
19 | * `IronMenuBehavior` implements accessible menu behavior.
20 | *
21 | * @demo demo/index.html
22 | * @polymerBehavior IronMenuBehavior
23 | */
24 | export const IronMenuBehaviorImpl = {
25 |
26 | properties: {
27 |
28 | /**
29 | * Returns the currently focused item.
30 | * @type {?Object}
31 | */
32 | focusedItem:
33 | {observer: '_focusedItemChanged', readOnly: true, type: Object},
34 |
35 | /**
36 | * The attribute to use on menu items to look up the item title. Typing the
37 | * first letter of an item when the menu is open focuses that item. If
38 | * unset, `textContent` will be used.
39 | */
40 | attrForItemTitle: {type: String},
41 |
42 | /**
43 | * @type {boolean}
44 | */
45 | disabled: {
46 | type: Boolean,
47 | value: false,
48 | observer: '_disabledChanged',
49 | },
50 | },
51 |
52 | /**
53 | * The list of keys has been taken from
54 | * https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState
55 | * @private
56 | */
57 | _MODIFIER_KEYS: [
58 | 'Alt',
59 | 'AltGraph',
60 | 'CapsLock',
61 | 'Control',
62 | 'Fn',
63 | 'FnLock',
64 | 'Hyper',
65 | 'Meta',
66 | 'NumLock',
67 | 'OS',
68 | 'ScrollLock',
69 | 'Shift',
70 | 'Super',
71 | 'Symbol',
72 | 'SymbolLock'
73 | ],
74 |
75 | /** @private */
76 | _SEARCH_RESET_TIMEOUT_MS: 1000,
77 |
78 | /** @private */
79 | _previousTabIndex: 0,
80 |
81 | hostAttributes: {
82 | 'role': 'menu',
83 | },
84 |
85 | observers: ['_updateMultiselectable(multi)'],
86 |
87 | listeners: {
88 | 'focus': '_onFocus',
89 | 'keydown': '_onKeydown',
90 | 'iron-items-changed': '_onIronItemsChanged'
91 | },
92 |
93 | /**
94 | * @type {!Object}
95 | */
96 | keyBindings: {
97 | 'up': '_onUpKey',
98 | 'down': '_onDownKey',
99 | 'esc': '_onEscKey',
100 | 'shift+tab:keydown': '_onShiftTabDown'
101 | },
102 |
103 | /** @override */
104 | attached: function() {
105 | this._resetTabindices();
106 | },
107 |
108 | /**
109 | * Selects the given value. If the `multi` property is true, then the selected
110 | * state of the `value` will be toggled; otherwise the `value` will be
111 | * selected.
112 | *
113 | * @param {string|number} value the value to select.
114 | */
115 | select: function(value) {
116 | // Cancel automatically focusing a default item if the menu received focus
117 | // through a user action selecting a particular item.
118 | if (this._defaultFocusAsync) {
119 | this.cancelAsync(this._defaultFocusAsync);
120 | this._defaultFocusAsync = null;
121 | }
122 | var item = this._valueToItem(value);
123 | if (item && item.hasAttribute('disabled'))
124 | return;
125 | this._setFocusedItem(item);
126 | IronMultiSelectableBehaviorImpl.select.apply(this, arguments);
127 | },
128 |
129 | /**
130 | * Resets all tabindex attributes to the appropriate value based on the
131 | * current selection state. The appropriate value is `0` (focusable) for
132 | * the default selected item, and `-1` (not keyboard focusable) for all
133 | * other items. Also sets the correct initial values for aria-selected
134 | * attribute, true for default selected item and false for others.
135 | */
136 | _resetTabindices: function() {
137 | var firstSelectedItem = this.multi ?
138 | (this.selectedItems && this.selectedItems[0]) :
139 | this.selectedItem;
140 |
141 | this.items.forEach(function(item) {
142 | item.setAttribute('tabindex', item === firstSelectedItem ? '0' : '-1');
143 | item.setAttribute('aria-selected', this._selection.isSelected(item));
144 | }, this);
145 | },
146 |
147 | /**
148 | * Sets appropriate ARIA based on whether or not the menu is meant to be
149 | * multi-selectable.
150 | *
151 | * @param {boolean} multi True if the menu should be multi-selectable.
152 | */
153 | _updateMultiselectable: function(multi) {
154 | if (multi) {
155 | this.setAttribute('aria-multiselectable', 'true');
156 | } else {
157 | this.removeAttribute('aria-multiselectable');
158 | }
159 | },
160 |
161 | /**
162 | * Given a KeyboardEvent, this method will focus the appropriate item in the
163 | * menu (if there is a relevant item, and it is possible to focus it).
164 | *
165 | * @param {KeyboardEvent} event A KeyboardEvent.
166 | */
167 | _focusWithKeyboardEvent: function(event) {
168 | // Make sure that the key pressed is not a modifier key.
169 | // getModifierState is not being used, as it is not available in Safari
170 | // earlier than 10.0.2 (https://trac.webkit.org/changeset/206725/webkit)
171 | if (this._MODIFIER_KEYS.indexOf(event.key) !== -1)
172 | return;
173 |
174 | this.cancelDebouncer('_clearSearchText');
175 |
176 | var searchText = this._searchText || '';
177 | var key = event.key && event.key.length == 1 ?
178 | event.key :
179 | String.fromCharCode(event.keyCode);
180 | searchText += key.toLocaleLowerCase();
181 |
182 | var searchLength = searchText.length;
183 |
184 | for (var i = 0, item; item = this.items[i]; i++) {
185 | if (item.hasAttribute('disabled')) {
186 | continue;
187 | }
188 |
189 | var attr = this.attrForItemTitle || 'textContent';
190 | var title = (item[attr] || item.getAttribute(attr) || '').trim();
191 |
192 | if (title.length < searchLength) {
193 | continue;
194 | }
195 |
196 | if (title.slice(0, searchLength).toLocaleLowerCase() == searchText) {
197 | this._setFocusedItem(item);
198 | break;
199 | }
200 | }
201 |
202 | this._searchText = searchText;
203 | this.debounce(
204 | '_clearSearchText',
205 | this._clearSearchText,
206 | this._SEARCH_RESET_TIMEOUT_MS);
207 | },
208 |
209 | _clearSearchText: function() {
210 | this._searchText = '';
211 | },
212 |
213 | /**
214 | * Focuses the previous item (relative to the currently focused item) in the
215 | * menu, disabled items will be skipped.
216 | * Loop until length + 1 to handle case of single item in menu.
217 | */
218 | _focusPrevious: function() {
219 | var length = this.items.length;
220 | var curFocusIndex = Number(this.indexOf(this.focusedItem));
221 |
222 | for (var i = 1; i < length + 1; i++) {
223 | var item = this.items[(curFocusIndex - i + length) % length];
224 | if (!item.hasAttribute('disabled')) {
225 | var owner = dom(item).getOwnerRoot() || document;
226 | this._setFocusedItem(item);
227 |
228 | // Focus might not have worked, if the element was hidden or not
229 | // focusable. In that case, try again.
230 | if (dom(owner).activeElement == item) {
231 | return;
232 | }
233 | }
234 | }
235 | },
236 |
237 | /**
238 | * Focuses the next item (relative to the currently focused item) in the
239 | * menu, disabled items will be skipped.
240 | * Loop until length + 1 to handle case of single item in menu.
241 | */
242 | _focusNext: function() {
243 | var length = this.items.length;
244 | var curFocusIndex = Number(this.indexOf(this.focusedItem));
245 |
246 | for (var i = 1; i < length + 1; i++) {
247 | var item = this.items[(curFocusIndex + i) % length];
248 | if (!item.hasAttribute('disabled')) {
249 | var owner = dom(item).getOwnerRoot() || document;
250 | this._setFocusedItem(item);
251 |
252 | // Focus might not have worked, if the element was hidden or not
253 | // focusable. In that case, try again.
254 | if (dom(owner).activeElement == item) {
255 | return;
256 | }
257 | }
258 | }
259 | },
260 |
261 | /**
262 | * Mutates items in the menu based on provided selection details, so that
263 | * all items correctly reflect selection state.
264 | *
265 | * @param {Element} item An item in the menu.
266 | * @param {boolean} isSelected True if the item should be shown in a
267 | * selected state, otherwise false.
268 | */
269 | _applySelection: function(item, isSelected) {
270 | if (isSelected) {
271 | item.setAttribute('aria-selected', 'true');
272 | } else {
273 | item.setAttribute('aria-selected', 'false');
274 | }
275 | IronSelectableBehavior._applySelection.apply(this, arguments);
276 | },
277 |
278 | /**
279 | * Discretely updates tabindex values among menu items as the focused item
280 | * changes.
281 | *
282 | * @param {Element} focusedItem The element that is currently focused.
283 | * @param {?Element} old The last element that was considered focused, if
284 | * applicable.
285 | */
286 | _focusedItemChanged: function(focusedItem, old) {
287 | old && old.setAttribute('tabindex', '-1');
288 | if (focusedItem && !focusedItem.hasAttribute('disabled') &&
289 | !this.disabled) {
290 | focusedItem.setAttribute('tabindex', '0');
291 | focusedItem.focus();
292 | }
293 | },
294 |
295 | /**
296 | * A handler that responds to mutation changes related to the list of items
297 | * in the menu.
298 | *
299 | * @param {CustomEvent} event An event containing mutation records as its
300 | * detail.
301 | */
302 | _onIronItemsChanged: function(event) {
303 | if (event.detail.addedNodes.length) {
304 | this._resetTabindices();
305 | }
306 | },
307 |
308 | /**
309 | * Handler that is called when a shift+tab keypress is detected by the menu.
310 | *
311 | * @param {CustomEvent} event A key combination event.
312 | */
313 | _onShiftTabDown: function(event) {
314 | var oldTabIndex = this.getAttribute('tabindex');
315 |
316 | IronMenuBehaviorImpl._shiftTabPressed = true;
317 |
318 | this._setFocusedItem(null);
319 |
320 | this.setAttribute('tabindex', '-1');
321 |
322 | this.async(function() {
323 | this.setAttribute('tabindex', oldTabIndex);
324 | IronMenuBehaviorImpl._shiftTabPressed = false;
325 | // NOTE(cdata): polymer/polymer#1305
326 | }, 1);
327 | },
328 |
329 | /**
330 | * Handler that is called when the menu receives focus.
331 | *
332 | * @param {FocusEvent} event A focus event.
333 | */
334 | _onFocus: function(event) {
335 | if (IronMenuBehaviorImpl._shiftTabPressed) {
336 | // do not focus the menu itself
337 | return;
338 | }
339 |
340 | // Do not focus the selected tab if the deepest target is part of the
341 | // menu element's local DOM and is focusable.
342 | var rootTarget =
343 | /** @type {?HTMLElement} */ (dom(event).rootTarget);
344 | if (rootTarget !== this && typeof rootTarget.tabIndex !== 'undefined' &&
345 | !this.isLightDescendant(rootTarget)) {
346 | return;
347 | }
348 |
349 | // clear the cached focus item
350 | this._defaultFocusAsync = this.async(function() {
351 | // focus the selected item when the menu receives focus, or the first item
352 | // if no item is selected
353 | var firstSelectedItem = this.multi ?
354 | (this.selectedItems && this.selectedItems[0]) :
355 | this.selectedItem;
356 |
357 | this._setFocusedItem(null);
358 |
359 | if (firstSelectedItem) {
360 | this._setFocusedItem(firstSelectedItem);
361 | } else if (this.items[0]) {
362 | // We find the first none-disabled item (if one exists)
363 | this._focusNext();
364 | }
365 | });
366 | },
367 |
368 | /**
369 | * Handler that is called when the up key is pressed.
370 | *
371 | * @param {CustomEvent} event A key combination event.
372 | */
373 | _onUpKey: function(event) {
374 | // up and down arrows moves the focus
375 | this._focusPrevious();
376 | event.detail.keyboardEvent.preventDefault();
377 | },
378 |
379 | /**
380 | * Handler that is called when the down key is pressed.
381 | *
382 | * @param {CustomEvent} event A key combination event.
383 | */
384 | _onDownKey: function(event) {
385 | this._focusNext();
386 | event.detail.keyboardEvent.preventDefault();
387 | },
388 |
389 | /**
390 | * Handler that is called when the esc key is pressed.
391 | *
392 | * @param {CustomEvent} event A key combination event.
393 | */
394 | _onEscKey: function(event) {
395 | var focusedItem = this.focusedItem;
396 | if (focusedItem) {
397 | focusedItem.blur();
398 | }
399 | },
400 |
401 | /**
402 | * Handler that is called when a keydown event is detected.
403 | *
404 | * @param {KeyboardEvent} event A keyboard event.
405 | */
406 | _onKeydown: function(event) {
407 | if (!this.keyboardEventMatchesKeys(event, 'up down esc')) {
408 | // all other keys focus the menu item starting with that character
409 | this._focusWithKeyboardEvent(event);
410 | }
411 | event.stopPropagation();
412 | },
413 |
414 | // override _activateHandler
415 | _activateHandler: function(event) {
416 | IronSelectableBehavior._activateHandler.call(this, event);
417 | event.stopPropagation();
418 | },
419 |
420 | /**
421 | * Updates this element's tab index when it's enabled/disabled.
422 | * @param {boolean} disabled
423 | */
424 | _disabledChanged: function(disabled) {
425 | if (disabled) {
426 | this._previousTabIndex =
427 | this.hasAttribute('tabindex') ? this.tabIndex : 0;
428 | this.removeAttribute(
429 | 'tabindex'); // No tabindex means not tab-able or select-able.
430 | } else if (!this.hasAttribute('tabindex')) {
431 | this.setAttribute('tabindex', this._previousTabIndex);
432 | }
433 | }
434 | };
435 |
436 | IronMenuBehaviorImpl._shiftTabPressed = false;
437 |
438 | /** @polymerBehavior */
439 | export const IronMenuBehavior =
440 | [IronMultiSelectableBehavior, IronA11yKeysBehavior, IronMenuBehaviorImpl];
441 |
--------------------------------------------------------------------------------
/iron-menubar-behavior.js:
--------------------------------------------------------------------------------
1 | /**
2 | @license
3 | Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 | This code may only be used under the BSD style license found at
5 | http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
6 | http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
7 | found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
8 | part of the polymer project is also subject to an additional IP rights grant
9 | found at http://polymer.github.io/PATENTS.txt
10 | */
11 | import '@polymer/polymer/polymer-legacy.js';
12 |
13 | import {IronMenuBehavior} from './iron-menu-behavior.js';
14 |
15 | /**
16 | * `IronMenubarBehavior` implements accessible menubar behavior.
17 | *
18 | * @polymerBehavior IronMenubarBehavior
19 | */
20 | export const IronMenubarBehaviorImpl = {
21 |
22 | hostAttributes: {'role': 'menubar'},
23 |
24 | /**
25 | * @type {!Object}
26 | */
27 | keyBindings: {'left': '_onLeftKey', 'right': '_onRightKey'},
28 |
29 | _onUpKey: function(event) {
30 | this.focusedItem.click();
31 | event.detail.keyboardEvent.preventDefault();
32 | },
33 |
34 | _onDownKey: function(event) {
35 | this.focusedItem.click();
36 | event.detail.keyboardEvent.preventDefault();
37 | },
38 |
39 | get _isRTL() {
40 | return window.getComputedStyle(this)['direction'] === 'rtl';
41 | },
42 |
43 | _onLeftKey: function(event) {
44 | if (this._isRTL) {
45 | this._focusNext();
46 | } else {
47 | this._focusPrevious();
48 | }
49 | event.detail.keyboardEvent.preventDefault();
50 | },
51 |
52 | _onRightKey: function(event) {
53 | if (this._isRTL) {
54 | this._focusPrevious();
55 | } else {
56 | this._focusNext();
57 | }
58 | event.detail.keyboardEvent.preventDefault();
59 | },
60 |
61 | _onKeydown: function(event) {
62 | if (this.keyboardEventMatchesKeys(event, 'up down left right esc')) {
63 | return;
64 | }
65 |
66 | // all other keys focus the menu item starting with that character
67 | this._focusWithKeyboardEvent(event);
68 | }
69 |
70 | };
71 |
72 | /** @polymerBehavior */
73 | export const IronMenubarBehavior = [IronMenuBehavior, IronMenubarBehaviorImpl];
74 |
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": {
3 | "iron-menubar-behavior.html": {
4 | "convertedUrl": "iron-menubar-behavior.js",
5 | "exports": {
6 | "Polymer.IronMenubarBehaviorImpl": "IronMenubarBehaviorImpl",
7 | "Polymer.IronMenubarBehavior": "IronMenubarBehavior"
8 | }
9 | },
10 | "iron-menu-behavior.html": {
11 | "convertedUrl": "iron-menu-behavior.js",
12 | "exports": {
13 | "Polymer.IronMenuBehaviorImpl": "IronMenuBehaviorImpl",
14 | "Polymer.IronMenuBehavior": "IronMenuBehavior"
15 | }
16 | },
17 | "index.html": {
18 | "convertedUrl": "index.html",
19 | "exports": {}
20 | },
21 | "demo/index.html": {
22 | "convertedUrl": "demo/index.html",
23 | "exports": {}
24 | },
25 | "demo/simple-menu.html": {
26 | "convertedUrl": "demo/simple-menu.js",
27 | "exports": {}
28 | },
29 | "demo/simple-menubar.html": {
30 | "convertedUrl": "demo/simple-menubar.js",
31 | "exports": {}
32 | },
33 | "test/index.html": {
34 | "convertedUrl": "test/index.html",
35 | "exports": {}
36 | },
37 | "test/iron-menu-behavior.html": {
38 | "convertedUrl": "test/iron-menu-behavior.html",
39 | "exports": {}
40 | },
41 | "test/test-menu.html": {
42 | "convertedUrl": "test/test-menu.js",
43 | "exports": {}
44 | },
45 | "test/test-nested-menu.html": {
46 | "convertedUrl": "test/test-nested-menu.js",
47 | "exports": {}
48 | },
49 | "test/iron-menubar-behavior.html": {
50 | "convertedUrl": "test/iron-menubar-behavior.html",
51 | "exports": {}
52 | },
53 | "test/test-menubar.html": {
54 | "convertedUrl": "test/test-menubar.js",
55 | "exports": {}
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@polymer/iron-menu-behavior",
3 | "version": "3.0.2",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/code-frame": {
8 | "version": "7.0.0",
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
10 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
11 | "dev": true,
12 | "requires": {
13 | "@babel/highlight": "^7.0.0"
14 | }
15 | },
16 | "@babel/generator": {
17 | "version": "7.0.0",
18 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz",
19 | "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==",
20 | "dev": true,
21 | "requires": {
22 | "@babel/types": "^7.0.0",
23 | "jsesc": "^2.5.1",
24 | "lodash": "^4.17.10",
25 | "source-map": "^0.5.0",
26 | "trim-right": "^1.0.1"
27 | },
28 | "dependencies": {
29 | "source-map": {
30 | "version": "0.5.7",
31 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
32 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
33 | "dev": true
34 | }
35 | }
36 | },
37 | "@babel/helper-function-name": {
38 | "version": "7.0.0",
39 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz",
40 | "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==",
41 | "dev": true,
42 | "requires": {
43 | "@babel/helper-get-function-arity": "^7.0.0",
44 | "@babel/template": "^7.0.0",
45 | "@babel/types": "^7.0.0"
46 | }
47 | },
48 | "@babel/helper-get-function-arity": {
49 | "version": "7.0.0",
50 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
51 | "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
52 | "dev": true,
53 | "requires": {
54 | "@babel/types": "^7.0.0"
55 | }
56 | },
57 | "@babel/helper-split-export-declaration": {
58 | "version": "7.0.0",
59 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz",
60 | "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
61 | "dev": true,
62 | "requires": {
63 | "@babel/types": "^7.0.0"
64 | }
65 | },
66 | "@babel/highlight": {
67 | "version": "7.0.0",
68 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
69 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
70 | "dev": true,
71 | "requires": {
72 | "chalk": "^2.0.0",
73 | "esutils": "^2.0.2",
74 | "js-tokens": "^4.0.0"
75 | }
76 | },
77 | "@babel/parser": {
78 | "version": "7.0.0",
79 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0.tgz",
80 | "integrity": "sha512-RgJhNdRinpO8zibnoHbzTTexNs4c8ROkXFBanNDZTLHjwbdLk8J5cJSKulx/bycWTLYmKVNCkxRtVCoJnqPk+g==",
81 | "dev": true
82 | },
83 | "@babel/template": {
84 | "version": "7.0.0",
85 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz",
86 | "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==",
87 | "dev": true,
88 | "requires": {
89 | "@babel/code-frame": "^7.0.0",
90 | "@babel/parser": "^7.0.0",
91 | "@babel/types": "^7.0.0"
92 | }
93 | },
94 | "@babel/traverse": {
95 | "version": "7.0.0",
96 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz",
97 | "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==",
98 | "dev": true,
99 | "requires": {
100 | "@babel/code-frame": "^7.0.0",
101 | "@babel/generator": "^7.0.0",
102 | "@babel/helper-function-name": "^7.0.0",
103 | "@babel/helper-split-export-declaration": "^7.0.0",
104 | "@babel/parser": "^7.0.0",
105 | "@babel/types": "^7.0.0",
106 | "debug": "^3.1.0",
107 | "globals": "^11.1.0",
108 | "lodash": "^4.17.10"
109 | }
110 | },
111 | "@babel/types": {
112 | "version": "7.0.0",
113 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz",
114 | "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==",
115 | "dev": true,
116 | "requires": {
117 | "esutils": "^2.0.2",
118 | "lodash": "^4.17.10",
119 | "to-fast-properties": "^2.0.0"
120 | }
121 | },
122 | "@mrmlnc/readdir-enhanced": {
123 | "version": "2.2.1",
124 | "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
125 | "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
126 | "dev": true,
127 | "requires": {
128 | "call-me-maybe": "^1.0.1",
129 | "glob-to-regexp": "^0.3.0"
130 | }
131 | },
132 | "@nodelib/fs.stat": {
133 | "version": "1.1.2",
134 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz",
135 | "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==",
136 | "dev": true
137 | },
138 | "@polymer/font-roboto": {
139 | "version": "3.0.1",
140 | "resolved": "https://registry.npmjs.org/@polymer/font-roboto/-/font-roboto-3.0.1.tgz",
141 | "integrity": "sha512-vNVKKaDBggg1lqJh3q8Yiylxe2UkQnxWd97/HpcalNyKdMtmqwINWd0FLggdlBVlPceZJc2egzdkmn5blvp89w==",
142 | "dev": true
143 | },
144 | "@polymer/gen-typescript-declarations": {
145 | "version": "1.5.1",
146 | "resolved": "https://registry.npmjs.org/@polymer/gen-typescript-declarations/-/gen-typescript-declarations-1.5.1.tgz",
147 | "integrity": "sha512-9MPXvkP543SsVb3TwcxAHrFyvjQEbJbUokGrUMs0RGhGqXwSeQRa390AazNHJePOypze1R0VQ9I0WfkP6JlrBg==",
148 | "dev": true,
149 | "requires": {
150 | "@babel/types": "^7.0.0-beta.42",
151 | "@types/command-line-args": "^5.0.0",
152 | "@types/command-line-usage": "^5.0.1",
153 | "@types/doctrine": "0.0.3",
154 | "@types/fs-extra": "^5.0.0",
155 | "@types/glob": "^5.0.35",
156 | "@types/parse5": "^2.2.34",
157 | "babylon": "^7.0.0-beta.42",
158 | "command-line-args": "^5.0.1",
159 | "command-line-usage": "^5.0.2",
160 | "doctrine": "^2.0.0",
161 | "escodegen": "^1.9.0",
162 | "fs-extra": "^6.0.1",
163 | "glob": "^7.1.2",
164 | "minimatch": "^3.0.4",
165 | "polymer-analyzer": "^3.0.2",
166 | "typescript": "^3.0.1",
167 | "vscode-uri": "^1.0.3"
168 | }
169 | },
170 | "@polymer/iron-a11y-keys-behavior": {
171 | "version": "3.0.0-pre.26",
172 | "resolved": "https://registry.npmjs.org/@polymer/iron-a11y-keys-behavior/-/iron-a11y-keys-behavior-3.0.0-pre.26.tgz",
173 | "integrity": "sha512-mQoqG3ypK8VEhuydOtguAUiDs3oDiV4GwAuR9IoayCfX0ZcQqd7KS3iXcV/d4++Z6PmXq8l2jHjAzqlUQM01bA==",
174 | "requires": {
175 | "@polymer/polymer": "^3.0.0"
176 | }
177 | },
178 | "@polymer/iron-flex-layout": {
179 | "version": "3.0.0-pre.26",
180 | "resolved": "https://registry.npmjs.org/@polymer/iron-flex-layout/-/iron-flex-layout-3.0.0-pre.26.tgz",
181 | "integrity": "sha512-UaINS81IL0S+uqCmYrU3kRLIMAcDyiHYE2z7chjCk5qcY2obpV4VQFQibbtzMlsIDWV29zHGsnwBpEl7VJ9BaQ==",
182 | "requires": {
183 | "@polymer/polymer": "^3.0.0"
184 | }
185 | },
186 | "@polymer/iron-selector": {
187 | "version": "3.0.0-pre.26",
188 | "resolved": "https://registry.npmjs.org/@polymer/iron-selector/-/iron-selector-3.0.0-pre.26.tgz",
189 | "integrity": "sha512-bGXQTDjFm91AEjJptosgggb8+nBNxe+W3LGIUThHVkBtyi/gYvYkE8fvJrQWwzJs4COFUwEOSWbVxF+NXwsF+w==",
190 | "requires": {
191 | "@polymer/polymer": "^3.0.0"
192 | }
193 | },
194 | "@polymer/iron-test-helpers": {
195 | "version": "3.0.0-pre.26",
196 | "resolved": "https://registry.npmjs.org/@polymer/iron-test-helpers/-/iron-test-helpers-3.0.0-pre.26.tgz",
197 | "integrity": "sha512-+v8uoqyKGm6K/hVK81FWdVX6HcsmS/0tb8T6I5LgADHGFI65eYENSh6uRqV0d+ZUNyUFCKJDNW9Zqwh7JZJAZw==",
198 | "dev": true,
199 | "requires": {
200 | "@polymer/polymer": "^3.0.0"
201 | }
202 | },
203 | "@polymer/paper-styles": {
204 | "version": "3.0.0-pre.26",
205 | "resolved": "https://registry.npmjs.org/@polymer/paper-styles/-/paper-styles-3.0.0-pre.26.tgz",
206 | "integrity": "sha512-qUFOWA7dEO6Yk6d0PjMcDOjBnZo2iLoX7ScK1PLZsEkOO5Aj8oQhBLlvLN9qEzL8dibcV8PTg/JX2UCavFpg3A==",
207 | "dev": true,
208 | "requires": {
209 | "@polymer/font-roboto": "^3.0.1",
210 | "@polymer/iron-flex-layout": "^3.0.0-pre.25",
211 | "@polymer/polymer": "^3.0.0"
212 | }
213 | },
214 | "@polymer/polymer": {
215 | "version": "3.0.5",
216 | "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.5.tgz",
217 | "integrity": "sha512-Zbmhtr5vZ3NoHWwFYLKI4ff7yfE6DZopI8vaS7HvmUIuNqsv/EpEDXfNEYjqePQmkMX5LU9OIKV1eX/+9aveow==",
218 | "requires": {
219 | "@webcomponents/shadycss": "^1.2.0"
220 | }
221 | },
222 | "@polymer/sinonjs": {
223 | "version": "1.17.1",
224 | "resolved": "https://registry.npmjs.org/@polymer/sinonjs/-/sinonjs-1.17.1.tgz",
225 | "integrity": "sha512-/U8F/cOTrbF2iVVYgINYmvKbtbexs+89Q3v8AaHADRYabTg7aOZGOb0RyWpOI+sUJt04kj63U4FwMhzW5r4wZA==",
226 | "dev": true
227 | },
228 | "@polymer/test-fixture": {
229 | "version": "3.0.0-pre.21",
230 | "resolved": "https://registry.npmjs.org/@polymer/test-fixture/-/test-fixture-3.0.0-pre.21.tgz",
231 | "integrity": "sha512-IxzUe6YzaORzUksafHAXHprV29YncOJgr0+1zNAifl0/f+cb5iAd4IWUrnsnVFHG5UGTLjvis5RgV6vvIZPDrA==",
232 | "dev": true
233 | },
234 | "@types/babel-generator": {
235 | "version": "6.25.2",
236 | "resolved": "https://registry.npmjs.org/@types/babel-generator/-/babel-generator-6.25.2.tgz",
237 | "integrity": "sha512-W7PQkeDlYOqJblfNeqZARwj4W8nO+ZhQQZksU8+wbaKuHeUdIVUAdREO/Qb0FfNr3CY5Sq1gNtqsyFeZfS3iSw==",
238 | "dev": true,
239 | "requires": {
240 | "@types/babel-types": "*"
241 | }
242 | },
243 | "@types/babel-traverse": {
244 | "version": "6.25.4",
245 | "resolved": "https://registry.npmjs.org/@types/babel-traverse/-/babel-traverse-6.25.4.tgz",
246 | "integrity": "sha512-+/670NaZE7qPvdh8EtGds32/2uHFKE5JeS+7ePH6nGwF8Wj8r671/RkTiJQP2k22nFntWEb9xQ11MFj7xEqI0g==",
247 | "dev": true,
248 | "requires": {
249 | "@types/babel-types": "*"
250 | }
251 | },
252 | "@types/babel-types": {
253 | "version": "6.25.2",
254 | "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-6.25.2.tgz",
255 | "integrity": "sha512-+3bMuktcY4a70a0KZc8aPJlEOArPuAKQYHU5ErjkOqGJdx8xuEEVK6nWogqigBOJ8nKPxRpyCUDTCPmZ3bUxGA==",
256 | "dev": true
257 | },
258 | "@types/babylon": {
259 | "version": "6.16.3",
260 | "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.3.tgz",
261 | "integrity": "sha512-lyJ8sW1PbY3uwuvpOBZ9zMYKshMnQpXmeDHh8dj9j2nJm/xrW0FgB5gLSYOArj5X0IfaXnmhFoJnhS4KbqIMug==",
262 | "dev": true,
263 | "requires": {
264 | "@types/babel-types": "*"
265 | }
266 | },
267 | "@types/chai": {
268 | "version": "4.1.4",
269 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.4.tgz",
270 | "integrity": "sha512-h6+VEw2Vr3ORiFCyyJmcho2zALnUq9cvdB/IO8Xs9itrJVCenC7o26A6+m7D0ihTTr65eS259H5/Ghl/VjYs6g==",
271 | "dev": true
272 | },
273 | "@types/chai-subset": {
274 | "version": "1.3.1",
275 | "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.1.tgz",
276 | "integrity": "sha512-Aof+FLfWzBPzDgJ2uuBuPNOBHVx9Siyw4vmOcsMgsuxX1nfUWSlzpq4pdvQiaBgGjGS7vP/Oft5dpJbX4krT1A==",
277 | "dev": true,
278 | "requires": {
279 | "@types/chai": "*"
280 | }
281 | },
282 | "@types/chalk": {
283 | "version": "0.4.31",
284 | "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-0.4.31.tgz",
285 | "integrity": "sha1-ox10JBprHtu5c8822XooloNKUfk=",
286 | "dev": true
287 | },
288 | "@types/clone": {
289 | "version": "0.1.30",
290 | "resolved": "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz",
291 | "integrity": "sha1-5zZWSMG0ITalnH1QQGN7O1yDthQ=",
292 | "dev": true
293 | },
294 | "@types/command-line-args": {
295 | "version": "5.0.0",
296 | "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.0.0.tgz",
297 | "integrity": "sha512-4eOPXyn5DmP64MCMF8ePDvdlvlzt2a+F8ZaVjqmh2yFCpGjc1kI3kGnCFYX9SCsGTjQcWIyVZ86IHCEyjy/MNg==",
298 | "dev": true
299 | },
300 | "@types/command-line-usage": {
301 | "version": "5.0.1",
302 | "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.1.tgz",
303 | "integrity": "sha512-/xUgezxxYePeXhg5S04hUjxG9JZi+rJTs1+4NwpYPfSaS7BeDa6tVJkH6lN9Cb6rl8d24Fi2uX0s0Ngg2JT6gg==",
304 | "dev": true
305 | },
306 | "@types/cssbeautify": {
307 | "version": "0.3.1",
308 | "resolved": "https://registry.npmjs.org/@types/cssbeautify/-/cssbeautify-0.3.1.tgz",
309 | "integrity": "sha1-jgvuj33suVIlDaDK6+BeMFkcF+8=",
310 | "dev": true
311 | },
312 | "@types/doctrine": {
313 | "version": "0.0.3",
314 | "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz",
315 | "integrity": "sha1-6JLSk8ksnB0/mvcsFaVU+8fgiVo=",
316 | "dev": true
317 | },
318 | "@types/events": {
319 | "version": "1.2.0",
320 | "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
321 | "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==",
322 | "dev": true
323 | },
324 | "@types/fs-extra": {
325 | "version": "5.0.4",
326 | "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.4.tgz",
327 | "integrity": "sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g==",
328 | "dev": true,
329 | "requires": {
330 | "@types/node": "*"
331 | }
332 | },
333 | "@types/glob": {
334 | "version": "5.0.35",
335 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.35.tgz",
336 | "integrity": "sha512-wc+VveszMLyMWFvXLkloixT4n0harUIVZjnpzztaZ0nKLuul7Z32iMt2fUFGAaZ4y1XWjFRMtCI5ewvyh4aIeg==",
337 | "dev": true,
338 | "requires": {
339 | "@types/events": "*",
340 | "@types/minimatch": "*",
341 | "@types/node": "*"
342 | }
343 | },
344 | "@types/is-windows": {
345 | "version": "0.2.0",
346 | "resolved": "https://registry.npmjs.org/@types/is-windows/-/is-windows-0.2.0.tgz",
347 | "integrity": "sha1-byTuSHMdMRaOpRBhDW3RXl/Jxv8=",
348 | "dev": true
349 | },
350 | "@types/minimatch": {
351 | "version": "3.0.3",
352 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
353 | "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
354 | "dev": true
355 | },
356 | "@types/node": {
357 | "version": "10.9.4",
358 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.4.tgz",
359 | "integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw==",
360 | "dev": true
361 | },
362 | "@types/parse5": {
363 | "version": "2.2.34",
364 | "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-2.2.34.tgz",
365 | "integrity": "sha1-44cKEOgnNacg9i1x3NGDunjvOp0=",
366 | "dev": true,
367 | "requires": {
368 | "@types/node": "*"
369 | }
370 | },
371 | "@types/path-is-inside": {
372 | "version": "1.0.0",
373 | "resolved": "https://registry.npmjs.org/@types/path-is-inside/-/path-is-inside-1.0.0.tgz",
374 | "integrity": "sha512-hfnXRGugz+McgX2jxyy5qz9sB21LRzlGn24zlwN2KEgoPtEvjzNRrLtUkOOebPDPZl3Rq7ywKxYvylVcEZDnEw==",
375 | "dev": true
376 | },
377 | "@types/resolve": {
378 | "version": "0.0.6",
379 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.6.tgz",
380 | "integrity": "sha512-g+Rg8uMWY76oYTyaL+m7ZcblqF/oj7pE6uEUyACluJx4zcop1Lk14qQiocdEkEVMDFm6DmKpxJhsER+ZuTwG3g==",
381 | "dev": true,
382 | "requires": {
383 | "@types/node": "*"
384 | }
385 | },
386 | "@types/whatwg-url": {
387 | "version": "6.4.0",
388 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-6.4.0.tgz",
389 | "integrity": "sha512-tonhlcbQ2eho09am6RHnHOgvtDfDYINd5rgxD+2YSkKENooVCFsWizJz139MQW/PV8FfClyKrNe9ZbdHrSCxGg==",
390 | "dev": true,
391 | "requires": {
392 | "@types/node": "*"
393 | }
394 | },
395 | "@webcomponents/shadycss": {
396 | "version": "1.5.0",
397 | "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.5.0.tgz",
398 | "integrity": "sha512-jNuC7alo3EfiqZPosCruJuMAaUI9qgiuGxFcFyPWjOpo4BP+vgC7hxpTzQYxbIWUgrqkn9lnfPup2hE9c/h/PQ=="
399 | },
400 | "@webcomponents/webcomponentsjs": {
401 | "version": "2.1.1",
402 | "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.1.1.tgz",
403 | "integrity": "sha512-CgXV1O94jruR0YVijA55bP4SQBRvRKDmByWce47vCZIJ3HPHOph0VtjpO5vYEUyZzfadqfjICBMkZOagTT9XQw==",
404 | "dev": true
405 | },
406 | "accessibility-developer-tools": {
407 | "version": "2.12.0",
408 | "resolved": "https://registry.npmjs.org/accessibility-developer-tools/-/accessibility-developer-tools-2.12.0.tgz",
409 | "integrity": "sha1-PaDM6dbsY3OWS4TzXbfPw996tRQ=",
410 | "dev": true
411 | },
412 | "ansi-regex": {
413 | "version": "2.1.1",
414 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
415 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
416 | "dev": true
417 | },
418 | "ansi-styles": {
419 | "version": "3.2.1",
420 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
421 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
422 | "dev": true,
423 | "requires": {
424 | "color-convert": "^1.9.0"
425 | }
426 | },
427 | "argv-tools": {
428 | "version": "0.1.1",
429 | "resolved": "https://registry.npmjs.org/argv-tools/-/argv-tools-0.1.1.tgz",
430 | "integrity": "sha512-Cc0dBvx4dvrjjKpyDA6w8RlNAw8Su30NvZbWl/Tv9ZALEVlLVkWQiHMi84Q0xNfpVuSaiQbYkdmWK8g1PLGhKw==",
431 | "dev": true,
432 | "requires": {
433 | "array-back": "^2.0.0",
434 | "find-replace": "^2.0.1"
435 | }
436 | },
437 | "arr-diff": {
438 | "version": "4.0.0",
439 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
440 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
441 | "dev": true
442 | },
443 | "arr-flatten": {
444 | "version": "1.1.0",
445 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
446 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
447 | "dev": true
448 | },
449 | "arr-union": {
450 | "version": "3.1.0",
451 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
452 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
453 | "dev": true
454 | },
455 | "array-back": {
456 | "version": "2.0.0",
457 | "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
458 | "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
459 | "dev": true,
460 | "requires": {
461 | "typical": "^2.6.1"
462 | }
463 | },
464 | "array-unique": {
465 | "version": "0.3.2",
466 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
467 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
468 | "dev": true
469 | },
470 | "assertion-error": {
471 | "version": "1.1.0",
472 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
473 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
474 | "dev": true
475 | },
476 | "assign-symbols": {
477 | "version": "1.0.0",
478 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
479 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
480 | "dev": true
481 | },
482 | "async": {
483 | "version": "1.5.2",
484 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
485 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
486 | "dev": true
487 | },
488 | "atob": {
489 | "version": "2.1.2",
490 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
491 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
492 | "dev": true
493 | },
494 | "babylon": {
495 | "version": "7.0.0-beta.47",
496 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz",
497 | "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==",
498 | "dev": true
499 | },
500 | "balanced-match": {
501 | "version": "1.0.0",
502 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
503 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
504 | "dev": true
505 | },
506 | "base": {
507 | "version": "0.11.2",
508 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
509 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
510 | "dev": true,
511 | "requires": {
512 | "cache-base": "^1.0.1",
513 | "class-utils": "^0.3.5",
514 | "component-emitter": "^1.2.1",
515 | "define-property": "^1.0.0",
516 | "isobject": "^3.0.1",
517 | "mixin-deep": "^1.2.0",
518 | "pascalcase": "^0.1.1"
519 | },
520 | "dependencies": {
521 | "define-property": {
522 | "version": "1.0.0",
523 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
524 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
525 | "dev": true,
526 | "requires": {
527 | "is-descriptor": "^1.0.0"
528 | }
529 | },
530 | "is-accessor-descriptor": {
531 | "version": "1.0.0",
532 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
533 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
534 | "dev": true,
535 | "requires": {
536 | "kind-of": "^6.0.0"
537 | }
538 | },
539 | "is-data-descriptor": {
540 | "version": "1.0.0",
541 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
542 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
543 | "dev": true,
544 | "requires": {
545 | "kind-of": "^6.0.0"
546 | }
547 | },
548 | "is-descriptor": {
549 | "version": "1.0.2",
550 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
551 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
552 | "dev": true,
553 | "requires": {
554 | "is-accessor-descriptor": "^1.0.0",
555 | "is-data-descriptor": "^1.0.0",
556 | "kind-of": "^6.0.2"
557 | }
558 | }
559 | }
560 | },
561 | "brace-expansion": {
562 | "version": "1.1.11",
563 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
564 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
565 | "dev": true,
566 | "requires": {
567 | "balanced-match": "^1.0.0",
568 | "concat-map": "0.0.1"
569 | }
570 | },
571 | "braces": {
572 | "version": "2.3.2",
573 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
574 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
575 | "dev": true,
576 | "requires": {
577 | "arr-flatten": "^1.1.0",
578 | "array-unique": "^0.3.2",
579 | "extend-shallow": "^2.0.1",
580 | "fill-range": "^4.0.0",
581 | "isobject": "^3.0.1",
582 | "repeat-element": "^1.1.2",
583 | "snapdragon": "^0.8.1",
584 | "snapdragon-node": "^2.0.1",
585 | "split-string": "^3.0.2",
586 | "to-regex": "^3.0.1"
587 | },
588 | "dependencies": {
589 | "extend-shallow": {
590 | "version": "2.0.1",
591 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
592 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
593 | "dev": true,
594 | "requires": {
595 | "is-extendable": "^0.1.0"
596 | }
597 | }
598 | }
599 | },
600 | "browser-stdout": {
601 | "version": "1.3.0",
602 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
603 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
604 | "dev": true
605 | },
606 | "cache-base": {
607 | "version": "1.0.1",
608 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
609 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
610 | "dev": true,
611 | "requires": {
612 | "collection-visit": "^1.0.0",
613 | "component-emitter": "^1.2.1",
614 | "get-value": "^2.0.6",
615 | "has-value": "^1.0.0",
616 | "isobject": "^3.0.1",
617 | "set-value": "^2.0.0",
618 | "to-object-path": "^0.3.0",
619 | "union-value": "^1.0.0",
620 | "unset-value": "^1.0.0"
621 | }
622 | },
623 | "call-me-maybe": {
624 | "version": "1.0.1",
625 | "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
626 | "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
627 | "dev": true
628 | },
629 | "cancel-token": {
630 | "version": "0.1.1",
631 | "resolved": "http://registry.npmjs.org/cancel-token/-/cancel-token-0.1.1.tgz",
632 | "integrity": "sha1-wYGXZ0uxyEwdaTPr8V2NWlznm08=",
633 | "dev": true,
634 | "requires": {
635 | "@types/node": "^4.0.30"
636 | },
637 | "dependencies": {
638 | "@types/node": {
639 | "version": "4.2.23",
640 | "resolved": "https://registry.npmjs.org/@types/node/-/node-4.2.23.tgz",
641 | "integrity": "sha512-U6IchCNLRyswc9p6G6lxWlbE+KwAhZp6mGo6MD2yWpmFomhYmetK+c98OpKyvphNn04CU3aXeJrXdOqbXVTS/w==",
642 | "dev": true
643 | }
644 | }
645 | },
646 | "chai": {
647 | "version": "3.5.0",
648 | "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz",
649 | "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=",
650 | "dev": true,
651 | "requires": {
652 | "assertion-error": "^1.0.1",
653 | "deep-eql": "^0.1.3",
654 | "type-detect": "^1.0.0"
655 | }
656 | },
657 | "chalk": {
658 | "version": "2.4.1",
659 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
660 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
661 | "dev": true,
662 | "requires": {
663 | "ansi-styles": "^3.2.1",
664 | "escape-string-regexp": "^1.0.5",
665 | "supports-color": "^5.3.0"
666 | }
667 | },
668 | "clang-format": {
669 | "version": "1.2.4",
670 | "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.2.4.tgz",
671 | "integrity": "sha512-sw+nrGUp3hvmANd1qF8vZPuezSYQAiXgGBiEtkXTtJnnu6b00fCqkkDIsnRKrNgg4nv6NYZE92ejvOMIXZoejw==",
672 | "dev": true,
673 | "requires": {
674 | "async": "^1.5.2",
675 | "glob": "^7.0.0",
676 | "resolve": "^1.1.6"
677 | }
678 | },
679 | "class-utils": {
680 | "version": "0.3.6",
681 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
682 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
683 | "dev": true,
684 | "requires": {
685 | "arr-union": "^3.1.0",
686 | "define-property": "^0.2.5",
687 | "isobject": "^3.0.0",
688 | "static-extend": "^0.1.1"
689 | },
690 | "dependencies": {
691 | "define-property": {
692 | "version": "0.2.5",
693 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
694 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
695 | "dev": true,
696 | "requires": {
697 | "is-descriptor": "^0.1.0"
698 | }
699 | }
700 | }
701 | },
702 | "clone": {
703 | "version": "2.1.2",
704 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
705 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
706 | "dev": true
707 | },
708 | "collection-visit": {
709 | "version": "1.0.0",
710 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
711 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
712 | "dev": true,
713 | "requires": {
714 | "map-visit": "^1.0.0",
715 | "object-visit": "^1.0.0"
716 | }
717 | },
718 | "color-convert": {
719 | "version": "1.9.3",
720 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
721 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
722 | "dev": true,
723 | "requires": {
724 | "color-name": "1.1.3"
725 | }
726 | },
727 | "color-name": {
728 | "version": "1.1.3",
729 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
730 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
731 | "dev": true
732 | },
733 | "command-line-args": {
734 | "version": "5.0.2",
735 | "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.0.2.tgz",
736 | "integrity": "sha512-/qPcbL8zpqg53x4rAaqMFlRV4opN3pbla7I7k9x8kyOBMQoGT6WltjN6sXZuxOXw6DgdK7Ad+ijYS5gjcr7vlA==",
737 | "dev": true,
738 | "requires": {
739 | "argv-tools": "^0.1.1",
740 | "array-back": "^2.0.0",
741 | "find-replace": "^2.0.1",
742 | "lodash.camelcase": "^4.3.0",
743 | "typical": "^2.6.1"
744 | }
745 | },
746 | "command-line-usage": {
747 | "version": "5.0.5",
748 | "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-5.0.5.tgz",
749 | "integrity": "sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA==",
750 | "dev": true,
751 | "requires": {
752 | "array-back": "^2.0.0",
753 | "chalk": "^2.4.1",
754 | "table-layout": "^0.4.3",
755 | "typical": "^2.6.1"
756 | }
757 | },
758 | "commander": {
759 | "version": "2.9.0",
760 | "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
761 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
762 | "dev": true,
763 | "requires": {
764 | "graceful-readlink": ">= 1.0.0"
765 | }
766 | },
767 | "component-emitter": {
768 | "version": "1.2.1",
769 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
770 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
771 | "dev": true
772 | },
773 | "concat-map": {
774 | "version": "0.0.1",
775 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
776 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
777 | "dev": true
778 | },
779 | "copy-descriptor": {
780 | "version": "0.1.1",
781 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
782 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
783 | "dev": true
784 | },
785 | "cssbeautify": {
786 | "version": "0.3.1",
787 | "resolved": "https://registry.npmjs.org/cssbeautify/-/cssbeautify-0.3.1.tgz",
788 | "integrity": "sha1-Et0fc0A1wub6ymfcvc73TkKBE5c=",
789 | "dev": true
790 | },
791 | "debug": {
792 | "version": "3.2.5",
793 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
794 | "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
795 | "dev": true,
796 | "requires": {
797 | "ms": "^2.1.1"
798 | }
799 | },
800 | "decode-uri-component": {
801 | "version": "0.2.0",
802 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
803 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
804 | "dev": true
805 | },
806 | "deep-eql": {
807 | "version": "0.1.3",
808 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz",
809 | "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=",
810 | "dev": true,
811 | "requires": {
812 | "type-detect": "0.1.1"
813 | },
814 | "dependencies": {
815 | "type-detect": {
816 | "version": "0.1.1",
817 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz",
818 | "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=",
819 | "dev": true
820 | }
821 | }
822 | },
823 | "deep-extend": {
824 | "version": "0.6.0",
825 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
826 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
827 | "dev": true
828 | },
829 | "deep-is": {
830 | "version": "0.1.3",
831 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
832 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
833 | "dev": true
834 | },
835 | "define-property": {
836 | "version": "2.0.2",
837 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
838 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
839 | "dev": true,
840 | "requires": {
841 | "is-descriptor": "^1.0.2",
842 | "isobject": "^3.0.1"
843 | },
844 | "dependencies": {
845 | "is-accessor-descriptor": {
846 | "version": "1.0.0",
847 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
848 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
849 | "dev": true,
850 | "requires": {
851 | "kind-of": "^6.0.0"
852 | }
853 | },
854 | "is-data-descriptor": {
855 | "version": "1.0.0",
856 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
857 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
858 | "dev": true,
859 | "requires": {
860 | "kind-of": "^6.0.0"
861 | }
862 | },
863 | "is-descriptor": {
864 | "version": "1.0.2",
865 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
866 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
867 | "dev": true,
868 | "requires": {
869 | "is-accessor-descriptor": "^1.0.0",
870 | "is-data-descriptor": "^1.0.0",
871 | "kind-of": "^6.0.2"
872 | }
873 | }
874 | }
875 | },
876 | "diff": {
877 | "version": "3.2.0",
878 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz",
879 | "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=",
880 | "dev": true
881 | },
882 | "doctrine": {
883 | "version": "2.1.0",
884 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
885 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
886 | "dev": true,
887 | "requires": {
888 | "esutils": "^2.0.2"
889 | }
890 | },
891 | "dom5": {
892 | "version": "3.0.1",
893 | "resolved": "https://registry.npmjs.org/dom5/-/dom5-3.0.1.tgz",
894 | "integrity": "sha512-JPFiouQIr16VQ4dX6i0+Hpbg3H2bMKPmZ+WZgBOSSvOPx9QHwwY8sPzeM2baUtViESYto6wC2nuZOMC/6gulcA==",
895 | "dev": true,
896 | "requires": {
897 | "@types/parse5": "^2.2.34",
898 | "clone": "^2.1.0",
899 | "parse5": "^4.0.0"
900 | }
901 | },
902 | "escape-string-regexp": {
903 | "version": "1.0.5",
904 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
905 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
906 | "dev": true
907 | },
908 | "escodegen": {
909 | "version": "1.11.0",
910 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
911 | "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
912 | "dev": true,
913 | "requires": {
914 | "esprima": "^3.1.3",
915 | "estraverse": "^4.2.0",
916 | "esutils": "^2.0.2",
917 | "optionator": "^0.8.1",
918 | "source-map": "~0.6.1"
919 | }
920 | },
921 | "esprima": {
922 | "version": "3.1.3",
923 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
924 | "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
925 | "dev": true
926 | },
927 | "estraverse": {
928 | "version": "4.2.0",
929 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
930 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
931 | "dev": true
932 | },
933 | "esutils": {
934 | "version": "2.0.2",
935 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
936 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
937 | "dev": true
938 | },
939 | "expand-brackets": {
940 | "version": "2.1.4",
941 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
942 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
943 | "dev": true,
944 | "requires": {
945 | "debug": "^2.3.3",
946 | "define-property": "^0.2.5",
947 | "extend-shallow": "^2.0.1",
948 | "posix-character-classes": "^0.1.0",
949 | "regex-not": "^1.0.0",
950 | "snapdragon": "^0.8.1",
951 | "to-regex": "^3.0.1"
952 | },
953 | "dependencies": {
954 | "debug": {
955 | "version": "2.6.9",
956 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
957 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
958 | "dev": true,
959 | "requires": {
960 | "ms": "2.0.0"
961 | }
962 | },
963 | "define-property": {
964 | "version": "0.2.5",
965 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
966 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
967 | "dev": true,
968 | "requires": {
969 | "is-descriptor": "^0.1.0"
970 | }
971 | },
972 | "extend-shallow": {
973 | "version": "2.0.1",
974 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
975 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
976 | "dev": true,
977 | "requires": {
978 | "is-extendable": "^0.1.0"
979 | }
980 | },
981 | "ms": {
982 | "version": "2.0.0",
983 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
984 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
985 | "dev": true
986 | }
987 | }
988 | },
989 | "extend-shallow": {
990 | "version": "3.0.2",
991 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
992 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
993 | "dev": true,
994 | "requires": {
995 | "assign-symbols": "^1.0.0",
996 | "is-extendable": "^1.0.1"
997 | },
998 | "dependencies": {
999 | "is-extendable": {
1000 | "version": "1.0.1",
1001 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1002 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1003 | "dev": true,
1004 | "requires": {
1005 | "is-plain-object": "^2.0.4"
1006 | }
1007 | }
1008 | }
1009 | },
1010 | "extglob": {
1011 | "version": "2.0.4",
1012 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
1013 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
1014 | "dev": true,
1015 | "requires": {
1016 | "array-unique": "^0.3.2",
1017 | "define-property": "^1.0.0",
1018 | "expand-brackets": "^2.1.4",
1019 | "extend-shallow": "^2.0.1",
1020 | "fragment-cache": "^0.2.1",
1021 | "regex-not": "^1.0.0",
1022 | "snapdragon": "^0.8.1",
1023 | "to-regex": "^3.0.1"
1024 | },
1025 | "dependencies": {
1026 | "define-property": {
1027 | "version": "1.0.0",
1028 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
1029 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
1030 | "dev": true,
1031 | "requires": {
1032 | "is-descriptor": "^1.0.0"
1033 | }
1034 | },
1035 | "extend-shallow": {
1036 | "version": "2.0.1",
1037 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1038 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1039 | "dev": true,
1040 | "requires": {
1041 | "is-extendable": "^0.1.0"
1042 | }
1043 | },
1044 | "is-accessor-descriptor": {
1045 | "version": "1.0.0",
1046 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1047 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1048 | "dev": true,
1049 | "requires": {
1050 | "kind-of": "^6.0.0"
1051 | }
1052 | },
1053 | "is-data-descriptor": {
1054 | "version": "1.0.0",
1055 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1056 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1057 | "dev": true,
1058 | "requires": {
1059 | "kind-of": "^6.0.0"
1060 | }
1061 | },
1062 | "is-descriptor": {
1063 | "version": "1.0.2",
1064 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1065 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1066 | "dev": true,
1067 | "requires": {
1068 | "is-accessor-descriptor": "^1.0.0",
1069 | "is-data-descriptor": "^1.0.0",
1070 | "kind-of": "^6.0.2"
1071 | }
1072 | }
1073 | }
1074 | },
1075 | "fast-glob": {
1076 | "version": "2.2.2",
1077 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz",
1078 | "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==",
1079 | "dev": true,
1080 | "requires": {
1081 | "@mrmlnc/readdir-enhanced": "^2.2.1",
1082 | "@nodelib/fs.stat": "^1.0.1",
1083 | "glob-parent": "^3.1.0",
1084 | "is-glob": "^4.0.0",
1085 | "merge2": "^1.2.1",
1086 | "micromatch": "^3.1.10"
1087 | }
1088 | },
1089 | "fast-levenshtein": {
1090 | "version": "2.0.6",
1091 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1092 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1093 | "dev": true
1094 | },
1095 | "fill-range": {
1096 | "version": "4.0.0",
1097 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
1098 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
1099 | "dev": true,
1100 | "requires": {
1101 | "extend-shallow": "^2.0.1",
1102 | "is-number": "^3.0.0",
1103 | "repeat-string": "^1.6.1",
1104 | "to-regex-range": "^2.1.0"
1105 | },
1106 | "dependencies": {
1107 | "extend-shallow": {
1108 | "version": "2.0.1",
1109 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1110 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1111 | "dev": true,
1112 | "requires": {
1113 | "is-extendable": "^0.1.0"
1114 | }
1115 | }
1116 | }
1117 | },
1118 | "find-replace": {
1119 | "version": "2.0.1",
1120 | "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-2.0.1.tgz",
1121 | "integrity": "sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ==",
1122 | "dev": true,
1123 | "requires": {
1124 | "array-back": "^2.0.0",
1125 | "test-value": "^3.0.0"
1126 | }
1127 | },
1128 | "for-in": {
1129 | "version": "1.0.2",
1130 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1131 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1132 | "dev": true
1133 | },
1134 | "formatio": {
1135 | "version": "1.1.1",
1136 | "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz",
1137 | "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=",
1138 | "dev": true,
1139 | "requires": {
1140 | "samsam": "~1.1"
1141 | }
1142 | },
1143 | "fragment-cache": {
1144 | "version": "0.2.1",
1145 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
1146 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
1147 | "dev": true,
1148 | "requires": {
1149 | "map-cache": "^0.2.2"
1150 | }
1151 | },
1152 | "fs-extra": {
1153 | "version": "6.0.1",
1154 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
1155 | "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
1156 | "dev": true,
1157 | "requires": {
1158 | "graceful-fs": "^4.1.2",
1159 | "jsonfile": "^4.0.0",
1160 | "universalify": "^0.1.0"
1161 | }
1162 | },
1163 | "fs.realpath": {
1164 | "version": "1.0.0",
1165 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1166 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1167 | "dev": true
1168 | },
1169 | "get-value": {
1170 | "version": "2.0.6",
1171 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
1172 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
1173 | "dev": true
1174 | },
1175 | "glob": {
1176 | "version": "7.1.3",
1177 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
1178 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
1179 | "dev": true,
1180 | "requires": {
1181 | "fs.realpath": "^1.0.0",
1182 | "inflight": "^1.0.4",
1183 | "inherits": "2",
1184 | "minimatch": "^3.0.4",
1185 | "once": "^1.3.0",
1186 | "path-is-absolute": "^1.0.0"
1187 | }
1188 | },
1189 | "glob-parent": {
1190 | "version": "3.1.0",
1191 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
1192 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
1193 | "dev": true,
1194 | "requires": {
1195 | "is-glob": "^3.1.0",
1196 | "path-dirname": "^1.0.0"
1197 | },
1198 | "dependencies": {
1199 | "is-glob": {
1200 | "version": "3.1.0",
1201 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
1202 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
1203 | "dev": true,
1204 | "requires": {
1205 | "is-extglob": "^2.1.0"
1206 | }
1207 | }
1208 | }
1209 | },
1210 | "glob-to-regexp": {
1211 | "version": "0.3.0",
1212 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
1213 | "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
1214 | "dev": true
1215 | },
1216 | "globals": {
1217 | "version": "11.7.0",
1218 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz",
1219 | "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==",
1220 | "dev": true
1221 | },
1222 | "graceful-fs": {
1223 | "version": "4.1.11",
1224 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
1225 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
1226 | "dev": true
1227 | },
1228 | "graceful-readlink": {
1229 | "version": "1.0.1",
1230 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
1231 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
1232 | "dev": true
1233 | },
1234 | "growl": {
1235 | "version": "1.9.2",
1236 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
1237 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
1238 | "dev": true
1239 | },
1240 | "has-ansi": {
1241 | "version": "2.0.0",
1242 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
1243 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
1244 | "dev": true,
1245 | "requires": {
1246 | "ansi-regex": "^2.0.0"
1247 | }
1248 | },
1249 | "has-flag": {
1250 | "version": "3.0.0",
1251 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1252 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1253 | "dev": true
1254 | },
1255 | "has-value": {
1256 | "version": "1.0.0",
1257 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
1258 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
1259 | "dev": true,
1260 | "requires": {
1261 | "get-value": "^2.0.6",
1262 | "has-values": "^1.0.0",
1263 | "isobject": "^3.0.0"
1264 | }
1265 | },
1266 | "has-values": {
1267 | "version": "1.0.0",
1268 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
1269 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
1270 | "dev": true,
1271 | "requires": {
1272 | "is-number": "^3.0.0",
1273 | "kind-of": "^4.0.0"
1274 | },
1275 | "dependencies": {
1276 | "kind-of": {
1277 | "version": "4.0.0",
1278 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
1279 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
1280 | "dev": true,
1281 | "requires": {
1282 | "is-buffer": "^1.1.5"
1283 | }
1284 | }
1285 | }
1286 | },
1287 | "he": {
1288 | "version": "1.1.1",
1289 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
1290 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
1291 | "dev": true
1292 | },
1293 | "indent": {
1294 | "version": "0.0.2",
1295 | "resolved": "https://registry.npmjs.org/indent/-/indent-0.0.2.tgz",
1296 | "integrity": "sha1-jHnwgBkFWbaHA0uEx676l9WpEdk=",
1297 | "dev": true
1298 | },
1299 | "inflight": {
1300 | "version": "1.0.6",
1301 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1302 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1303 | "dev": true,
1304 | "requires": {
1305 | "once": "^1.3.0",
1306 | "wrappy": "1"
1307 | }
1308 | },
1309 | "inherits": {
1310 | "version": "2.0.3",
1311 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1312 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1313 | "dev": true
1314 | },
1315 | "is-accessor-descriptor": {
1316 | "version": "0.1.6",
1317 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
1318 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
1319 | "dev": true,
1320 | "requires": {
1321 | "kind-of": "^3.0.2"
1322 | },
1323 | "dependencies": {
1324 | "kind-of": {
1325 | "version": "3.2.2",
1326 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1327 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1328 | "dev": true,
1329 | "requires": {
1330 | "is-buffer": "^1.1.5"
1331 | }
1332 | }
1333 | }
1334 | },
1335 | "is-buffer": {
1336 | "version": "1.1.6",
1337 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
1338 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
1339 | "dev": true
1340 | },
1341 | "is-data-descriptor": {
1342 | "version": "0.1.4",
1343 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
1344 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
1345 | "dev": true,
1346 | "requires": {
1347 | "kind-of": "^3.0.2"
1348 | },
1349 | "dependencies": {
1350 | "kind-of": {
1351 | "version": "3.2.2",
1352 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1353 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1354 | "dev": true,
1355 | "requires": {
1356 | "is-buffer": "^1.1.5"
1357 | }
1358 | }
1359 | }
1360 | },
1361 | "is-descriptor": {
1362 | "version": "0.1.6",
1363 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
1364 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
1365 | "dev": true,
1366 | "requires": {
1367 | "is-accessor-descriptor": "^0.1.6",
1368 | "is-data-descriptor": "^0.1.4",
1369 | "kind-of": "^5.0.0"
1370 | },
1371 | "dependencies": {
1372 | "kind-of": {
1373 | "version": "5.1.0",
1374 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
1375 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
1376 | "dev": true
1377 | }
1378 | }
1379 | },
1380 | "is-extendable": {
1381 | "version": "0.1.1",
1382 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
1383 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
1384 | "dev": true
1385 | },
1386 | "is-extglob": {
1387 | "version": "2.1.1",
1388 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1389 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1390 | "dev": true
1391 | },
1392 | "is-glob": {
1393 | "version": "4.0.0",
1394 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
1395 | "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
1396 | "dev": true,
1397 | "requires": {
1398 | "is-extglob": "^2.1.1"
1399 | }
1400 | },
1401 | "is-number": {
1402 | "version": "3.0.0",
1403 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
1404 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
1405 | "dev": true,
1406 | "requires": {
1407 | "kind-of": "^3.0.2"
1408 | },
1409 | "dependencies": {
1410 | "kind-of": {
1411 | "version": "3.2.2",
1412 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1413 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1414 | "dev": true,
1415 | "requires": {
1416 | "is-buffer": "^1.1.5"
1417 | }
1418 | }
1419 | }
1420 | },
1421 | "is-plain-object": {
1422 | "version": "2.0.4",
1423 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
1424 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
1425 | "dev": true,
1426 | "requires": {
1427 | "isobject": "^3.0.1"
1428 | }
1429 | },
1430 | "is-windows": {
1431 | "version": "1.0.2",
1432 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
1433 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
1434 | "dev": true
1435 | },
1436 | "isarray": {
1437 | "version": "1.0.0",
1438 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1439 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1440 | "dev": true
1441 | },
1442 | "isobject": {
1443 | "version": "3.0.1",
1444 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
1445 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
1446 | "dev": true
1447 | },
1448 | "js-tokens": {
1449 | "version": "4.0.0",
1450 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1451 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1452 | "dev": true
1453 | },
1454 | "jsesc": {
1455 | "version": "2.5.1",
1456 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz",
1457 | "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=",
1458 | "dev": true
1459 | },
1460 | "json3": {
1461 | "version": "3.3.2",
1462 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
1463 | "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
1464 | "dev": true
1465 | },
1466 | "jsonfile": {
1467 | "version": "4.0.0",
1468 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
1469 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
1470 | "dev": true,
1471 | "requires": {
1472 | "graceful-fs": "^4.1.6"
1473 | }
1474 | },
1475 | "jsonschema": {
1476 | "version": "1.2.4",
1477 | "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.4.tgz",
1478 | "integrity": "sha512-lz1nOH69GbsVHeVgEdvyavc/33oymY1AZwtePMiMj4HZPMbP5OIKK3zT9INMWjwua/V4Z4yq7wSlBbSG+g4AEw==",
1479 | "dev": true
1480 | },
1481 | "kind-of": {
1482 | "version": "6.0.2",
1483 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
1484 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
1485 | "dev": true
1486 | },
1487 | "levn": {
1488 | "version": "0.3.0",
1489 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1490 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1491 | "dev": true,
1492 | "requires": {
1493 | "prelude-ls": "~1.1.2",
1494 | "type-check": "~0.3.2"
1495 | }
1496 | },
1497 | "lodash": {
1498 | "version": "4.17.11",
1499 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
1500 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
1501 | "dev": true
1502 | },
1503 | "lodash._baseassign": {
1504 | "version": "3.2.0",
1505 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
1506 | "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
1507 | "dev": true,
1508 | "requires": {
1509 | "lodash._basecopy": "^3.0.0",
1510 | "lodash.keys": "^3.0.0"
1511 | }
1512 | },
1513 | "lodash._basecopy": {
1514 | "version": "3.0.1",
1515 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
1516 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
1517 | "dev": true
1518 | },
1519 | "lodash._basecreate": {
1520 | "version": "3.0.3",
1521 | "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz",
1522 | "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=",
1523 | "dev": true
1524 | },
1525 | "lodash._getnative": {
1526 | "version": "3.9.1",
1527 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
1528 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
1529 | "dev": true
1530 | },
1531 | "lodash._isiterateecall": {
1532 | "version": "3.0.9",
1533 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
1534 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
1535 | "dev": true
1536 | },
1537 | "lodash.camelcase": {
1538 | "version": "4.3.0",
1539 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
1540 | "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
1541 | "dev": true
1542 | },
1543 | "lodash.create": {
1544 | "version": "3.1.1",
1545 | "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz",
1546 | "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=",
1547 | "dev": true,
1548 | "requires": {
1549 | "lodash._baseassign": "^3.0.0",
1550 | "lodash._basecreate": "^3.0.0",
1551 | "lodash._isiterateecall": "^3.0.0"
1552 | }
1553 | },
1554 | "lodash.isarguments": {
1555 | "version": "3.1.0",
1556 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
1557 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
1558 | "dev": true
1559 | },
1560 | "lodash.isarray": {
1561 | "version": "3.0.4",
1562 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
1563 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
1564 | "dev": true
1565 | },
1566 | "lodash.keys": {
1567 | "version": "3.1.2",
1568 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
1569 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
1570 | "dev": true,
1571 | "requires": {
1572 | "lodash._getnative": "^3.0.0",
1573 | "lodash.isarguments": "^3.0.0",
1574 | "lodash.isarray": "^3.0.0"
1575 | }
1576 | },
1577 | "lodash.padend": {
1578 | "version": "4.6.1",
1579 | "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
1580 | "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=",
1581 | "dev": true
1582 | },
1583 | "lodash.sortby": {
1584 | "version": "4.7.0",
1585 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
1586 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
1587 | "dev": true
1588 | },
1589 | "lolex": {
1590 | "version": "1.3.2",
1591 | "resolved": "http://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz",
1592 | "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=",
1593 | "dev": true
1594 | },
1595 | "map-cache": {
1596 | "version": "0.2.2",
1597 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
1598 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
1599 | "dev": true
1600 | },
1601 | "map-visit": {
1602 | "version": "1.0.0",
1603 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
1604 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
1605 | "dev": true,
1606 | "requires": {
1607 | "object-visit": "^1.0.0"
1608 | }
1609 | },
1610 | "merge2": {
1611 | "version": "1.2.2",
1612 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz",
1613 | "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==",
1614 | "dev": true
1615 | },
1616 | "micromatch": {
1617 | "version": "3.1.10",
1618 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
1619 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
1620 | "dev": true,
1621 | "requires": {
1622 | "arr-diff": "^4.0.0",
1623 | "array-unique": "^0.3.2",
1624 | "braces": "^2.3.1",
1625 | "define-property": "^2.0.2",
1626 | "extend-shallow": "^3.0.2",
1627 | "extglob": "^2.0.4",
1628 | "fragment-cache": "^0.2.1",
1629 | "kind-of": "^6.0.2",
1630 | "nanomatch": "^1.2.9",
1631 | "object.pick": "^1.3.0",
1632 | "regex-not": "^1.0.0",
1633 | "snapdragon": "^0.8.1",
1634 | "to-regex": "^3.0.2"
1635 | }
1636 | },
1637 | "minimatch": {
1638 | "version": "3.0.4",
1639 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1640 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1641 | "dev": true,
1642 | "requires": {
1643 | "brace-expansion": "^1.1.7"
1644 | }
1645 | },
1646 | "minimist": {
1647 | "version": "0.0.8",
1648 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1649 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1650 | "dev": true
1651 | },
1652 | "mixin-deep": {
1653 | "version": "1.3.2",
1654 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
1655 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
1656 | "dev": true,
1657 | "requires": {
1658 | "for-in": "^1.0.2",
1659 | "is-extendable": "^1.0.1"
1660 | },
1661 | "dependencies": {
1662 | "is-extendable": {
1663 | "version": "1.0.1",
1664 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1665 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1666 | "dev": true,
1667 | "requires": {
1668 | "is-plain-object": "^2.0.4"
1669 | }
1670 | }
1671 | }
1672 | },
1673 | "mkdirp": {
1674 | "version": "0.5.1",
1675 | "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1676 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1677 | "dev": true,
1678 | "requires": {
1679 | "minimist": "0.0.8"
1680 | }
1681 | },
1682 | "mocha": {
1683 | "version": "3.5.3",
1684 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz",
1685 | "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==",
1686 | "dev": true,
1687 | "requires": {
1688 | "browser-stdout": "1.3.0",
1689 | "commander": "2.9.0",
1690 | "debug": "2.6.8",
1691 | "diff": "3.2.0",
1692 | "escape-string-regexp": "1.0.5",
1693 | "glob": "7.1.1",
1694 | "growl": "1.9.2",
1695 | "he": "1.1.1",
1696 | "json3": "3.3.2",
1697 | "lodash.create": "3.1.1",
1698 | "mkdirp": "0.5.1",
1699 | "supports-color": "3.1.2"
1700 | },
1701 | "dependencies": {
1702 | "debug": {
1703 | "version": "2.6.8",
1704 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
1705 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
1706 | "dev": true,
1707 | "requires": {
1708 | "ms": "2.0.0"
1709 | }
1710 | },
1711 | "glob": {
1712 | "version": "7.1.1",
1713 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
1714 | "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
1715 | "dev": true,
1716 | "requires": {
1717 | "fs.realpath": "^1.0.0",
1718 | "inflight": "^1.0.4",
1719 | "inherits": "2",
1720 | "minimatch": "^3.0.2",
1721 | "once": "^1.3.0",
1722 | "path-is-absolute": "^1.0.0"
1723 | }
1724 | },
1725 | "has-flag": {
1726 | "version": "1.0.0",
1727 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
1728 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
1729 | "dev": true
1730 | },
1731 | "ms": {
1732 | "version": "2.0.0",
1733 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1734 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1735 | "dev": true
1736 | },
1737 | "supports-color": {
1738 | "version": "3.1.2",
1739 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz",
1740 | "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=",
1741 | "dev": true,
1742 | "requires": {
1743 | "has-flag": "^1.0.0"
1744 | }
1745 | }
1746 | }
1747 | },
1748 | "ms": {
1749 | "version": "2.1.1",
1750 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1751 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
1752 | "dev": true
1753 | },
1754 | "nanomatch": {
1755 | "version": "1.2.13",
1756 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
1757 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
1758 | "dev": true,
1759 | "requires": {
1760 | "arr-diff": "^4.0.0",
1761 | "array-unique": "^0.3.2",
1762 | "define-property": "^2.0.2",
1763 | "extend-shallow": "^3.0.2",
1764 | "fragment-cache": "^0.2.1",
1765 | "is-windows": "^1.0.2",
1766 | "kind-of": "^6.0.2",
1767 | "object.pick": "^1.3.0",
1768 | "regex-not": "^1.0.0",
1769 | "snapdragon": "^0.8.1",
1770 | "to-regex": "^3.0.1"
1771 | }
1772 | },
1773 | "object-copy": {
1774 | "version": "0.1.0",
1775 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
1776 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
1777 | "dev": true,
1778 | "requires": {
1779 | "copy-descriptor": "^0.1.0",
1780 | "define-property": "^0.2.5",
1781 | "kind-of": "^3.0.3"
1782 | },
1783 | "dependencies": {
1784 | "define-property": {
1785 | "version": "0.2.5",
1786 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1787 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1788 | "dev": true,
1789 | "requires": {
1790 | "is-descriptor": "^0.1.0"
1791 | }
1792 | },
1793 | "kind-of": {
1794 | "version": "3.2.2",
1795 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1796 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1797 | "dev": true,
1798 | "requires": {
1799 | "is-buffer": "^1.1.5"
1800 | }
1801 | }
1802 | }
1803 | },
1804 | "object-visit": {
1805 | "version": "1.0.1",
1806 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
1807 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
1808 | "dev": true,
1809 | "requires": {
1810 | "isobject": "^3.0.0"
1811 | }
1812 | },
1813 | "object.pick": {
1814 | "version": "1.3.0",
1815 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
1816 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
1817 | "dev": true,
1818 | "requires": {
1819 | "isobject": "^3.0.1"
1820 | }
1821 | },
1822 | "once": {
1823 | "version": "1.4.0",
1824 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1825 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1826 | "dev": true,
1827 | "requires": {
1828 | "wrappy": "1"
1829 | }
1830 | },
1831 | "optionator": {
1832 | "version": "0.8.2",
1833 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
1834 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
1835 | "dev": true,
1836 | "requires": {
1837 | "deep-is": "~0.1.3",
1838 | "fast-levenshtein": "~2.0.4",
1839 | "levn": "~0.3.0",
1840 | "prelude-ls": "~1.1.2",
1841 | "type-check": "~0.3.2",
1842 | "wordwrap": "~1.0.0"
1843 | }
1844 | },
1845 | "parse5": {
1846 | "version": "4.0.0",
1847 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
1848 | "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
1849 | "dev": true
1850 | },
1851 | "pascalcase": {
1852 | "version": "0.1.1",
1853 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
1854 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
1855 | "dev": true
1856 | },
1857 | "path-dirname": {
1858 | "version": "1.0.2",
1859 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
1860 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
1861 | "dev": true
1862 | },
1863 | "path-is-absolute": {
1864 | "version": "1.0.1",
1865 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1866 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1867 | "dev": true
1868 | },
1869 | "path-is-inside": {
1870 | "version": "1.0.2",
1871 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1872 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
1873 | "dev": true
1874 | },
1875 | "path-parse": {
1876 | "version": "1.0.6",
1877 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1878 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
1879 | "dev": true
1880 | },
1881 | "polymer-analyzer": {
1882 | "version": "3.1.2",
1883 | "resolved": "https://registry.npmjs.org/polymer-analyzer/-/polymer-analyzer-3.1.2.tgz",
1884 | "integrity": "sha512-qAGdrrI9fknJurrMMG/vx4CioOdxr0WeQB0CNcB7jZhIuophJn5igqXti9JwTLVBAEIB17DJnsce5A4xFQDryQ==",
1885 | "dev": true,
1886 | "requires": {
1887 | "@babel/generator": "^7.0.0-beta.42",
1888 | "@babel/traverse": "^7.0.0-beta.42",
1889 | "@babel/types": "^7.0.0-beta.42",
1890 | "@types/babel-generator": "^6.25.1",
1891 | "@types/babel-traverse": "^6.25.2",
1892 | "@types/babel-types": "^6.25.1",
1893 | "@types/babylon": "^6.16.2",
1894 | "@types/chai-subset": "^1.3.0",
1895 | "@types/chalk": "^0.4.30",
1896 | "@types/clone": "^0.1.30",
1897 | "@types/cssbeautify": "^0.3.1",
1898 | "@types/doctrine": "^0.0.1",
1899 | "@types/is-windows": "^0.2.0",
1900 | "@types/minimatch": "^3.0.1",
1901 | "@types/parse5": "^2.2.34",
1902 | "@types/path-is-inside": "^1.0.0",
1903 | "@types/resolve": "0.0.6",
1904 | "@types/whatwg-url": "^6.4.0",
1905 | "babylon": "^7.0.0-beta.42",
1906 | "cancel-token": "^0.1.1",
1907 | "chalk": "^1.1.3",
1908 | "clone": "^2.0.0",
1909 | "cssbeautify": "^0.3.1",
1910 | "doctrine": "^2.0.2",
1911 | "dom5": "^3.0.0",
1912 | "indent": "0.0.2",
1913 | "is-windows": "^1.0.2",
1914 | "jsonschema": "^1.1.0",
1915 | "minimatch": "^3.0.4",
1916 | "parse5": "^4.0.0",
1917 | "path-is-inside": "^1.0.2",
1918 | "resolve": "^1.5.0",
1919 | "shady-css-parser": "^0.1.0",
1920 | "stable": "^0.1.6",
1921 | "strip-indent": "^2.0.0",
1922 | "vscode-uri": "^1.0.1",
1923 | "whatwg-url": "^6.4.0"
1924 | },
1925 | "dependencies": {
1926 | "@types/doctrine": {
1927 | "version": "0.0.1",
1928 | "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.1.tgz",
1929 | "integrity": "sha1-uZny2fe0PKvgoaLzm8IDvH3K2p0=",
1930 | "dev": true
1931 | },
1932 | "ansi-styles": {
1933 | "version": "2.2.1",
1934 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
1935 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
1936 | "dev": true
1937 | },
1938 | "chalk": {
1939 | "version": "1.1.3",
1940 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
1941 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
1942 | "dev": true,
1943 | "requires": {
1944 | "ansi-styles": "^2.2.1",
1945 | "escape-string-regexp": "^1.0.2",
1946 | "has-ansi": "^2.0.0",
1947 | "strip-ansi": "^3.0.0",
1948 | "supports-color": "^2.0.0"
1949 | }
1950 | },
1951 | "supports-color": {
1952 | "version": "2.0.0",
1953 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1954 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1955 | "dev": true
1956 | }
1957 | }
1958 | },
1959 | "posix-character-classes": {
1960 | "version": "0.1.1",
1961 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
1962 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
1963 | "dev": true
1964 | },
1965 | "prelude-ls": {
1966 | "version": "1.1.2",
1967 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1968 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
1969 | "dev": true
1970 | },
1971 | "punycode": {
1972 | "version": "2.1.1",
1973 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1974 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1975 | "dev": true
1976 | },
1977 | "reduce-flatten": {
1978 | "version": "1.0.1",
1979 | "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
1980 | "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
1981 | "dev": true
1982 | },
1983 | "regex-not": {
1984 | "version": "1.0.2",
1985 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
1986 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
1987 | "dev": true,
1988 | "requires": {
1989 | "extend-shallow": "^3.0.2",
1990 | "safe-regex": "^1.1.0"
1991 | }
1992 | },
1993 | "repeat-element": {
1994 | "version": "1.1.3",
1995 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
1996 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
1997 | "dev": true
1998 | },
1999 | "repeat-string": {
2000 | "version": "1.6.1",
2001 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
2002 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
2003 | "dev": true
2004 | },
2005 | "resolve": {
2006 | "version": "1.8.1",
2007 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
2008 | "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
2009 | "dev": true,
2010 | "requires": {
2011 | "path-parse": "^1.0.5"
2012 | }
2013 | },
2014 | "resolve-url": {
2015 | "version": "0.2.1",
2016 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
2017 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
2018 | "dev": true
2019 | },
2020 | "ret": {
2021 | "version": "0.1.15",
2022 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
2023 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
2024 | "dev": true
2025 | },
2026 | "safe-regex": {
2027 | "version": "1.1.0",
2028 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
2029 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
2030 | "dev": true,
2031 | "requires": {
2032 | "ret": "~0.1.10"
2033 | }
2034 | },
2035 | "samsam": {
2036 | "version": "1.1.2",
2037 | "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz",
2038 | "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=",
2039 | "dev": true
2040 | },
2041 | "set-value": {
2042 | "version": "2.0.0",
2043 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
2044 | "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
2045 | "dev": true,
2046 | "requires": {
2047 | "extend-shallow": "^2.0.1",
2048 | "is-extendable": "^0.1.1",
2049 | "is-plain-object": "^2.0.3",
2050 | "split-string": "^3.0.1"
2051 | },
2052 | "dependencies": {
2053 | "extend-shallow": {
2054 | "version": "2.0.1",
2055 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2056 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2057 | "dev": true,
2058 | "requires": {
2059 | "is-extendable": "^0.1.0"
2060 | }
2061 | }
2062 | }
2063 | },
2064 | "shady-css-parser": {
2065 | "version": "0.1.0",
2066 | "resolved": "https://registry.npmjs.org/shady-css-parser/-/shady-css-parser-0.1.0.tgz",
2067 | "integrity": "sha512-irfJUUkEuDlNHKZNAp2r7zOyMlmbfVJ+kWSfjlCYYUx/7dJnANLCyTzQZsuxy5NJkvtNwSxY5Gj8MOlqXUQPyA==",
2068 | "dev": true
2069 | },
2070 | "sinon": {
2071 | "version": "1.17.7",
2072 | "resolved": "http://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz",
2073 | "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=",
2074 | "dev": true,
2075 | "requires": {
2076 | "formatio": "1.1.1",
2077 | "lolex": "1.3.2",
2078 | "samsam": "1.1.2",
2079 | "util": ">=0.10.3 <1"
2080 | }
2081 | },
2082 | "sinon-chai": {
2083 | "version": "2.14.0",
2084 | "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz",
2085 | "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==",
2086 | "dev": true
2087 | },
2088 | "snapdragon": {
2089 | "version": "0.8.2",
2090 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
2091 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
2092 | "dev": true,
2093 | "requires": {
2094 | "base": "^0.11.1",
2095 | "debug": "^2.2.0",
2096 | "define-property": "^0.2.5",
2097 | "extend-shallow": "^2.0.1",
2098 | "map-cache": "^0.2.2",
2099 | "source-map": "^0.5.6",
2100 | "source-map-resolve": "^0.5.0",
2101 | "use": "^3.1.0"
2102 | },
2103 | "dependencies": {
2104 | "debug": {
2105 | "version": "2.6.9",
2106 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
2107 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
2108 | "dev": true,
2109 | "requires": {
2110 | "ms": "2.0.0"
2111 | }
2112 | },
2113 | "define-property": {
2114 | "version": "0.2.5",
2115 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
2116 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
2117 | "dev": true,
2118 | "requires": {
2119 | "is-descriptor": "^0.1.0"
2120 | }
2121 | },
2122 | "extend-shallow": {
2123 | "version": "2.0.1",
2124 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2125 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2126 | "dev": true,
2127 | "requires": {
2128 | "is-extendable": "^0.1.0"
2129 | }
2130 | },
2131 | "ms": {
2132 | "version": "2.0.0",
2133 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2134 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
2135 | "dev": true
2136 | },
2137 | "source-map": {
2138 | "version": "0.5.7",
2139 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
2140 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
2141 | "dev": true
2142 | }
2143 | }
2144 | },
2145 | "snapdragon-node": {
2146 | "version": "2.1.1",
2147 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
2148 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
2149 | "dev": true,
2150 | "requires": {
2151 | "define-property": "^1.0.0",
2152 | "isobject": "^3.0.0",
2153 | "snapdragon-util": "^3.0.1"
2154 | },
2155 | "dependencies": {
2156 | "define-property": {
2157 | "version": "1.0.0",
2158 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
2159 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
2160 | "dev": true,
2161 | "requires": {
2162 | "is-descriptor": "^1.0.0"
2163 | }
2164 | },
2165 | "is-accessor-descriptor": {
2166 | "version": "1.0.0",
2167 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
2168 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
2169 | "dev": true,
2170 | "requires": {
2171 | "kind-of": "^6.0.0"
2172 | }
2173 | },
2174 | "is-data-descriptor": {
2175 | "version": "1.0.0",
2176 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
2177 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
2178 | "dev": true,
2179 | "requires": {
2180 | "kind-of": "^6.0.0"
2181 | }
2182 | },
2183 | "is-descriptor": {
2184 | "version": "1.0.2",
2185 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
2186 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
2187 | "dev": true,
2188 | "requires": {
2189 | "is-accessor-descriptor": "^1.0.0",
2190 | "is-data-descriptor": "^1.0.0",
2191 | "kind-of": "^6.0.2"
2192 | }
2193 | }
2194 | }
2195 | },
2196 | "snapdragon-util": {
2197 | "version": "3.0.1",
2198 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
2199 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
2200 | "dev": true,
2201 | "requires": {
2202 | "kind-of": "^3.2.0"
2203 | },
2204 | "dependencies": {
2205 | "kind-of": {
2206 | "version": "3.2.2",
2207 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2208 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2209 | "dev": true,
2210 | "requires": {
2211 | "is-buffer": "^1.1.5"
2212 | }
2213 | }
2214 | }
2215 | },
2216 | "source-map": {
2217 | "version": "0.6.1",
2218 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2219 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2220 | "dev": true,
2221 | "optional": true
2222 | },
2223 | "source-map-resolve": {
2224 | "version": "0.5.2",
2225 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
2226 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
2227 | "dev": true,
2228 | "requires": {
2229 | "atob": "^2.1.1",
2230 | "decode-uri-component": "^0.2.0",
2231 | "resolve-url": "^0.2.1",
2232 | "source-map-url": "^0.4.0",
2233 | "urix": "^0.1.0"
2234 | }
2235 | },
2236 | "source-map-url": {
2237 | "version": "0.4.0",
2238 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
2239 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
2240 | "dev": true
2241 | },
2242 | "split-string": {
2243 | "version": "3.1.0",
2244 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
2245 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
2246 | "dev": true,
2247 | "requires": {
2248 | "extend-shallow": "^3.0.0"
2249 | }
2250 | },
2251 | "stable": {
2252 | "version": "0.1.8",
2253 | "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
2254 | "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
2255 | "dev": true
2256 | },
2257 | "stacky": {
2258 | "version": "1.3.1",
2259 | "resolved": "http://registry.npmjs.org/stacky/-/stacky-1.3.1.tgz",
2260 | "integrity": "sha1-PxF+UYe5pz0j+HbWnwXIWxGAShI=",
2261 | "dev": true,
2262 | "requires": {
2263 | "chalk": "^1.1.1",
2264 | "lodash": "^3.0.0"
2265 | },
2266 | "dependencies": {
2267 | "ansi-styles": {
2268 | "version": "2.2.1",
2269 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
2270 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
2271 | "dev": true
2272 | },
2273 | "chalk": {
2274 | "version": "1.1.3",
2275 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
2276 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
2277 | "dev": true,
2278 | "requires": {
2279 | "ansi-styles": "^2.2.1",
2280 | "escape-string-regexp": "^1.0.2",
2281 | "has-ansi": "^2.0.0",
2282 | "strip-ansi": "^3.0.0",
2283 | "supports-color": "^2.0.0"
2284 | }
2285 | },
2286 | "lodash": {
2287 | "version": "3.10.1",
2288 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
2289 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
2290 | "dev": true
2291 | },
2292 | "supports-color": {
2293 | "version": "2.0.0",
2294 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
2295 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
2296 | "dev": true
2297 | }
2298 | }
2299 | },
2300 | "static-extend": {
2301 | "version": "0.1.2",
2302 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
2303 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
2304 | "dev": true,
2305 | "requires": {
2306 | "define-property": "^0.2.5",
2307 | "object-copy": "^0.1.0"
2308 | },
2309 | "dependencies": {
2310 | "define-property": {
2311 | "version": "0.2.5",
2312 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
2313 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
2314 | "dev": true,
2315 | "requires": {
2316 | "is-descriptor": "^0.1.0"
2317 | }
2318 | }
2319 | }
2320 | },
2321 | "strip-ansi": {
2322 | "version": "3.0.1",
2323 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
2324 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
2325 | "dev": true,
2326 | "requires": {
2327 | "ansi-regex": "^2.0.0"
2328 | }
2329 | },
2330 | "strip-indent": {
2331 | "version": "2.0.0",
2332 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
2333 | "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
2334 | "dev": true
2335 | },
2336 | "supports-color": {
2337 | "version": "5.5.0",
2338 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2339 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2340 | "dev": true,
2341 | "requires": {
2342 | "has-flag": "^3.0.0"
2343 | }
2344 | },
2345 | "table-layout": {
2346 | "version": "0.4.4",
2347 | "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.4.tgz",
2348 | "integrity": "sha512-uNaR3SRMJwfdp9OUr36eyEi6LLsbcTqTO/hfTsNviKsNeyMBPICJCC7QXRF3+07bAP6FRwA8rczJPBqXDc0CkQ==",
2349 | "dev": true,
2350 | "requires": {
2351 | "array-back": "^2.0.0",
2352 | "deep-extend": "~0.6.0",
2353 | "lodash.padend": "^4.6.1",
2354 | "typical": "^2.6.1",
2355 | "wordwrapjs": "^3.0.0"
2356 | }
2357 | },
2358 | "test-value": {
2359 | "version": "3.0.0",
2360 | "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz",
2361 | "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==",
2362 | "dev": true,
2363 | "requires": {
2364 | "array-back": "^2.0.0",
2365 | "typical": "^2.6.1"
2366 | }
2367 | },
2368 | "to-fast-properties": {
2369 | "version": "2.0.0",
2370 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
2371 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
2372 | "dev": true
2373 | },
2374 | "to-object-path": {
2375 | "version": "0.3.0",
2376 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
2377 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
2378 | "dev": true,
2379 | "requires": {
2380 | "kind-of": "^3.0.2"
2381 | },
2382 | "dependencies": {
2383 | "kind-of": {
2384 | "version": "3.2.2",
2385 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2386 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2387 | "dev": true,
2388 | "requires": {
2389 | "is-buffer": "^1.1.5"
2390 | }
2391 | }
2392 | }
2393 | },
2394 | "to-regex": {
2395 | "version": "3.0.2",
2396 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
2397 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
2398 | "dev": true,
2399 | "requires": {
2400 | "define-property": "^2.0.2",
2401 | "extend-shallow": "^3.0.2",
2402 | "regex-not": "^1.0.2",
2403 | "safe-regex": "^1.1.0"
2404 | }
2405 | },
2406 | "to-regex-range": {
2407 | "version": "2.1.1",
2408 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
2409 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
2410 | "dev": true,
2411 | "requires": {
2412 | "is-number": "^3.0.0",
2413 | "repeat-string": "^1.6.1"
2414 | }
2415 | },
2416 | "tr46": {
2417 | "version": "1.0.1",
2418 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
2419 | "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
2420 | "dev": true,
2421 | "requires": {
2422 | "punycode": "^2.1.0"
2423 | }
2424 | },
2425 | "trim-right": {
2426 | "version": "1.0.1",
2427 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
2428 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
2429 | "dev": true
2430 | },
2431 | "type-check": {
2432 | "version": "0.3.2",
2433 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2434 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
2435 | "dev": true,
2436 | "requires": {
2437 | "prelude-ls": "~1.1.2"
2438 | }
2439 | },
2440 | "type-detect": {
2441 | "version": "1.0.0",
2442 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz",
2443 | "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=",
2444 | "dev": true
2445 | },
2446 | "typescript": {
2447 | "version": "3.0.3",
2448 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz",
2449 | "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==",
2450 | "dev": true
2451 | },
2452 | "typical": {
2453 | "version": "2.6.1",
2454 | "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz",
2455 | "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=",
2456 | "dev": true
2457 | },
2458 | "union-value": {
2459 | "version": "1.0.0",
2460 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
2461 | "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
2462 | "dev": true,
2463 | "requires": {
2464 | "arr-union": "^3.1.0",
2465 | "get-value": "^2.0.6",
2466 | "is-extendable": "^0.1.1",
2467 | "set-value": "^0.4.3"
2468 | },
2469 | "dependencies": {
2470 | "extend-shallow": {
2471 | "version": "2.0.1",
2472 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2473 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2474 | "dev": true,
2475 | "requires": {
2476 | "is-extendable": "^0.1.0"
2477 | }
2478 | },
2479 | "set-value": {
2480 | "version": "0.4.3",
2481 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
2482 | "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
2483 | "dev": true,
2484 | "requires": {
2485 | "extend-shallow": "^2.0.1",
2486 | "is-extendable": "^0.1.1",
2487 | "is-plain-object": "^2.0.1",
2488 | "to-object-path": "^0.3.0"
2489 | }
2490 | }
2491 | }
2492 | },
2493 | "universalify": {
2494 | "version": "0.1.2",
2495 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
2496 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
2497 | "dev": true
2498 | },
2499 | "unset-value": {
2500 | "version": "1.0.0",
2501 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
2502 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
2503 | "dev": true,
2504 | "requires": {
2505 | "has-value": "^0.3.1",
2506 | "isobject": "^3.0.0"
2507 | },
2508 | "dependencies": {
2509 | "has-value": {
2510 | "version": "0.3.1",
2511 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
2512 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
2513 | "dev": true,
2514 | "requires": {
2515 | "get-value": "^2.0.3",
2516 | "has-values": "^0.1.4",
2517 | "isobject": "^2.0.0"
2518 | },
2519 | "dependencies": {
2520 | "isobject": {
2521 | "version": "2.1.0",
2522 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
2523 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
2524 | "dev": true,
2525 | "requires": {
2526 | "isarray": "1.0.0"
2527 | }
2528 | }
2529 | }
2530 | },
2531 | "has-values": {
2532 | "version": "0.1.4",
2533 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
2534 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
2535 | "dev": true
2536 | }
2537 | }
2538 | },
2539 | "urix": {
2540 | "version": "0.1.0",
2541 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
2542 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
2543 | "dev": true
2544 | },
2545 | "use": {
2546 | "version": "3.1.1",
2547 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
2548 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
2549 | "dev": true
2550 | },
2551 | "util": {
2552 | "version": "0.11.0",
2553 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.0.tgz",
2554 | "integrity": "sha512-5n12uMzKCjvB2HPFHnbQSjaqAa98L5iIXmHrZCLavuZVe0qe/SJGbDGWlpaHk5lnBkWRDO+dRu1/PgmUYKPPTw==",
2555 | "dev": true,
2556 | "requires": {
2557 | "inherits": "2.0.3"
2558 | }
2559 | },
2560 | "vscode-uri": {
2561 | "version": "1.0.6",
2562 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.6.tgz",
2563 | "integrity": "sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==",
2564 | "dev": true
2565 | },
2566 | "wct-browser-legacy": {
2567 | "version": "1.0.1",
2568 | "resolved": "https://registry.npmjs.org/wct-browser-legacy/-/wct-browser-legacy-1.0.1.tgz",
2569 | "integrity": "sha512-+HmZ5C2WNksNcti41ZihUL5b8ms8q6mOanXKK2jm3aBTnx7vqtkvdFPVJUbapglLWC0RReScBbhT0YuYbdoEOw==",
2570 | "dev": true,
2571 | "requires": {
2572 | "@polymer/polymer": "^3.0.0",
2573 | "@polymer/sinonjs": "^1.14.1",
2574 | "@polymer/test-fixture": "^3.0.0-pre.1",
2575 | "@webcomponents/webcomponentsjs": "^2.0.0",
2576 | "accessibility-developer-tools": "^2.12.0",
2577 | "async": "^1.5.2",
2578 | "chai": "^3.5.0",
2579 | "lodash": "^3.10.1",
2580 | "mocha": "^3.4.2",
2581 | "sinon": "^1.17.1",
2582 | "sinon-chai": "^2.10.0",
2583 | "stacky": "^1.3.1"
2584 | },
2585 | "dependencies": {
2586 | "lodash": {
2587 | "version": "3.10.1",
2588 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
2589 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
2590 | "dev": true
2591 | }
2592 | }
2593 | },
2594 | "webidl-conversions": {
2595 | "version": "4.0.2",
2596 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
2597 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
2598 | "dev": true
2599 | },
2600 | "webmat": {
2601 | "version": "0.2.2",
2602 | "resolved": "https://registry.npmjs.org/webmat/-/webmat-0.2.2.tgz",
2603 | "integrity": "sha512-qi4Ol9a+0jArgbO8HdnIplE7f4p+9vXtRie8q321dmkqXAlWtVuSz7fL9g+S6yVynWBWq2MqVM/dq25W6tUWUw==",
2604 | "dev": true,
2605 | "requires": {
2606 | "clang-format": "^1.2.2",
2607 | "dom5": "^3.0.0",
2608 | "esprima": "^4.0.0",
2609 | "fast-glob": "^2.2.0",
2610 | "parse5": "^4.0.0"
2611 | },
2612 | "dependencies": {
2613 | "esprima": {
2614 | "version": "4.0.1",
2615 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
2616 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
2617 | "dev": true
2618 | }
2619 | }
2620 | },
2621 | "whatwg-url": {
2622 | "version": "6.5.0",
2623 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
2624 | "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
2625 | "dev": true,
2626 | "requires": {
2627 | "lodash.sortby": "^4.7.0",
2628 | "tr46": "^1.0.1",
2629 | "webidl-conversions": "^4.0.2"
2630 | }
2631 | },
2632 | "wordwrap": {
2633 | "version": "1.0.0",
2634 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
2635 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
2636 | "dev": true
2637 | },
2638 | "wordwrapjs": {
2639 | "version": "3.0.0",
2640 | "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz",
2641 | "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==",
2642 | "dev": true,
2643 | "requires": {
2644 | "reduce-flatten": "^1.0.1",
2645 | "typical": "^2.6.1"
2646 | }
2647 | },
2648 | "wrappy": {
2649 | "version": "1.0.2",
2650 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2651 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2652 | "dev": true
2653 | }
2654 | }
2655 | }
2656 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "description": "Provides accessible menu behavior",
3 | "keywords": [
4 | "web-components",
5 | "polymer",
6 | "behavior",
7 | "menu"
8 | ],
9 | "repository": {
10 | "type": "git",
11 | "url": "git://github.com/PolymerElements/iron-menu-behavior"
12 | },
13 | "homepage": "https://github.com/PolymerElements/iron-menu-behavior",
14 | "name": "@polymer/iron-menu-behavior",
15 | "license": "BSD-3-Clause",
16 | "devDependencies": {
17 | "webmat": "^0.2.0",
18 | "@polymer/paper-styles": "^3.0.0-pre.26",
19 | "@polymer/iron-test-helpers": "^3.0.0-pre.26",
20 | "wct-browser-legacy": "^1.0.1",
21 | "@webcomponents/webcomponentsjs": "^2.0.0",
22 | "@polymer/gen-typescript-declarations": "^1.5.1"
23 | },
24 | "scripts": {
25 | "format": "webmat",
26 | "generate-types": "gen-typescript-declarations --deleteExisting --outDir . --verify",
27 | "prepare": "npm run generate-types"
28 | },
29 | "version": "3.0.2",
30 | "author": "The Polymer Authors",
31 | "dependencies": {
32 | "@polymer/iron-selector": "^3.0.0-pre.26",
33 | "@polymer/polymer": "^3.0.0",
34 | "@polymer/iron-a11y-keys-behavior": "^3.0.0-pre.26",
35 | "@polymer/iron-flex-layout": "^3.0.0-pre.26"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/test/index.html:
--------------------------------------------------------------------------------
1 |
10 |
11 | iron-menu-behavior tests
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/test/iron-menu-behavior.html:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 | iron-menu-behavior tests
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | item 1
39 | item 2
40 | item 3
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | item 1
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | a item 1
57 | b item 2
58 | b item 3
59 | c item 4
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | item 1
68 | item 2
69 | item 3
70 | item 3.1
71 | item 4
72 | item 5
73 | item 6
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 | disabled item
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 | item 1
96 | item 2
97 | item 3
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | item 1
107 | item 2
108 | item 3
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 | one
124 | two
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 | One
133 | Two
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 | Ghana
142 | Uganda
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 | Focused by default
151 | I'm not entitled!
152 |
153 |
154 |
155 |
156 |
753 |
754 |
755 |
--------------------------------------------------------------------------------
/test/iron-menubar-behavior.html:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 | iron-menubar-behavior tests
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | item 1
30 | item 2
31 | item 3
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | item 1
40 | item 2
41 | item 3
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | item 1
51 | item 2
52 | item 3
53 |
54 |
55 |
56 |
57 |
58 |
208 |
209 |
210 |
211 |
--------------------------------------------------------------------------------
/test/test-menu.js:
--------------------------------------------------------------------------------
1 | /**
2 | @license
3 | Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 | This code may only be used under the BSD style license found at
5 | http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
6 | http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
7 | found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
8 | part of the polymer project is also subject to an additional IP rights grant
9 | found at http://polymer.github.io/PATENTS.txt
10 | */
11 | import '@polymer/polymer/polymer-legacy.js';
12 |
13 | import {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';
14 | import {html} from '@polymer/polymer/lib/utils/html-tag.js';
15 |
16 | import {IronMenuBehavior} from '../iron-menu-behavior.js';
17 |
18 | Polymer({
19 | _template: html`
20 |
21 |
22 |
23 | `,
24 |
25 | is: 'test-menu',
26 | behaviors: [IronMenuBehavior],
27 |
28 | get extraContent() {
29 | return this.$.extraContent;
30 | }
31 | });
32 |
--------------------------------------------------------------------------------
/test/test-menubar.js:
--------------------------------------------------------------------------------
1 | /**
2 | @license
3 | Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 | This code may only be used under the BSD style license found at
5 | http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
6 | http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
7 | found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
8 | part of the polymer project is also subject to an additional IP rights grant
9 | found at http://polymer.github.io/PATENTS.txt
10 | */
11 | import '@polymer/polymer/polymer-legacy.js';
12 |
13 | import {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';
14 | import {html} from '@polymer/polymer/lib/utils/html-tag.js';
15 |
16 | import {IronMenubarBehavior} from '../iron-menubar-behavior.js';
17 |
18 | Polymer({
19 | _template: html`
20 |
21 |
22 |
23 | `,
24 |
25 | is: 'test-menubar',
26 | behaviors: [IronMenubarBehavior],
27 |
28 | get extraContent() {
29 | return this.$.extraContent;
30 | }
31 | });
32 |
--------------------------------------------------------------------------------
/test/test-nested-menu.js:
--------------------------------------------------------------------------------
1 | /**
2 | @license
3 | Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 | This code may only be used under the BSD style license found at
5 | http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
6 | http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
7 | found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
8 | part of the polymer project is also subject to an additional IP rights grant
9 | found at http://polymer.github.io/PATENTS.txt
10 | */
11 | import '@polymer/polymer/polymer-legacy.js';
12 |
13 | import './test-menu.js';
14 | import {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';
15 | import {html} from '@polymer/polymer/lib/utils/html-tag.js';
16 | Polymer({
17 | _template: html`
18 |
26 |
35 | `,
36 |
37 | is: 'test-nested-menu'
38 | });
39 |
--------------------------------------------------------------------------------
/wct.conf.json:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": {
3 | "local": {
4 | "browserOptions": {
5 | "chrome": [
6 | "no-sandbox",
7 | "headless",
8 | "disable-gpu"
9 | ],
10 | "firefox": [
11 | "-headless"
12 | ]
13 | }
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------