Bump @justinribeiro/lite-youtube from 0.9.0 to 0.9.1 in /build/javascript (#273)
* Commit updated Javascript packages * Bump preact from 10.5.4 to 10.5.5 in /build/javascript (#265) * Trying a new github workflow to install javascript packages * Bump tailwindcss from 1.9.2 to 1.9.4 in /build/javascript (#266) Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 1.9.2 to 1.9.4. - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/master/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v1.9.2...v1.9.4) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Commit updated Javascript packages * Bump preact from 10.5.4 to 10.5.5 in /build/javascript Bumps [preact](https://github.com/preactjs/preact) from 10.5.4 to 10.5.5. - [Release notes](https://github.com/preactjs/preact/releases) - [Commits](https://github.com/preactjs/preact/compare/10.5.4...10.5.5) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Gabe Kangas <gabek@real-ity.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Owncast <owncast@owncast.online> * Bump @justinribeiro/lite-youtube in /build/javascript Bumps [@justinribeiro/lite-youtube](https://github.com/justinribeiro/lite-youtube) from 0.9.0 to 0.9.1. - [Release notes](https://github.com/justinribeiro/lite-youtube/releases) - [Commits](https://github.com/justinribeiro/lite-youtube/commits) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Owncast <owncast@owncast.online> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Gabe Kangas <gabek@real-ity.com>
This commit is contained in:
78
build/javascript/node_modules/tabbable/CHANGELOG.md
generated
vendored
Normal file
78
build/javascript/node_modules/tabbable/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
# Changelog
|
||||
|
||||
## 4.0.0
|
||||
|
||||
- Improve performance by changing the method for detecting whether a DOM node is focusable or not. It's expected that this change will *not* affect results; but this is a major version bump as a warning for you to check your edge cases before upgrading.
|
||||
|
||||
## 3.1.2
|
||||
|
||||
- Fix reference to root element that caused errors within Shadow DOM.
|
||||
|
||||
## 3.1.1
|
||||
|
||||
- Allow module to be imported by non-browser JavaScript.
|
||||
|
||||
## 3.1.0
|
||||
|
||||
- Add `tabbable.isFocusable` and `tabbable.isTabbable` functions.
|
||||
|
||||
## 3.0.0
|
||||
|
||||
- Add `[contenteditable]` elements.
|
||||
|
||||
## 2.0.0
|
||||
|
||||
- Add `<audio>` and `<video>` elements with `controls` attributes.
|
||||
- Only consider radio buttons tabbable if they are the `checked` on in their group, or if none in their group are `checked`.
|
||||
|
||||
## 1.1.3
|
||||
|
||||
- Fix bug causing SVG elements to precede elements they should follow in the tab order in IE.
|
||||
|
||||
## 1.1.2
|
||||
|
||||
- Ensure `querySelectorAll` receives a string argument.
|
||||
|
||||
## 1.1.1
|
||||
|
||||
- Fix crash when you call `tabbable(document)` (passing the `document` element).
|
||||
|
||||
## 1.1.0
|
||||
|
||||
- Add `includeContainer` option.
|
||||
|
||||
## 1.0.8
|
||||
|
||||
- Allows operation against elements that reside within iframes, by inspecting the element to determine its correct parent `document` (rather than relying on the global `document` object).
|
||||
|
||||
## 1.0.7
|
||||
|
||||
- Ensure stable sort of `tabindex`ed elements even in browsers that have an unstable `Array.prototype.sort`.
|
||||
|
||||
## 1.0.6
|
||||
|
||||
- Check `tabindex` attribute (via `getAttribute`), in addition to `node.tabIndex`, to fix handling of SVGs with `tabindex="-1"` in IE.
|
||||
|
||||
## 1.0.5
|
||||
|
||||
- Children of `visibility: hidden` elements that themselves have `visibility: visible` are considered tabbable.
|
||||
|
||||
## 1.0.4
|
||||
|
||||
- Fix IE9 compatibility.
|
||||
|
||||
## 1.0.3
|
||||
|
||||
- Further improvements to caching.
|
||||
|
||||
## 1.0.2
|
||||
|
||||
- Fix overaggressive caching that would prevent `tabbable` from knowing an element's children had changed.
|
||||
|
||||
## 1.0.1
|
||||
|
||||
- Fix handling of `<a>` elements with `tabindex="0"`.
|
||||
|
||||
## 1.0.0
|
||||
|
||||
- Initial release.
|
||||
22
build/javascript/node_modules/tabbable/LICENSE
generated
vendored
Normal file
22
build/javascript/node_modules/tabbable/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 David Clark
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
104
build/javascript/node_modules/tabbable/README.md
generated
vendored
Normal file
104
build/javascript/node_modules/tabbable/README.md
generated
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
# tabbable
|
||||
|
||||
[](https://travis-ci.org/davidtheclark/tabbable)
|
||||
|
||||
Returns an array of all\* tabbable DOM nodes within a containing node. (\* "all" has some necessary caveats, which you'll learn about by reading below.)
|
||||
|
||||
The following are considered tabbable:
|
||||
|
||||
- `<button>`s
|
||||
- `<input>`s
|
||||
- `<select>`s
|
||||
- `<textarea>`s
|
||||
- `<a>`s with `href` or `xlink:href` attributes
|
||||
- `<audio>`s and `<videos>`s with `controls` attributes
|
||||
- `[contenteditable]` elements
|
||||
- anything with a non-negative `tabindex`
|
||||
|
||||
Any of the above will *not* be considered tabbable, though, if any of the following are also true about it:
|
||||
|
||||
- negative `tabindex`
|
||||
- `disabled`
|
||||
- either the node itself *or an ancestor of it* is hidden via `display: none` or `visibility: hidden`
|
||||
- it's an `<input type="radio">` and a different radio in its group is `checked`
|
||||
|
||||
**If you think a node should be included in your array of tabbables *but it's not*, all you need to do is add `tabindex="0"` to deliberately include it.** (Or if it is in your array but you don't want it, you can add `tabindex="-1"` to deliberately exclude it.) This will also result in more consistent cross-browser behavior. For information about why your special node might *not* be included, see ["More details"](#more-details), below.
|
||||
|
||||
## Goals
|
||||
|
||||
- Accurate (or, as accurate as possible & reasonable)
|
||||
- No dependencies
|
||||
- Small
|
||||
- Fast
|
||||
|
||||
## Browser Support
|
||||
|
||||
Basically IE9+.
|
||||
|
||||
Why? It uses [Element.querySelectorAll()](https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelectorAll) and [Window.getComputedStyle()](https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle).
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
npm install tabbable
|
||||
```
|
||||
|
||||
Dependencies: *none*.
|
||||
|
||||
You'll need to be compiling CommonJS (via browserify or webpack).
|
||||
|
||||
## API
|
||||
|
||||
### tabbable
|
||||
|
||||
```
|
||||
tabbable(rootNode, [options])
|
||||
```
|
||||
|
||||
Returns an array of ordered tabbable node within the `rootNode`.
|
||||
|
||||
Summary of ordering principles:
|
||||
- First include any nodes with positive `tabindex` attributes (1 or higher), ordered by ascending `tabindex` and source order.
|
||||
- Then include any nodes with a zero `tabindex` and any element that by default receives focus (listed above) and does not have a positive `tabindex` set, in source order.
|
||||
|
||||
#### rootNode
|
||||
|
||||
Type: `Node`. **Required.**
|
||||
|
||||
#### options
|
||||
|
||||
##### includeContainer
|
||||
|
||||
Type: `boolean`. Default: `false`.
|
||||
|
||||
If set to `true`, `rootNode` will be included in the returned tabbable node array, if `rootNode` is tabbable.
|
||||
|
||||
### tabbable.isTabbable
|
||||
|
||||
```
|
||||
tabbable.isTabbable(node)
|
||||
```
|
||||
|
||||
Returns a boolean indicating whether the provided node is considered tabbable.
|
||||
|
||||
### tabbable.isFocusable
|
||||
|
||||
```
|
||||
tabbable.isFocusable(node)
|
||||
```
|
||||
|
||||
Returns a boolean indicating whether the provided node is considered *focusable*.
|
||||
|
||||
All tabbable elements are focusable, but not all focusable elements are tabbable. For example, elements with `tabindex="-1"` are focusable but not tabbable.
|
||||
|
||||
## More details
|
||||
|
||||
- **Tabbable tries to identify elements that are reliably tabbable across (not dead) browsers.** Browsers are stupidly inconsistent in their behavior, though — especially for edge-case elements like `<object>` and `<iframe>` — so this means *some* elements that you *can* tab to in *some* browsers will be left out of the results. (To learn more about that stupid inconsistency, see this [amazing table](https://allyjs.io/data-tables/focusable.html)). To provide better consistency across browsers and ensure the elements you *want* in your tabbables list show up there, **try adding `tabindex="0"` to edge-case elements that Tabbable ignores**.
|
||||
- (Exemplifying the above ^^:) **The tabbability of `<iframe>`s, `<embed>`s, `<object>`s, `<summary>`s, and `<svg>`s is [inconsistent across browsers](https://allyjs.io/data-tables/focusable.html)**, so if you need an accurate read on one of these elements you should try giving it a `tabindex`. (You'll also need to pay attention to the `focusable` attribute on SVGs in IE & Edge.) But you also might *not* be able to get an accurate read — so you should avoid relying on it.
|
||||
- **Radio groups have some edge cases, which you can avoid by always having a `checked` one in each group** (and that is what you should usually do anyway). If there is no `checked` radio in the radio group, *all* of the radios will be considered tabbable. (Some browsers do this, otherwise don't — there's not consistency.)
|
||||
- If you're thinking, "Why not just use the right `querySelectorAll`?", you *may* be on to something ... but, as with most "just" statements, you're probably not. For example, a simple `querySelectorAll` approach will not figure out whether an element is *hidden*, and therefore not actually tabbable. (That said, if you do think Tabbable can be simplified or otherwise improved, I'd love to hear your idea.)
|
||||
- jQuery UI's `:tabbable` selector ignores elements with height and width of `0`. I'm not sure why — because I've found that I can still tab to those elements. So I kept them in. Only elements hidden with `display: none` or `visibility: hidden` are left out.
|
||||
- Although Tabbable tries to deal with positive tabindexes, **you should not use positive tabindexes**. Accessibility experts seem to be in (rare) unanimous and clear consent about this: rely on the order of elements in the document.
|
||||
- Safari on Mac OS X does not Tab to `<a>` elements by default: you have to change a setting to get the standard behavior. Tabbable does not know whether you've changed that setting or not, so it will include `<a>` elements in its list.
|
||||
|
||||
***Feedback and contributions more than welcome!***
|
||||
153
build/javascript/node_modules/tabbable/index.js
generated
vendored
Normal file
153
build/javascript/node_modules/tabbable/index.js
generated
vendored
Normal file
@@ -0,0 +1,153 @@
|
||||
var candidateSelectors = [
|
||||
'input',
|
||||
'select',
|
||||
'textarea',
|
||||
'a[href]',
|
||||
'button',
|
||||
'[tabindex]',
|
||||
'audio[controls]',
|
||||
'video[controls]',
|
||||
'[contenteditable]:not([contenteditable="false"])',
|
||||
];
|
||||
var candidateSelector = candidateSelectors.join(',');
|
||||
|
||||
var matches = typeof Element === 'undefined'
|
||||
? function () {}
|
||||
: Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
|
||||
|
||||
function tabbable(el, options) {
|
||||
options = options || {};
|
||||
|
||||
var regularTabbables = [];
|
||||
var orderedTabbables = [];
|
||||
|
||||
var candidates = el.querySelectorAll(candidateSelector);
|
||||
|
||||
if (options.includeContainer) {
|
||||
if (matches.call(el, candidateSelector)) {
|
||||
candidates = Array.prototype.slice.apply(candidates);
|
||||
candidates.unshift(el);
|
||||
}
|
||||
}
|
||||
|
||||
var i, candidate, candidateTabindex;
|
||||
for (i = 0; i < candidates.length; i++) {
|
||||
candidate = candidates[i];
|
||||
|
||||
if (!isNodeMatchingSelectorTabbable(candidate)) continue;
|
||||
|
||||
candidateTabindex = getTabindex(candidate);
|
||||
if (candidateTabindex === 0) {
|
||||
regularTabbables.push(candidate);
|
||||
} else {
|
||||
orderedTabbables.push({
|
||||
documentOrder: i,
|
||||
tabIndex: candidateTabindex,
|
||||
node: candidate,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var tabbableNodes = orderedTabbables
|
||||
.sort(sortOrderedTabbables)
|
||||
.map(function(a) { return a.node })
|
||||
.concat(regularTabbables);
|
||||
|
||||
return tabbableNodes;
|
||||
}
|
||||
|
||||
tabbable.isTabbable = isTabbable;
|
||||
tabbable.isFocusable = isFocusable;
|
||||
|
||||
function isNodeMatchingSelectorTabbable(node) {
|
||||
if (
|
||||
!isNodeMatchingSelectorFocusable(node)
|
||||
|| isNonTabbableRadio(node)
|
||||
|| getTabindex(node) < 0
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function isTabbable(node) {
|
||||
if (!node) throw new Error('No node provided');
|
||||
if (matches.call(node, candidateSelector) === false) return false;
|
||||
return isNodeMatchingSelectorTabbable(node);
|
||||
}
|
||||
|
||||
function isNodeMatchingSelectorFocusable(node) {
|
||||
if (
|
||||
node.disabled
|
||||
|| isHiddenInput(node)
|
||||
|| isHidden(node)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
var focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');
|
||||
function isFocusable(node) {
|
||||
if (!node) throw new Error('No node provided');
|
||||
if (matches.call(node, focusableCandidateSelector) === false) return false;
|
||||
return isNodeMatchingSelectorFocusable(node);
|
||||
}
|
||||
|
||||
function getTabindex(node) {
|
||||
var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);
|
||||
if (!isNaN(tabindexAttr)) return tabindexAttr;
|
||||
// Browsers do not return `tabIndex` correctly for contentEditable nodes;
|
||||
// so if they don't have a tabindex attribute specifically set, assume it's 0.
|
||||
if (isContentEditable(node)) return 0;
|
||||
return node.tabIndex;
|
||||
}
|
||||
|
||||
function sortOrderedTabbables(a, b) {
|
||||
return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
|
||||
}
|
||||
|
||||
function isContentEditable(node) {
|
||||
return node.contentEditable === 'true';
|
||||
}
|
||||
|
||||
function isInput(node) {
|
||||
return node.tagName === 'INPUT';
|
||||
}
|
||||
|
||||
function isHiddenInput(node) {
|
||||
return isInput(node) && node.type === 'hidden';
|
||||
}
|
||||
|
||||
function isRadio(node) {
|
||||
return isInput(node) && node.type === 'radio';
|
||||
}
|
||||
|
||||
function isNonTabbableRadio(node) {
|
||||
return isRadio(node) && !isTabbableRadio(node);
|
||||
}
|
||||
|
||||
function getCheckedRadio(nodes) {
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
if (nodes[i].checked) {
|
||||
return nodes[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function isTabbableRadio(node) {
|
||||
if (!node.name) return true;
|
||||
// This won't account for the edge case where you have radio groups with the same
|
||||
// in separate forms on the same page.
|
||||
var radioSet = node.ownerDocument.querySelectorAll('input[type="radio"][name="' + node.name + '"]');
|
||||
var checked = getCheckedRadio(radioSet);
|
||||
return !checked || checked === node;
|
||||
}
|
||||
|
||||
function isHidden(node) {
|
||||
// offsetParent being null will allow detecting cases where an element is invisible or inside an invisible element,
|
||||
// as long as the element does not use position: fixed. For them, their visibility has to be checked directly as well.
|
||||
return node.offsetParent === null || getComputedStyle(node).visibility === 'hidden';
|
||||
}
|
||||
|
||||
module.exports = tabbable;
|
||||
27
build/javascript/node_modules/tabbable/karma.conf.js
generated
vendored
Normal file
27
build/javascript/node_modules/tabbable/karma.conf.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
module.exports = function(config) {
|
||||
config.set({
|
||||
basePath: '',
|
||||
frameworks: ['browserify', 'mocha'],
|
||||
files: [
|
||||
'test/**/*.test.js',
|
||||
],
|
||||
preprocessors: {
|
||||
'test/**/*.test.js': ['browserify'],
|
||||
},
|
||||
browserify: {
|
||||
debug: true,
|
||||
transform: ['brfs'],
|
||||
},
|
||||
mochaReporter: {
|
||||
showDiff: true,
|
||||
},
|
||||
reporters: ['mocha'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: true,
|
||||
browsers: ['Firefox'],
|
||||
singleRun: true,
|
||||
concurrency: Infinity,
|
||||
});
|
||||
}
|
||||
65
build/javascript/node_modules/tabbable/package.json
generated
vendored
Normal file
65
build/javascript/node_modules/tabbable/package.json
generated
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"tabbable@4.0.0",
|
||||
"/home/runner/work/owncast/owncast/build/javascript"
|
||||
]
|
||||
],
|
||||
"_from": "tabbable@4.0.0",
|
||||
"_id": "tabbable@4.0.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-H1XoH1URcBOa/rZZWxLxHCtOdVUEev+9vo5YdYhC9tCY4wnybX+VQrCYuy9ubkg69fCBxCONJOSLGfw0DWMffQ==",
|
||||
"_location": "/tabbable",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "tabbable@4.0.0",
|
||||
"name": "tabbable",
|
||||
"escapedName": "tabbable",
|
||||
"rawSpec": "4.0.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "4.0.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/focus-trap"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/tabbable/-/tabbable-4.0.0.tgz",
|
||||
"_spec": "4.0.0",
|
||||
"_where": "/home/runner/work/owncast/owncast/build/javascript",
|
||||
"author": {
|
||||
"name": "David Clark"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/davidtheclark/tabbable/issues"
|
||||
},
|
||||
"description": "Returns an array of all tabbable DOM nodes within a containing node.",
|
||||
"devDependencies": {
|
||||
"brfs": "^1.4.3",
|
||||
"browserify": "^13.1.1",
|
||||
"budo": "^9.2.1",
|
||||
"chai": "^3.5.0",
|
||||
"eslint": "^3.9.0",
|
||||
"karma": "^1.3.0",
|
||||
"karma-browserify": "^5.1.0",
|
||||
"karma-firefox-launcher": "^1.0.0",
|
||||
"karma-mocha": "^1.3.0",
|
||||
"karma-mocha-reporter": "^2.2.1",
|
||||
"mocha": "^3.2.0",
|
||||
"watchify": "^3.8.0"
|
||||
},
|
||||
"homepage": "https://github.com/davidtheclark/tabbable#readme",
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "tabbable",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/davidtheclark/tabbable.git"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"start": "budo -l -d -o test/debug.js -- -t brfs",
|
||||
"test": "karma start && npm run lint"
|
||||
},
|
||||
"version": "4.0.0"
|
||||
}
|
||||
Reference in New Issue
Block a user