🎨 Add new Flux icons: implement multiple reusable icon components (e.g., hand-raised, hand-thumb-up, heart, hashtag, home) with variant support for improved UI consistency.

This commit is contained in:
HolgerHatGarKeineNode
2026-01-23 23:00:02 +01:00
parent 578e4f13fc
commit b30fec150c
792 changed files with 307541 additions and 117 deletions

907
videos/build/129.bundle.js Normal file
View File

@@ -0,0 +1,907 @@
"use strict";
(self["webpackChunkvideos"] = self["webpackChunkvideos"] || []).push([[129],{
/***/ 9129:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
TextureLoader: () => (/* binding */ TextureLoader)
});
;// ./node_modules/three/src/loaders/Cache.js
/**
* @class
* @classdesc A simple caching system, used internally by {@link FileLoader}.
* To enable caching across all loaders that use {@link FileLoader}, add `THREE.Cache.enabled = true.` once in your app.
* @hideconstructor
*/
const Cache = {
/**
* Whether caching is enabled or not.
*
* @static
* @type {boolean}
* @default false
*/
enabled: false,
/**
* A dictionary that holds cached files.
*
* @static
* @type {Object<string,Object>}
*/
files: {},
/**
* Adds a cache entry with a key to reference the file. If this key already
* holds a file, it is overwritten.
*
* @static
* @param {string} key - The key to reference the cached file.
* @param {Object} file - The file to be cached.
*/
add: function ( key, file ) {
if ( this.enabled === false ) return;
// log( 'Cache', 'Adding key:', key );
this.files[ key ] = file;
},
/**
* Gets the cached value for the given key.
*
* @static
* @param {string} key - The key to reference the cached file.
* @return {Object|undefined} The cached file. If the key does not exist `undefined` is returned.
*/
get: function ( key ) {
if ( this.enabled === false ) return;
// log( 'Cache', 'Checking key:', key );
return this.files[ key ];
},
/**
* Removes the cached file associated with the given key.
*
* @static
* @param {string} key - The key to reference the cached file.
*/
remove: function ( key ) {
delete this.files[ key ];
},
/**
* Remove all values from the cache.
*
* @static
*/
clear: function () {
this.files = {};
}
};
;// ./node_modules/three/src/loaders/LoadingManager.js
/**
* Handles and keeps track of loaded and pending data. A default global
* instance of this class is created and used by loaders if not supplied
* manually.
*
* In general that should be sufficient, however there are times when it can
* be useful to have separate loaders - for example if you want to show
* separate loading bars for objects and textures.
*
* ```js
* const manager = new THREE.LoadingManager();
* manager.onLoad = () => console.log( 'Loading complete!' );
*
* const loader1 = new OBJLoader( manager );
* const loader2 = new ColladaLoader( manager );
* ```
*/
class LoadingManager {
/**
* Constructs a new loading manager.
*
* @param {Function} [onLoad] - Executes when all items have been loaded.
* @param {Function} [onProgress] - Executes when single items have been loaded.
* @param {Function} [onError] - Executes when an error occurs.
*/
constructor( onLoad, onProgress, onError ) {
const scope = this;
let isLoading = false;
let itemsLoaded = 0;
let itemsTotal = 0;
let urlModifier = undefined;
const handlers = [];
// Refer to #5689 for the reason why we don't set .onStart
// in the constructor
/**
* Executes when an item starts loading.
*
* @type {Function|undefined}
* @default undefined
*/
this.onStart = undefined;
/**
* Executes when all items have been loaded.
*
* @type {Function|undefined}
* @default undefined
*/
this.onLoad = onLoad;
/**
* Executes when single items have been loaded.
*
* @type {Function|undefined}
* @default undefined
*/
this.onProgress = onProgress;
/**
* Executes when an error occurs.
*
* @type {Function|undefined}
* @default undefined
*/
this.onError = onError;
/**
* Used for aborting ongoing requests in loaders using this manager.
*
* @private
* @type {AbortController | null}
*/
this._abortController = null;
/**
* This should be called by any loader using the manager when the loader
* starts loading an item.
*
* @param {string} url - The URL to load.
*/
this.itemStart = function ( url ) {
itemsTotal ++;
if ( isLoading === false ) {
if ( scope.onStart !== undefined ) {
scope.onStart( url, itemsLoaded, itemsTotal );
}
}
isLoading = true;
};
/**
* This should be called by any loader using the manager when the loader
* ended loading an item.
*
* @param {string} url - The URL of the loaded item.
*/
this.itemEnd = function ( url ) {
itemsLoaded ++;
if ( scope.onProgress !== undefined ) {
scope.onProgress( url, itemsLoaded, itemsTotal );
}
if ( itemsLoaded === itemsTotal ) {
isLoading = false;
if ( scope.onLoad !== undefined ) {
scope.onLoad();
}
}
};
/**
* This should be called by any loader using the manager when the loader
* encounters an error when loading an item.
*
* @param {string} url - The URL of the item that produces an error.
*/
this.itemError = function ( url ) {
if ( scope.onError !== undefined ) {
scope.onError( url );
}
};
/**
* Given a URL, uses the URL modifier callback (if any) and returns a
* resolved URL. If no URL modifier is set, returns the original URL.
*
* @param {string} url - The URL to load.
* @return {string} The resolved URL.
*/
this.resolveURL = function ( url ) {
if ( urlModifier ) {
return urlModifier( url );
}
return url;
};
/**
* If provided, the callback will be passed each resource URL before a
* request is sent. The callback may return the original URL, or a new URL to
* override loading behavior. This behavior can be used to load assets from
* .ZIP files, drag-and-drop APIs, and Data URIs.
*
* ```js
* const blobs = {'fish.gltf': blob1, 'diffuse.png': blob2, 'normal.png': blob3};
*
* const manager = new THREE.LoadingManager();
*
* // Initialize loading manager with URL callback.
* const objectURLs = [];
* manager.setURLModifier( ( url ) => {
*
* url = URL.createObjectURL( blobs[ url ] );
* objectURLs.push( url );
* return url;
*
* } );
*
* // Load as usual, then revoke the blob URLs.
* const loader = new GLTFLoader( manager );
* loader.load( 'fish.gltf', (gltf) => {
*
* scene.add( gltf.scene );
* objectURLs.forEach( ( url ) => URL.revokeObjectURL( url ) );
*
* } );
* ```
*
* @param {function(string):string} transform - URL modifier callback. Called with an URL and must return a resolved URL.
* @return {LoadingManager} A reference to this loading manager.
*/
this.setURLModifier = function ( transform ) {
urlModifier = transform;
return this;
};
/**
* Registers a loader with the given regular expression. Can be used to
* define what loader should be used in order to load specific files. A
* typical use case is to overwrite the default loader for textures.
*
* ```js
* // add handler for TGA textures
* manager.addHandler( /\.tga$/i, new TGALoader() );
* ```
*
* @param {string} regex - A regular expression.
* @param {Loader} loader - A loader that should handle matched cases.
* @return {LoadingManager} A reference to this loading manager.
*/
this.addHandler = function ( regex, loader ) {
handlers.push( regex, loader );
return this;
};
/**
* Removes the loader for the given regular expression.
*
* @param {string} regex - A regular expression.
* @return {LoadingManager} A reference to this loading manager.
*/
this.removeHandler = function ( regex ) {
const index = handlers.indexOf( regex );
if ( index !== - 1 ) {
handlers.splice( index, 2 );
}
return this;
};
/**
* Can be used to retrieve the registered loader for the given file path.
*
* @param {string} file - The file path.
* @return {?Loader} The registered loader. Returns `null` if no loader was found.
*/
this.getHandler = function ( file ) {
for ( let i = 0, l = handlers.length; i < l; i += 2 ) {
const regex = handlers[ i ];
const loader = handlers[ i + 1 ];
if ( regex.global ) regex.lastIndex = 0; // see #17920
if ( regex.test( file ) ) {
return loader;
}
}
return null;
};
/**
* Can be used to abort ongoing loading requests in loaders using this manager.
* The abort only works if the loaders implement {@link Loader#abort} and `AbortSignal.any()`
* is supported in the browser.
*
* @return {LoadingManager} A reference to this loading manager.
*/
this.abort = function () {
this.abortController.abort();
this._abortController = null;
return this;
};
}
// TODO: Revert this back to a single member variable once this issue has been fixed
// https://github.com/cloudflare/workerd/issues/3657
/**
* Used for aborting ongoing requests in loaders using this manager.
*
* @type {AbortController}
*/
get abortController() {
if ( ! this._abortController ) {
this._abortController = new AbortController();
}
return this._abortController;
}
}
/**
* The global default loading manager.
*
* @constant
* @type {LoadingManager}
*/
const DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();
;// ./node_modules/three/src/loaders/Loader.js
/**
* Abstract base class for loaders.
*
* @abstract
*/
class Loader {
/**
* Constructs a new loader.
*
* @param {LoadingManager} [manager] - The loading manager.
*/
constructor( manager ) {
/**
* The loading manager.
*
* @type {LoadingManager}
* @default DefaultLoadingManager
*/
this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;
/**
* The crossOrigin string to implement CORS for loading the url from a
* different domain that allows CORS.
*
* @type {string}
* @default 'anonymous'
*/
this.crossOrigin = 'anonymous';
/**
* Whether the XMLHttpRequest uses credentials.
*
* @type {boolean}
* @default false
*/
this.withCredentials = false;
/**
* The base path from which the asset will be loaded.
*
* @type {string}
*/
this.path = '';
/**
* The base path from which additional resources like textures will be loaded.
*
* @type {string}
*/
this.resourcePath = '';
/**
* The [request header](https://developer.mozilla.org/en-US/docs/Glossary/Request_header)
* used in HTTP request.
*
* @type {Object<string, any>}
*/
this.requestHeader = {};
}
/**
* This method needs to be implemented by all concrete loaders. It holds the
* logic for loading assets from the backend.
*
* @abstract
* @param {string} url - The path/URL of the file to be loaded.
* @param {Function} onLoad - Executed when the loading process has been finished.
* @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.
* @param {onErrorCallback} [onError] - Executed when errors occur.
*/
load( /* url, onLoad, onProgress, onError */ ) {}
/**
* A async version of {@link Loader#load}.
*
* @param {string} url - The path/URL of the file to be loaded.
* @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.
* @return {Promise} A Promise that resolves when the asset has been loaded.
*/
loadAsync( url, onProgress ) {
const scope = this;
return new Promise( function ( resolve, reject ) {
scope.load( url, resolve, onProgress, reject );
} );
}
/**
* This method needs to be implemented by all concrete loaders. It holds the
* logic for parsing the asset into three.js entities.
*
* @abstract
* @param {any} data - The data to parse.
*/
parse( /* data */ ) {}
/**
* Sets the `crossOrigin` String to implement CORS for loading the URL
* from a different domain that allows CORS.
*
* @param {string} crossOrigin - The `crossOrigin` value.
* @return {Loader} A reference to this instance.
*/
setCrossOrigin( crossOrigin ) {
this.crossOrigin = crossOrigin;
return this;
}
/**
* Whether the XMLHttpRequest uses credentials such as cookies, authorization
* headers or TLS client certificates, see [XMLHttpRequest.withCredentials](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials).
*
* Note: This setting has no effect if you are loading files locally or from the same domain.
*
* @param {boolean} value - The `withCredentials` value.
* @return {Loader} A reference to this instance.
*/
setWithCredentials( value ) {
this.withCredentials = value;
return this;
}
/**
* Sets the base path for the asset.
*
* @param {string} path - The base path.
* @return {Loader} A reference to this instance.
*/
setPath( path ) {
this.path = path;
return this;
}
/**
* Sets the base path for dependent resources like textures.
*
* @param {string} resourcePath - The resource path.
* @return {Loader} A reference to this instance.
*/
setResourcePath( resourcePath ) {
this.resourcePath = resourcePath;
return this;
}
/**
* Sets the given request header.
*
* @param {Object} requestHeader - A [request header](https://developer.mozilla.org/en-US/docs/Glossary/Request_header)
* for configuring the HTTP request.
* @return {Loader} A reference to this instance.
*/
setRequestHeader( requestHeader ) {
this.requestHeader = requestHeader;
return this;
}
/**
* This method can be implemented in loaders for aborting ongoing requests.
*
* @abstract
* @return {Loader} A reference to this instance.
*/
abort() {
return this;
}
}
/**
* Callback for onProgress in loaders.
*
* @callback onProgressCallback
* @param {ProgressEvent} event - An instance of `ProgressEvent` that represents the current loading status.
*/
/**
* Callback for onError in loaders.
*
* @callback onErrorCallback
* @param {Error} error - The error which occurred during the loading process.
*/
/**
* The default material name that is used by loaders
* when creating materials for loaded 3D objects.
*
* Note: Not all loaders might honor this setting.
*
* @static
* @type {string}
* @default '__DEFAULT'
*/
Loader.DEFAULT_MATERIAL_NAME = '__DEFAULT';
// EXTERNAL MODULE: ./node_modules/three/src/utils.js
var utils = __webpack_require__(8108);
;// ./node_modules/three/src/loaders/ImageLoader.js
const _loading = new WeakMap();
/**
* A loader for loading images. The class loads images with the HTML `Image` API.
*
* ```js
* const loader = new THREE.ImageLoader();
* const image = await loader.loadAsync( 'image.png' );
* ```
* Please note that `ImageLoader` has dropped support for progress
* events in `r84`. For an `ImageLoader` that supports progress events, see
* [this thread](https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639).
*
* @augments Loader
*/
class ImageLoader extends Loader {
/**
* Constructs a new image loader.
*
* @param {LoadingManager} [manager] - The loading manager.
*/
constructor( manager ) {
super( manager );
}
/**
* Starts loading from the given URL and passes the loaded image
* to the `onLoad()` callback. The method also returns a new `Image` object which can
* directly be used for texture creation. If you do it this way, the texture
* may pop up in your scene once the respective loading process is finished.
*
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
* @param {function(Image)} onLoad - Executed when the loading process has been finished.
* @param {onProgressCallback} onProgress - Unsupported in this loader.
* @param {onErrorCallback} onError - Executed when errors occur.
* @return {Image} The image.
*/
load( url, onLoad, onProgress, onError ) {
if ( this.path !== undefined ) url = this.path + url;
url = this.manager.resolveURL( url );
const scope = this;
const cached = Cache.get( `image:${url}` );
if ( cached !== undefined ) {
if ( cached.complete === true ) {
scope.manager.itemStart( url );
setTimeout( function () {
if ( onLoad ) onLoad( cached );
scope.manager.itemEnd( url );
}, 0 );
} else {
let arr = _loading.get( cached );
if ( arr === undefined ) {
arr = [];
_loading.set( cached, arr );
}
arr.push( { onLoad, onError } );
}
return cached;
}
const image = (0,utils/* createElementNS */.qq)( 'img' );
function onImageLoad() {
removeEventListeners();
if ( onLoad ) onLoad( this );
//
const callbacks = _loading.get( this ) || [];
for ( let i = 0; i < callbacks.length; i ++ ) {
const callback = callbacks[ i ];
if ( callback.onLoad ) callback.onLoad( this );
}
_loading.delete( this );
scope.manager.itemEnd( url );
}
function onImageError( event ) {
removeEventListeners();
if ( onError ) onError( event );
Cache.remove( `image:${url}` );
//
const callbacks = _loading.get( this ) || [];
for ( let i = 0; i < callbacks.length; i ++ ) {
const callback = callbacks[ i ];
if ( callback.onError ) callback.onError( event );
}
_loading.delete( this );
scope.manager.itemError( url );
scope.manager.itemEnd( url );
}
function removeEventListeners() {
image.removeEventListener( 'load', onImageLoad, false );
image.removeEventListener( 'error', onImageError, false );
}
image.addEventListener( 'load', onImageLoad, false );
image.addEventListener( 'error', onImageError, false );
if ( url.slice( 0, 5 ) !== 'data:' ) {
if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;
}
Cache.add( `image:${url}`, image );
scope.manager.itemStart( url );
image.src = url;
return image;
}
}
// EXTERNAL MODULE: ./node_modules/three/src/textures/Texture.js + 9 modules
var Texture = __webpack_require__(8280);
;// ./node_modules/three/src/loaders/TextureLoader.js
/**
* Class for loading textures. Images are internally
* loaded via {@link ImageLoader}.
*
* ```js
* const loader = new THREE.TextureLoader();
* const texture = await loader.loadAsync( 'textures/land_ocean_ice_cloud_2048.jpg' );
*
* const material = new THREE.MeshBasicMaterial( { map:texture } );
* ```
* Please note that `TextureLoader` has dropped support for progress
* events in `r84`. For a `TextureLoader` that supports progress events, see
* [this thread](https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145).
*
* @augments Loader
*/
class TextureLoader extends Loader {
/**
* Constructs a new texture loader.
*
* @param {LoadingManager} [manager] - The loading manager.
*/
constructor( manager ) {
super( manager );
}
/**
* Starts loading from the given URL and pass the fully loaded texture
* to the `onLoad()` callback. The method also returns a new texture object which can
* directly be used for material creation. If you do it this way, the texture
* may pop up in your scene once the respective loading process is finished.
*
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
* @param {function(Texture)} onLoad - Executed when the loading process has been finished.
* @param {onProgressCallback} onProgress - Unsupported in this loader.
* @param {onErrorCallback} onError - Executed when errors occur.
* @return {Texture} The texture.
*/
load( url, onLoad, onProgress, onError ) {
const texture = new Texture/* Texture */.g();
const loader = new ImageLoader( this.manager );
loader.setCrossOrigin( this.crossOrigin );
loader.setPath( this.path );
loader.load( url, function ( image ) {
texture.image = image;
texture.needsUpdate = true;
if ( onLoad !== undefined ) {
onLoad( texture );
}
}, onProgress, onError );
return texture;
}
}
/***/ })
}]);
//# sourceMappingURL=129.bundle.js.map

