feat: docker compose maybe
5
node_modules/@skeletonlabs/skeleton/dist/actions/Clipboard/additional-svelte-typings.d.ts
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
declare namespace svelteHTML {
|
||||
interface HTMLAttributes {
|
||||
'on:copyComplete'?: () => void;
|
||||
}
|
||||
}
|
10
node_modules/@skeletonlabs/skeleton/dist/actions/Clipboard/clipboard.d.ts
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
type ClipboardArgs = string | {
|
||||
element: string;
|
||||
} | {
|
||||
input: string;
|
||||
};
|
||||
export declare function clipboard(node: HTMLElement, args: ClipboardArgs): {
|
||||
update(newArgs: ClipboardArgs): void;
|
||||
destroy(): void;
|
||||
} | undefined;
|
||||
export {};
|
64
node_modules/@skeletonlabs/skeleton/dist/actions/Clipboard/clipboard.js
generated
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
export function clipboard(node, args) {
|
||||
if (!window.isSecureContext) {
|
||||
console.error('Clipboard action failed: app not running in secure context, see: https://developer.mozilla.org/en-US/docs/Web/API/Clipboard');
|
||||
return;
|
||||
}
|
||||
const fireCopyCompleteEvent = () => {
|
||||
node.dispatchEvent(new CustomEvent('copyComplete'));
|
||||
};
|
||||
const onClick = () => {
|
||||
// Handle `data-clipboard` target based on object key
|
||||
if (typeof args === 'object') {
|
||||
// Element Inner HTML
|
||||
if ('element' in args) {
|
||||
const element = document.querySelector(`[data-clipboard="${args.element}"]`);
|
||||
if (!element)
|
||||
throw new Error(`Missing HTMLElement with an attribute of [data-clipboard="${args.element}"]`);
|
||||
copyToClipboard(element.innerHTML, 'text/html').then(fireCopyCompleteEvent);
|
||||
return;
|
||||
}
|
||||
// Form Input Value
|
||||
if ('input' in args) {
|
||||
const input = document.querySelector(`[data-clipboard="${args.input}"]`);
|
||||
if (!input)
|
||||
throw new Error(`Missing HTMLInputElement with an attribute of [data-clipboard="${args.input}"]`);
|
||||
copyToClipboard(input.value).then(fireCopyCompleteEvent);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Handle everything else.
|
||||
copyToClipboard(args).then(fireCopyCompleteEvent);
|
||||
};
|
||||
// Event Listener
|
||||
node.addEventListener('click', onClick);
|
||||
// Lifecycle
|
||||
return {
|
||||
update(newArgs) {
|
||||
args = newArgs;
|
||||
},
|
||||
destroy() {
|
||||
node.removeEventListener('click', onClick);
|
||||
}
|
||||
};
|
||||
}
|
||||
// Shared copy method
|
||||
async function copyToClipboard(data, mimeType = 'text/plain') {
|
||||
if (navigator.clipboard.write) {
|
||||
await navigator.clipboard.write([
|
||||
new ClipboardItem({
|
||||
[mimeType]: new Blob([data], {
|
||||
type: mimeType
|
||||
}),
|
||||
['text/plain']: new Blob([data], {
|
||||
type: 'text/plain'
|
||||
})
|
||||
})
|
||||
]);
|
||||
}
|
||||
else {
|
||||
// fallback since .writeText has wider browser support
|
||||
await new Promise((resolve) => {
|
||||
resolve(navigator.clipboard.writeText(String(data)));
|
||||
});
|
||||
}
|
||||
}
|
6
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/filter.d.ts
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
type Filters = ['Apollo', 'BlueNight', 'Emerald', 'GreenFall', 'Noir', 'NoirLight', 'Rustic', 'Summer84', 'XPro'];
|
||||
type FilterName = `#${Filters[number]}` | (string & {});
|
||||
export declare function filter(node: HTMLElement, filterName: FilterName): {
|
||||
update(newArgs: FilterName): void;
|
||||
} | undefined;
|
||||
export {};
|
16
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/filter.js
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
// Action: Filter
|
||||
export function filter(node, filterName) {
|
||||
// Return if no filterName provided
|
||||
if (filterName === undefined)
|
||||
return;
|
||||
const applyFilter = () => {
|
||||
node.setAttribute('style', `filter: url("${filterName}")`);
|
||||
};
|
||||
applyFilter();
|
||||
return {
|
||||
update(newArgs) {
|
||||
filterName = newArgs;
|
||||
applyFilter();
|
||||
}
|
||||
};
|
||||
}
|
13
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Apollo.svelte
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
<!-- Apollo: `filter: url(#Apollo)` -->
|
||||
<svg id="svg-filter-apollo" class="filter absolute -left-full w-0 h-0">
|
||||
<filter id="Apollo" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feColorMatrix
|
||||
values="0.8 0.6 -0.4 0.1 0,
|
||||
0 1.2 0.05 0 0,
|
||||
0 -1 3 0.02 0,
|
||||
0 0 0 50 0"
|
||||
result="final"
|
||||
in="SourceGraphic"
|
||||
/>
|
||||
</filter>
|
||||
</svg>
|
After Width: | Height: | Size: 402 B |
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Apollo.svelte.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/** @typedef {typeof __propDef.props} ApolloProps */
|
||||
/** @typedef {typeof __propDef.events} ApolloEvents */
|
||||
/** @typedef {typeof __propDef.slots} ApolloSlots */
|
||||
export default class Apollo extends SvelteComponentTyped<{
|
||||
[x: string]: never;
|
||||
}, {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
}, {}> {
|
||||
}
|
||||
export type ApolloProps = typeof __propDef.props;
|
||||
export type ApolloEvents = typeof __propDef.events;
|
||||
export type ApolloSlots = typeof __propDef.slots;
|
||||
import { SvelteComponentTyped } from "svelte";
|
||||
declare const __propDef: {
|
||||
props: {
|
||||
[x: string]: never;
|
||||
};
|
||||
events: {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
};
|
||||
slots: {};
|
||||
};
|
||||
export {};
|
12
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/BlueNight.svelte
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
<!-- BlueNight: `filter: url(#BlueNight)` -->
|
||||
<svg id="svg-filter-bluenight" class="filter absolute -left-full w-0 h-0">
|
||||
<filter id="BlueNight" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="1.000 0.000 0.000 0.000 0.000
|
||||
0.000 1.000 0.000 0.000 0.05
|
||||
0.000 0.000 1.000 0.000 0.400
|
||||
0.000 0.000 0.000 1.000 0.000"
|
||||
/>
|
||||
</filter>
|
||||
</svg>
|
After Width: | Height: | Size: 496 B |
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/BlueNight.svelte.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/** @typedef {typeof __propDef.props} BlueNightProps */
|
||||
/** @typedef {typeof __propDef.events} BlueNightEvents */
|
||||
/** @typedef {typeof __propDef.slots} BlueNightSlots */
|
||||
export default class BlueNight extends SvelteComponentTyped<{
|
||||
[x: string]: never;
|
||||
}, {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
}, {}> {
|
||||
}
|
||||
export type BlueNightProps = typeof __propDef.props;
|
||||
export type BlueNightEvents = typeof __propDef.events;
|
||||
export type BlueNightSlots = typeof __propDef.slots;
|
||||
import { SvelteComponentTyped } from "svelte";
|
||||
declare const __propDef: {
|
||||
props: {
|
||||
[x: string]: never;
|
||||
};
|
||||
events: {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
};
|
||||
slots: {};
|
||||
};
|
||||
export {};
|
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Emerald.svelte
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
<!-- Emerald: `filter: url(#Emerald)` -->
|
||||
<svg id="svg-filter-emerald" class="filter absolute -left-full w-0 h-0">
|
||||
<filter id="Emerald" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<!-- RGB, RGB, RGB, Opacity -->
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
in="SourceGraphic"
|
||||
result="colormatrix"
|
||||
values="
|
||||
.16 .185 .129 0 0
|
||||
.16 .185 .129 0 0
|
||||
.16 .185 .129 0 0
|
||||
0 0 0 0.33 0"
|
||||
/>
|
||||
<feComponentTransfer in="colormatrix" result="componentTransfer">
|
||||
<feFuncR type="table" tableValues="0.03 0.9" />
|
||||
<feFuncG type="table" tableValues="0.57 1" />
|
||||
<feFuncB type="table" tableValues="0.49 0.53" />
|
||||
<feFuncA type="table" tableValues="0 1" />
|
||||
</feComponentTransfer>
|
||||
<feBlend mode="normal" in="componentTransfer" in2="SourceGraphic" result="blend" />
|
||||
</filter>
|
||||
</svg>
|
After Width: | Height: | Size: 879 B |
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Emerald.svelte.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/** @typedef {typeof __propDef.props} EmeraldProps */
|
||||
/** @typedef {typeof __propDef.events} EmeraldEvents */
|
||||
/** @typedef {typeof __propDef.slots} EmeraldSlots */
|
||||
export default class Emerald extends SvelteComponentTyped<{
|
||||
[x: string]: never;
|
||||
}, {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
}, {}> {
|
||||
}
|
||||
export type EmeraldProps = typeof __propDef.props;
|
||||
export type EmeraldEvents = typeof __propDef.events;
|
||||
export type EmeraldSlots = typeof __propDef.slots;
|
||||
import { SvelteComponentTyped } from "svelte";
|
||||
declare const __propDef: {
|
||||
props: {
|
||||
[x: string]: never;
|
||||
};
|
||||
events: {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
};
|
||||
slots: {};
|
||||
};
|
||||
export {};
|
27
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/GreenFall.svelte
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
<!-- GreenFall: `filter: url(#GreenFall)` -->
|
||||
<svg id="svg-filter-greenfall" class="filter absolute -left-full w-0 h-0">
|
||||
<filter
|
||||
id="GreenFall"
|
||||
x="-20%"
|
||||
y="-20%"
|
||||
width="140%"
|
||||
height="140%"
|
||||
filterUnits="objectBoundingBox"
|
||||
primitiveUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="linearRGB"
|
||||
>
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0.5 -0.4 0.3332 0 0
|
||||
0 0.4 0.3 0 0
|
||||
0 0 0.5 0 0
|
||||
0 0 0 500 -20"
|
||||
x="0%"
|
||||
y="0%"
|
||||
width="100%"
|
||||
height="100%"
|
||||
in="SourceGraphic"
|
||||
result="colormatrix"
|
||||
/>
|
||||
</filter>
|
||||
</svg>
|
After Width: | Height: | Size: 556 B |
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/GreenFall.svelte.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/** @typedef {typeof __propDef.props} GreenFallProps */
|
||||
/** @typedef {typeof __propDef.events} GreenFallEvents */
|
||||
/** @typedef {typeof __propDef.slots} GreenFallSlots */
|
||||
export default class GreenFall extends SvelteComponentTyped<{
|
||||
[x: string]: never;
|
||||
}, {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
}, {}> {
|
||||
}
|
||||
export type GreenFallProps = typeof __propDef.props;
|
||||
export type GreenFallEvents = typeof __propDef.events;
|
||||
export type GreenFallSlots = typeof __propDef.slots;
|
||||
import { SvelteComponentTyped } from "svelte";
|
||||
declare const __propDef: {
|
||||
props: {
|
||||
[x: string]: never;
|
||||
};
|
||||
events: {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
};
|
||||
slots: {};
|
||||
};
|
||||
export {};
|
17
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Noir.svelte
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
<!-- Noir: `filter: url(#Noir)` -->
|
||||
<svg id="svg-filter-noir" class="filter absolute -left-full w-0 h-0">
|
||||
<filter
|
||||
id="Noir"
|
||||
x="-20%"
|
||||
y="-20%"
|
||||
width="140%"
|
||||
height="140%"
|
||||
filterUnits="objectBoundingBox"
|
||||
primitiveUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="linearRGB"
|
||||
>
|
||||
<feColorMatrix type="saturate" values="0" x="0%" y="0%" width="100%" height="100%" in="SourceGraphic" result="colormatrix1" />
|
||||
<feBlend mode="lighten" x="0%" y="0%" width="100%" height="100%" in="colormatrix1" in2="colormatrix1" result="blend" />
|
||||
<feBlend mode="multiply" x="0%" y="0%" width="100%" height="100%" in="colormatrix1" in2="diffuseLighting" result="blend1" />
|
||||
</filter>
|
||||
</svg>
|
After Width: | Height: | Size: 689 B |
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Noir.svelte.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/** @typedef {typeof __propDef.props} NoirProps */
|
||||
/** @typedef {typeof __propDef.events} NoirEvents */
|
||||
/** @typedef {typeof __propDef.slots} NoirSlots */
|
||||
export default class Noir extends SvelteComponentTyped<{
|
||||
[x: string]: never;
|
||||
}, {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
}, {}> {
|
||||
}
|
||||
export type NoirProps = typeof __propDef.props;
|
||||
export type NoirEvents = typeof __propDef.events;
|
||||
export type NoirSlots = typeof __propDef.slots;
|
||||
import { SvelteComponentTyped } from "svelte";
|
||||
declare const __propDef: {
|
||||
props: {
|
||||
[x: string]: never;
|
||||
};
|
||||
events: {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
};
|
||||
slots: {};
|
||||
};
|
||||
export {};
|
19
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/NoirLight.svelte
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
<!-- NoirLight: `filter: url(#NoirLight)` -->
|
||||
<svg id="svg-filter-noirlight" class="filter absolute -left-full w-0 h-0">
|
||||
<filter
|
||||
id="NoirLight"
|
||||
x="-20%"
|
||||
y="-20%"
|
||||
width="140%"
|
||||
height="140%"
|
||||
filterUnits="objectBoundingBox"
|
||||
primitiveUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="linearRGB"
|
||||
>
|
||||
<feColorMatrix type="saturate" values="0" x="0%" y="0%" width="100%" height="100%" in="SourceGraphic" result="colormatrix2" />
|
||||
<feBlend mode="saturation" x="0%" y="0%" width="100%" height="100%" in="SourceGraphic" in2="colormatrix2" result="blend2" />
|
||||
<feBlend mode="screen" x="0%" y="0%" width="100%" height="100%" in="colormatrix2" in2="blend2" result="blend3" />
|
||||
<feColorMatrix type="luminanceToAlpha" x="0%" y="0%" width="100%" height="100%" in="blend3" result="colormatrix3" />
|
||||
<feBlend mode="exclusion" x="0%" y="0%" width="100%" height="100%" in="blend3" in2="colormatrix3" result="blend5" />
|
||||
</filter>
|
||||
</svg>
|
After Width: | Height: | Size: 941 B |
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/NoirLight.svelte.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/** @typedef {typeof __propDef.props} NoirLightProps */
|
||||
/** @typedef {typeof __propDef.events} NoirLightEvents */
|
||||
/** @typedef {typeof __propDef.slots} NoirLightSlots */
|
||||
export default class NoirLight extends SvelteComponentTyped<{
|
||||
[x: string]: never;
|
||||
}, {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
}, {}> {
|
||||
}
|
||||
export type NoirLightProps = typeof __propDef.props;
|
||||
export type NoirLightEvents = typeof __propDef.events;
|
||||
export type NoirLightSlots = typeof __propDef.slots;
|
||||
import { SvelteComponentTyped } from "svelte";
|
||||
declare const __propDef: {
|
||||
props: {
|
||||
[x: string]: never;
|
||||
};
|
||||
events: {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
};
|
||||
slots: {};
|
||||
};
|
||||
export {};
|
14
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Rustic.svelte
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
<!-- Rustic: `filter: url(#Rustic)` -->
|
||||
<svg id="svg-filter-rustic" class="filter absolute -left-full w-0 h-0">
|
||||
<filter id="Rustic" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
in="SourceGraphic"
|
||||
result="colormatrix"
|
||||
values="0.39215686274509803 0.39215686274509803 0.39215686274509803 0 0
|
||||
0.3333333333333333 0.3333333333333333 0.3333333333333333 0 0
|
||||
0.30980392156862746 0.30980392156862746 0.30980392156862746 0 0
|
||||
0 0 0 1 0"
|
||||
/>
|
||||
</filter>
|
||||
</svg>
|
After Width: | Height: | Size: 569 B |
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Rustic.svelte.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/** @typedef {typeof __propDef.props} RusticProps */
|
||||
/** @typedef {typeof __propDef.events} RusticEvents */
|
||||
/** @typedef {typeof __propDef.slots} RusticSlots */
|
||||
export default class Rustic extends SvelteComponentTyped<{
|
||||
[x: string]: never;
|
||||
}, {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
}, {}> {
|
||||
}
|
||||
export type RusticProps = typeof __propDef.props;
|
||||
export type RusticEvents = typeof __propDef.events;
|
||||
export type RusticSlots = typeof __propDef.slots;
|
||||
import { SvelteComponentTyped } from "svelte";
|
||||
declare const __propDef: {
|
||||
props: {
|
||||
[x: string]: never;
|
||||
};
|
||||
events: {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
};
|
||||
slots: {};
|
||||
};
|
||||
export {};
|
12
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Summer84.svelte
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
<!-- Summer84: `filter: url(#Summer84)` -->
|
||||
<svg id="svg-filter-summer84" class="filter absolute -left-full w-0 h-0">
|
||||
<filter id="Summer84" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="1.300 0.200 0.000 0.000 0.000
|
||||
0.300 0.600 0.200 0.000 0.000
|
||||
0.200 1.000 0.200 0.000 0.000
|
||||
0.000 0.000 0.000 1.000 0.000"
|
||||
/>
|
||||
</filter>
|
||||
</svg>
|
After Width: | Height: | Size: 448 B |
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/Summer84.svelte.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/** @typedef {typeof __propDef.props} Summer84Props */
|
||||
/** @typedef {typeof __propDef.events} Summer84Events */
|
||||
/** @typedef {typeof __propDef.slots} Summer84Slots */
|
||||
export default class Summer84 extends SvelteComponentTyped<{
|
||||
[x: string]: never;
|
||||
}, {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
}, {}> {
|
||||
}
|
||||
export type Summer84Props = typeof __propDef.props;
|
||||
export type Summer84Events = typeof __propDef.events;
|
||||
export type Summer84Slots = typeof __propDef.slots;
|
||||
import { SvelteComponentTyped } from "svelte";
|
||||
declare const __propDef: {
|
||||
props: {
|
||||
[x: string]: never;
|
||||
};
|
||||
events: {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
};
|
||||
slots: {};
|
||||
};
|
||||
export {};
|
12
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/XPro.svelte
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
<!-- XPro: `filter: url(#XPro)` -->
|
||||
<svg id="svg-filter-xpro" class="filter absolute -left-full w-0 h-0">
|
||||
<filter id="XPro" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="1.70 -0.20 0.00 0.00 0.00
|
||||
0.10 0.800 0.30 0.00 0.00
|
||||
0.20 0.300 0.50 0.00 0.00
|
||||
0.00 0.00 0.00 1.00 0.00"
|
||||
/>
|
||||
</filter>
|
||||
</svg>
|
After Width: | Height: | Size: 460 B |
23
node_modules/@skeletonlabs/skeleton/dist/actions/Filters/svg-filters/XPro.svelte.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
/** @typedef {typeof __propDef.props} XProProps */
|
||||
/** @typedef {typeof __propDef.events} XProEvents */
|
||||
/** @typedef {typeof __propDef.slots} XProSlots */
|
||||
export default class XPro extends SvelteComponentTyped<{
|
||||
[x: string]: never;
|
||||
}, {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
}, {}> {
|
||||
}
|
||||
export type XProProps = typeof __propDef.props;
|
||||
export type XProEvents = typeof __propDef.events;
|
||||
export type XProSlots = typeof __propDef.slots;
|
||||
import { SvelteComponentTyped } from "svelte";
|
||||
declare const __propDef: {
|
||||
props: {
|
||||
[x: string]: never;
|
||||
};
|
||||
events: {
|
||||
[evt: string]: CustomEvent<any>;
|
||||
};
|
||||
slots: {};
|
||||
};
|
||||
export {};
|
4
node_modules/@skeletonlabs/skeleton/dist/actions/FocusTrap/focusTrap.d.ts
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
export declare function focusTrap(node: HTMLElement, enabled: boolean): {
|
||||
update(newArgs: boolean): void;
|
||||
destroy(): void;
|
||||
};
|
65
node_modules/@skeletonlabs/skeleton/dist/actions/FocusTrap/focusTrap.js
generated
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
// Action: Focus Trap
|
||||
export function focusTrap(node, enabled) {
|
||||
const elemWhitelist = 'a[href]:not([tabindex="-1"]), button:not([tabindex="-1"]), input:not([tabindex="-1"]), textarea:not([tabindex="-1"]), select:not([tabindex="-1"]), details:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])';
|
||||
let elemFirst;
|
||||
let elemLast;
|
||||
// When the first element is selected, shift+tab pressed, jump to the last selectable item.
|
||||
function onFirstElemKeydown(e) {
|
||||
if (e.shiftKey && e.code === 'Tab') {
|
||||
e.preventDefault();
|
||||
elemLast.focus();
|
||||
}
|
||||
}
|
||||
// When the last item selected, tab pressed, jump to the first selectable item.
|
||||
function onLastElemKeydown(e) {
|
||||
if (!e.shiftKey && e.code === 'Tab') {
|
||||
e.preventDefault();
|
||||
elemFirst.focus();
|
||||
}
|
||||
}
|
||||
const onScanElements = (fromObserver) => {
|
||||
if (enabled === false)
|
||||
return;
|
||||
// Gather all focusable elements
|
||||
const focusableElems = Array.from(node.querySelectorAll(elemWhitelist));
|
||||
if (focusableElems.length) {
|
||||
// Set first/last focusable elements
|
||||
elemFirst = focusableElems[0];
|
||||
elemLast = focusableElems[focusableElems.length - 1];
|
||||
// Auto-focus first focusable element only when not called from observer
|
||||
if (!fromObserver)
|
||||
elemFirst.focus();
|
||||
// Listen for keydown on first & last element
|
||||
elemFirst.addEventListener('keydown', onFirstElemKeydown);
|
||||
elemLast.addEventListener('keydown', onLastElemKeydown);
|
||||
}
|
||||
};
|
||||
onScanElements(false);
|
||||
function onCleanUp() {
|
||||
if (elemFirst)
|
||||
elemFirst.removeEventListener('keydown', onFirstElemKeydown);
|
||||
if (elemLast)
|
||||
elemLast.removeEventListener('keydown', onLastElemKeydown);
|
||||
}
|
||||
// When children of node are changed (added or removed)
|
||||
const onObservationChange = (mutationRecords, observer) => {
|
||||
if (mutationRecords.length) {
|
||||
onCleanUp();
|
||||
onScanElements(true);
|
||||
}
|
||||
return observer;
|
||||
};
|
||||
const observer = new MutationObserver(onObservationChange);
|
||||
observer.observe(node, { childList: true, subtree: true });
|
||||
// Lifecycle
|
||||
return {
|
||||
update(newArgs) {
|
||||
enabled = newArgs;
|
||||
newArgs ? onScanElements(false) : onCleanUp();
|
||||
},
|
||||
destroy() {
|
||||
onCleanUp();
|
||||
observer.disconnect();
|
||||
}
|
||||
};
|
||||
}
|