File diff suppressed because one or more lines are too long

7942
videos/build/280.bundle.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

4129
videos/build/476.bundle.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

102325
videos/build/537.bundle.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

145
videos/build/702.bundle.js Normal file
View File

@@ -0,0 +1,145 @@
"use strict";
(self["webpackChunkvideos"] = self["webpackChunkvideos"] || []).push([[702],{
/***/ 702:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ VideoTexture: () => (/* binding */ VideoTexture)
/* harmony export */ });
/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9128);
/* harmony import */ var _Texture_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8280);
/**
* A texture for use with a video.
*
* ```js
* // assuming you have created a HTML video element with id="video"
* const video = document.getElementById( 'video' );
* const texture = new THREE.VideoTexture( video );
* ```
*
* Note: When using video textures with {@link WebGPURenderer}, {@link Texture#colorSpace} must be
* set to THREE.SRGBColorSpace.
*
* Note: After the initial use of a texture, its dimensions, format, and type
* cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.
*
* @augments Texture
*/
class VideoTexture extends _Texture_js__WEBPACK_IMPORTED_MODULE_0__/* .Texture */ .g {
/**
* Constructs a new video texture.
*
* @param {HTMLVideoElement} video - The video element to use as a data source for the texture.
* @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
* @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
* @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
* @param {number} [magFilter=LinearFilter] - The mag filter value.
* @param {number} [minFilter=LinearFilter] - The min filter value.
* @param {number} [format=RGBAFormat] - The texture format.
* @param {number} [type=UnsignedByteType] - The texture type.
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
*/
constructor( video, mapping, wrapS, wrapT, magFilter = _constants_js__WEBPACK_IMPORTED_MODULE_1__/* .LinearFilter */ .k6q, minFilter = _constants_js__WEBPACK_IMPORTED_MODULE_1__/* .LinearFilter */ .k6q, format, type, anisotropy ) {
super( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
/**
* This flag can be used for type testing.
*
* @type {boolean}
* @readonly
* @default true
*/
this.isVideoTexture = true;
/**
* Whether to generate mipmaps (if possible) for a texture.
*
* Overwritten and set to `false` by default.
*
* @type {boolean}
* @default false
*/
this.generateMipmaps = false;
/**
* The video frame request callback identifier, which is a positive integer.
*
* Value of 0 represents no scheduled rVFC.
*
* @private
* @type {number}
*/
this._requestVideoFrameCallbackId = 0;
const scope = this;
function updateVideo() {
scope.needsUpdate = true;
scope._requestVideoFrameCallbackId = video.requestVideoFrameCallback( updateVideo );
}
if ( 'requestVideoFrameCallback' in video ) {
this._requestVideoFrameCallbackId = video.requestVideoFrameCallback( updateVideo );
}
}
clone() {
return new this.constructor( this.image ).copy( this );
}
/**
* This method is called automatically by the renderer and sets {@link Texture#needsUpdate}
* to `true` every time a new frame is available.
*
* Only relevant if `requestVideoFrameCallback` is not supported in the browser.
*/
update() {
const video = this.image;
const hasVideoFrameCallback = 'requestVideoFrameCallback' in video;
if ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {
this.needsUpdate = true;
}
}
dispose() {
if ( this._requestVideoFrameCallbackId !== 0 ) {
this.source.data.cancelVideoFrameCallback( this._requestVideoFrameCallbackId );
this._requestVideoFrameCallbackId = 0;
}
super.dispose();
}
}
/***/ })
}]);
//# sourceMappingURL=702.bundle.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"702.bundle.js","mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./node_modules/three/src/textures/VideoTexture.js"],"sourcesContent":["import { LinearFilter } from '../constants.js';\nimport { Texture } from './Texture.js';\n\n/**\n * A texture for use with a video.\n *\n * ```js\n * // assuming you have created a HTML video element with id=\"video\"\n * const video = document.getElementById( 'video' );\n * const texture = new THREE.VideoTexture( video );\n * ```\n *\n * Note: When using video textures with {@link WebGPURenderer}, {@link Texture#colorSpace} must be\n * set to THREE.SRGBColorSpace.\n *\n * Note: After the initial use of a texture, its dimensions, format, and type\n * cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.\n *\n * @augments Texture\n */\nclass VideoTexture extends Texture {\n\n\t/**\n\t * Constructs a new video texture.\n\t *\n\t * @param {HTMLVideoElement} video - The video element to use as a data source for the texture.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The texture format.\n\t * @param {number} [type=UnsignedByteType] - The texture type.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.\n\t */\n\tconstructor( video, mapping, wrapS, wrapT, magFilter = LinearFilter, minFilter = LinearFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isVideoTexture = true;\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Overwritten and set to `false` by default.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.generateMipmaps = false;\n\n\t\t/**\n\t\t * The video frame request callback identifier, which is a positive integer.\n\t\t *\n\t\t * Value of 0 represents no scheduled rVFC.\n\t\t *\n\t\t * @private\n\t\t * @type {number}\n\t\t */\n\t\tthis._requestVideoFrameCallbackId = 0;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tscope._requestVideoFrameCallbackId = video.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tthis._requestVideoFrameCallbackId = video.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\t/**\n\t * This method is called automatically by the renderer and sets {@link Texture#needsUpdate}\n\t * to `true` every time a new frame is available.\n\t *\n\t * Only relevant if `requestVideoFrameCallback` is not supported in the browser.\n\t */\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this._requestVideoFrameCallbackId !== 0 ) {\n\n\t\t\tthis.source.data.cancelVideoFrameCallback( this._requestVideoFrameCallbackId );\n\n\t\t\tthis._requestVideoFrameCallbackId = 0;\n\n\t\t}\n\n\t\tsuper.dispose();\n\n\t}\n\n}\n\nexport { VideoTexture };\n"],"names":[],"sourceRoot":""}

View File

@@ -0,0 +1,64 @@
"use strict";
(self["webpackChunkvideos"] = self["webpackChunkvideos"] || []).push([[761],{
/***/ 761:
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ZodZypesInternals: () => (/* binding */ ZodZypesInternals),
/* harmony export */ zColor: () => (/* binding */ zColor),
/* harmony export */ zMatrix: () => (/* binding */ zMatrix),
/* harmony export */ zTextarea: () => (/* binding */ zTextarea)
/* harmony export */ });
/* harmony import */ var remotion_no_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9382);
/* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4476);
// src/z-color.ts
var REMOTION_COLOR_BRAND = "__remotion-color";
var parseColor = (value) => {
const colored = remotion_no_react__WEBPACK_IMPORTED_MODULE_0__.NoReactInternals.processColor(value).toString(16).padStart(8, "0");
const opacity = parseInt(colored.slice(0, 2), 16);
const r = parseInt(colored.slice(2, 4), 16);
const g = parseInt(colored.slice(4, 6), 16);
const b = parseInt(colored.slice(6, 8), 16);
return { a: opacity, r, g, b };
};
var zColor = () => zod__WEBPACK_IMPORTED_MODULE_1__.z.string().refine((value) => {
try {
parseColor(value);
return true;
} catch {
return false;
}
}, { message: "Invalid color" }).describe(REMOTION_COLOR_BRAND);
// src/z-matrix.ts
var REMOTION_MATRIX_BRAND = "__remotion-matrix";
var zMatrix = () => zod__WEBPACK_IMPORTED_MODULE_1__.z.array(zod__WEBPACK_IMPORTED_MODULE_1__.z.number().step(0.01)).refine((value) => {
const count = value.length;
const root = Math.sqrt(count);
return Number.isInteger(root) && root > 0;
}, { message: "Invalid matrix, must be a square matrix" }).describe(REMOTION_MATRIX_BRAND);
// src/z-textarea.ts
var REMOTION_TEXTAREA_BRAND = "__remotion-textarea";
var zTextarea = () => zod__WEBPACK_IMPORTED_MODULE_1__.z.string().describe(REMOTION_TEXTAREA_BRAND);
// src/index.ts
var ZodZypesInternals = {
parseColor,
REMOTION_COLOR_BRAND,
REMOTION_TEXTAREA_BRAND,
REMOTION_MATRIX_BRAND
};
/***/ })
}]);
//# sourceMappingURL=761.bundle.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"761.bundle.js","mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA","sources":["./node_modules/@remotion/zod-types/dist/esm/index.mjs"],"sourcesContent":["// src/z-color.ts\nimport { NoReactInternals } from \"remotion/no-react\";\nimport { z } from \"zod\";\nvar REMOTION_COLOR_BRAND = \"__remotion-color\";\nvar parseColor = (value) => {\n const colored = NoReactInternals.processColor(value).toString(16).padStart(8, \"0\");\n const opacity = parseInt(colored.slice(0, 2), 16);\n const r = parseInt(colored.slice(2, 4), 16);\n const g = parseInt(colored.slice(4, 6), 16);\n const b = parseInt(colored.slice(6, 8), 16);\n return { a: opacity, r, g, b };\n};\nvar zColor = () => z.string().refine((value) => {\n try {\n parseColor(value);\n return true;\n } catch {\n return false;\n }\n}, { message: \"Invalid color\" }).describe(REMOTION_COLOR_BRAND);\n\n// src/z-matrix.ts\nimport { z as z2 } from \"zod\";\nvar REMOTION_MATRIX_BRAND = \"__remotion-matrix\";\nvar zMatrix = () => z2.array(z2.number().step(0.01)).refine((value) => {\n const count = value.length;\n const root = Math.sqrt(count);\n return Number.isInteger(root) && root > 0;\n}, { message: \"Invalid matrix, must be a square matrix\" }).describe(REMOTION_MATRIX_BRAND);\n\n// src/z-textarea.ts\nimport { z as z3 } from \"zod\";\nvar REMOTION_TEXTAREA_BRAND = \"__remotion-textarea\";\nvar zTextarea = () => z3.string().describe(REMOTION_TEXTAREA_BRAND);\n\n// src/index.ts\nvar ZodZypesInternals = {\n parseColor,\n REMOTION_COLOR_BRAND,\n REMOTION_TEXTAREA_BRAND,\n REMOTION_MATRIX_BRAND\n};\nexport {\n zTextarea,\n zMatrix,\n zColor,\n ZodZypesInternals\n};\n"],"names":[],"sourceRoot":""}

142597
videos/build/bundle.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
videos/build/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

48
videos/build/index.html Normal file
View File

@@ -0,0 +1,48 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link id="__remotion_favicon" rel="icon" type="image/png" href="/favicon.ico" />
<title>Remotion Bundle</title>
</head>
<body>
<script>window.remotion_numberOfAudioTags = 0;</script>
<script>window.remotion_audioLatencyHint = "interactive";</script>
<script>window.remotion_staticBase = "/public";</script>
<script>window.remotion_editorName = null;</script>
<script>window.remotion_projectName = "videos";</script>
<script>window.remotion_publicPath = "/";</script>
<script>window.remotion_audioEnabled = true;</script>
<script>window.remotion_videoEnabled = true;</script>
<script>window.remotion_renderDefaults = {"darkMode":false,"jpegQuality":80,"scale":1,"logLevel":"info","codec":"h264","concurrency":8,"maxConcurrency":24,"minConcurrency":1,"stillImageFormat":"png","videoImageFormat":"jpeg","muted":false,"enforceAudioTrack":false,"proResProfile":null,"x264Preset":"medium","pixelFormat":"yuv420p","audioBitrate":null,"videoBitrate":null,"encodingBufferSize":null,"encodingMaxRate":null,"everyNthFrame":1,"delayRenderTimeout":30000,"audioCodec":null,"disableWebSecurity":false,"headless":true,"ignoreCertificateErrors":false,"openGlRenderer":null,"offthreadVideoCacheSizeInBytes":null,"offthreadVideoThreads":null,"colorSpace":"default","multiProcessOnLinux":true,"userAgent":null,"repro":false,"numberOfGifLoops":null,"beepOnFinish":false,"forSeamlessAacConcatenation":false,"hardwareAcceleration":"disable","chromeMode":"headless-shell","mediaCacheSizeInBytes":null,"publicLicenseKey":null};</script>
<script>window.remotion_cwd = "/var/home/user/Code/einundzwanzig-verein/videos";</script>
<script>window.remotion_studioServerCommand = null;</script>
<script>window.remotion_gitSource = {"name":"einundzwanzig-nostr","org":"HolgerHatGarKeineNode","ref":"master","type":"github","relativeFromGitRoot":"videos"};</script>
<script>window.remotion_staticFiles = [{"name":"einundzwanzig-horizontal-inverted.svg","lastModified":1769196231093,"sizeInBytes":6090,"src":"/public/einundzwanzig-horizontal-inverted.svg"},{"name":"einundzwanzig-square-inverted.svg","lastModified":1769196624098,"sizeInBytes":8610,"src":"/public/einundzwanzig-square-inverted.svg"},{"name":"einundzwanzig-wallpaper.png","lastModified":1769196231092,"sizeInBytes":941531,"src":"/public/einundzwanzig-wallpaper.png"},{"name":"music/background-music.mp3","lastModified":1752070071240,"sizeInBytes":3129617,"src":"/public/music/background-music.mp3"},{"name":"music/README.md","lastModified":1769197256953,"sizeInBytes":197,"src":"/public/music/README.md"},{"name":"sfx/badge-appear.mp3","lastModified":1769198255659,"sizeInBytes":17633,"src":"/public/sfx/badge-appear.mp3"},{"name":"sfx/button-click.mp3","lastModified":1769197951358,"sizeInBytes":3177,"src":"/public/sfx/button-click.mp3"},{"name":"sfx/button-hover.mp3","lastModified":1769197951448,"sizeInBytes":6939,"src":"/public/sfx/button-hover.mp3"},{"name":"sfx/card-slide.mp3","lastModified":1769197968932,"sizeInBytes":7566,"src":"/public/sfx/card-slide.mp3"},{"name":"sfx/checkmark-pop.mp3","lastModified":1769198256021,"sizeInBytes":11328,"src":"/public/sfx/checkmark-pop.mp3"},{"name":"sfx/final-chime.mp3","lastModified":1769198291390,"sizeInBytes":5058,"src":"/public/sfx/final-chime.mp3"},{"name":"sfx/logo-reveal.mp3","lastModified":1769197968851,"sizeInBytes":4431,"src":"/public/sfx/logo-reveal.mp3"},{"name":"sfx/logo-whoosh.mp3","lastModified":1769197968765,"sizeInBytes":127355,"src":"/public/sfx/logo-whoosh.mp3"},{"name":"sfx/outro-entrance.mp3","lastModified":1769198264645,"sizeInBytes":127355,"src":"/public/sfx/outro-entrance.mp3"},{"name":"sfx/README.md","lastModified":1769197256954,"sizeInBytes":422,"src":"/public/sfx/README.md"},{"name":"sfx/slide-in.mp3","lastModified":1769198290554,"sizeInBytes":10701,"src":"/public/sfx/slide-in.mp3"},{"name":"sfx/success-chime.mp3","lastModified":1769197951550,"sizeInBytes":14462,"src":"/public/sfx/success-chime.mp3"},{"name":"sfx/success-fanfare.mp3","lastModified":1769198255333,"sizeInBytes":65152,"src":"/public/sfx/success-fanfare.mp3"},{"name":"sfx/typing.mp3","lastModified":1769198252472,"sizeInBytes":291051,"src":"/public/sfx/typing.mp3"},{"name":"sfx/ui-appear.mp3","lastModified":1769197969020,"sizeInBytes":4431,"src":"/public/sfx/ui-appear.mp3"},{"name":"sfx/url-emphasis.mp3","lastModified":1769198290984,"sizeInBytes":5058,"src":"/public/sfx/url-emphasis.mp3"}]</script>
<script>window.remotion_installedPackages = null</script>
<script>window.remotion_packageManager = "unknown"</script>
<script>window.remotion_publicFolderExists = "/public";</script>
<script>
window.siteVersion = '11';
window.remotion_version = '4.0.409';
</script>
<div id="video-container"></div>
<div id="__remotion-studio-container"></div>
<div id="menuportal-0"></div>
<div id="menuportal-1"></div>
<div id="menuportal-2"></div>
<div id="menuportal-3"></div>
<div id="menuportal-4"></div>
<div id="menuportal-5"></div>
<div id="remotion-error-overlay"></div>
<div id="server-disconnected-overlay"></div>
<script src="/bundle.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 KiB

View File

@@ -0,0 +1,8 @@
# Background Music
Place your background music file here:
- `background-music.mp3`
Recommended: 40-60 seconds, loop-friendly, tech/crypto theme
See AUDIO_GUIDE.md for download sources and tips.

Binary file not shown.

View File

@@ -0,0 +1,22 @@
# Sound Effects
Place the following sound effect files here:
## Required Files:
- logo-whoosh.mp3
- logo-reveal.mp3
- card-slide.mp3
- ui-appear.mp3
- typing.mp3
- slide-in.mp3
- button-hover.mp3
- button-click.mp3
- success-chime.mp3
- success-fanfare.mp3
- badge-appear.mp3
- checkmark-pop.mp3
- outro-entrance.mp3
- url-emphasis.mp3
- final-chime.mp3
See AUDIO_GUIDE.md for detailed descriptions and download links.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.