@5even7/dlc-ui 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -3
- package/README.md +25 -22
- package/dist/capsule.cjs +42 -33
- package/dist/capsule.mjs +51 -56
- package/dist/color.cjs +18 -20
- package/dist/color.mjs +24 -40
- package/dist/index.cjs +64 -40
- package/dist/index.mjs +95 -99
- package/dist/index.umd.js +64 -40
- package/dist/index.umd.min.js +1 -1
- package/dist/progress.cjs +38 -20
- package/dist/progress.mjs +53 -55
- package/dist/vue2.cjs +67 -50
- package/dist/vue2.mjs +113 -120
- package/dist/vue3.cjs +67 -50
- package/dist/vue3.mjs +113 -120
- package/package.json +1 -1
- package/types/index.d.ts +37 -36
package/dist/index.umd.js
CHANGED
|
@@ -324,7 +324,7 @@
|
|
|
324
324
|
var CAPSULE_PRESETS = [{
|
|
325
325
|
id: 'original',
|
|
326
326
|
code: 'NC-01',
|
|
327
|
-
name: '
|
|
327
|
+
name: '初光',
|
|
328
328
|
group: 'warm',
|
|
329
329
|
seed: 1.7,
|
|
330
330
|
speed: 0.5,
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
}, {
|
|
333
333
|
id: 'ocean',
|
|
334
334
|
code: 'NC-02',
|
|
335
|
-
name: '
|
|
335
|
+
name: '沧溟',
|
|
336
336
|
group: 'cold',
|
|
337
337
|
seed: 8.2,
|
|
338
338
|
speed: 0.48,
|
|
@@ -340,7 +340,7 @@
|
|
|
340
340
|
}, {
|
|
341
341
|
id: 'klein',
|
|
342
342
|
code: 'NC-03',
|
|
343
|
-
name: '
|
|
343
|
+
name: '玄夜',
|
|
344
344
|
group: 'cold',
|
|
345
345
|
seed: 14.1,
|
|
346
346
|
speed: 0.49,
|
|
@@ -348,7 +348,7 @@
|
|
|
348
348
|
}, {
|
|
349
349
|
id: 'ultraviolet',
|
|
350
350
|
code: 'NC-04',
|
|
351
|
-
name: '
|
|
351
|
+
name: '紫霄',
|
|
352
352
|
group: 'cold',
|
|
353
353
|
seed: 23.4,
|
|
354
354
|
speed: 0.47,
|
|
@@ -356,7 +356,7 @@
|
|
|
356
356
|
}, {
|
|
357
357
|
id: 'chrome',
|
|
358
358
|
code: 'NC-05',
|
|
359
|
-
name: '
|
|
359
|
+
name: '银汉',
|
|
360
360
|
group: 'cold',
|
|
361
361
|
seed: 37.8,
|
|
362
362
|
speed: 0.42,
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
}, {
|
|
365
365
|
id: 'plus',
|
|
366
366
|
code: 'NC-06',
|
|
367
|
-
name: '
|
|
367
|
+
name: '熔金',
|
|
368
368
|
group: 'warm',
|
|
369
369
|
seed: 51.3,
|
|
370
370
|
speed: 0.5,
|
|
@@ -374,7 +374,7 @@
|
|
|
374
374
|
var PROGRESS_PRESETS = [{
|
|
375
375
|
id: 'model-training',
|
|
376
376
|
code: 'NC-10',
|
|
377
|
-
name: '
|
|
377
|
+
name: '星火',
|
|
378
378
|
subtitle: 'SHA 4.5 + 100 2026 TKN',
|
|
379
379
|
group: 'progress',
|
|
380
380
|
initialProgress: 43,
|
|
@@ -383,7 +383,7 @@
|
|
|
383
383
|
}, {
|
|
384
384
|
id: 'agent-migration',
|
|
385
385
|
code: 'NC-11',
|
|
386
|
-
name: '
|
|
386
|
+
name: '迁流',
|
|
387
387
|
subtitle: 'TRANSFERRING PROTOCOL',
|
|
388
388
|
group: 'progress',
|
|
389
389
|
initialProgress: 33,
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
}, {
|
|
393
393
|
id: 'visual-training',
|
|
394
394
|
code: 'NC-12',
|
|
395
|
-
name: '
|
|
395
|
+
name: '幻境',
|
|
396
396
|
subtitle: 'GENERATING POWER ++',
|
|
397
397
|
group: 'progress',
|
|
398
398
|
initialProgress: 58,
|
|
@@ -401,7 +401,7 @@
|
|
|
401
401
|
}, {
|
|
402
402
|
id: 'tide',
|
|
403
403
|
code: 'NC-13',
|
|
404
|
-
name: '
|
|
404
|
+
name: '汐潮',
|
|
405
405
|
subtitle: 'MOON PULL / COAST',
|
|
406
406
|
group: 'progress',
|
|
407
407
|
initialProgress: 30,
|
|
@@ -411,23 +411,18 @@
|
|
|
411
411
|
|
|
412
412
|
var PRESETS = CAPSULE_PRESETS;
|
|
413
413
|
var ALL_PRESETS = [].concat(_toConsumableArray(CAPSULE_PRESETS), _toConsumableArray(PROGRESS_PRESETS));
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Resolve a preset by its literary name (e.g. '沧溟').
|
|
417
|
+
* Matching is case-insensitive and ignores surrounding whitespace,
|
|
418
|
+
* so '沧溟' and ' 沧溟 ' both work.
|
|
419
|
+
*/
|
|
420
420
|
function getPreset(kind, ref) {
|
|
421
421
|
var list = kind === 'capsule' ? CAPSULE_PRESETS : kind === 'progress' ? PROGRESS_PRESETS : null;
|
|
422
422
|
if (!list) throw new Error("Unknown preset kind: ".concat(kind, " (use \"capsule\" or \"progress\")"));
|
|
423
|
-
if (ref && _typeof(ref) === 'object') {
|
|
424
|
-
var valid = kind === 'capsule' ? validatePreset(ref) : validateProgressPreset(ref);
|
|
425
|
-
if (!valid) throw new Error("Invalid ".concat(kind, " preset object"));
|
|
426
|
-
return ref;
|
|
427
|
-
}
|
|
428
423
|
var key = String(ref).trim().toLowerCase();
|
|
429
424
|
var found = list.find(function (preset) {
|
|
430
|
-
return preset.
|
|
425
|
+
return preset.name.toLowerCase() === key;
|
|
431
426
|
});
|
|
432
427
|
if (!found) throw new Error("Unknown ".concat(kind, " preset: ").concat(ref));
|
|
433
428
|
return found;
|
|
@@ -440,7 +435,6 @@
|
|
|
440
435
|
quality: 'auto',
|
|
441
436
|
renderer: 'auto',
|
|
442
437
|
respectReducedMotion: true,
|
|
443
|
-
interactive: true,
|
|
444
438
|
mouseColor: true,
|
|
445
439
|
showCopy: true
|
|
446
440
|
},
|
|
@@ -873,8 +867,8 @@
|
|
|
873
867
|
* Mount a cosmic (nebula) capsule into `container`.
|
|
874
868
|
*
|
|
875
869
|
* Options: preset (id/code/name or object), width, height (number=px or
|
|
876
|
-
* string with px/%/vw/vh/em/rem), colors, seed, speed, quality,
|
|
877
|
-
* respectReducedMotion, copy, cssVars.
|
|
870
|
+
* string with px/%/vw/vh/em/rem), colors, seed, speed, quality,
|
|
871
|
+
* respectReducedMotion, copy, cssVars.
|
|
878
872
|
*/
|
|
879
873
|
function createCapsule(container) {
|
|
880
874
|
var _options$preset;
|
|
@@ -882,7 +876,7 @@
|
|
|
882
876
|
if (!container || typeof container.appendChild !== 'function') {
|
|
883
877
|
throw new Error('createCapsule: container element is required');
|
|
884
878
|
}
|
|
885
|
-
var preset = _objectSpread2({}, getPreset('capsule', (_options$preset = options.preset) !== null && _options$preset !== void 0 ? _options$preset : '
|
|
879
|
+
var preset = _objectSpread2({}, getPreset('capsule', (_options$preset = options.preset) !== null && _options$preset !== void 0 ? _options$preset : '初光'));
|
|
886
880
|
var merged = normalizeOptions(DEFAULTS.capsule, preset, options);
|
|
887
881
|
var copy = _objectSpread2(_objectSpread2({}, COPY), merged.copy || {});
|
|
888
882
|
var root = document.createElement('div');
|
|
@@ -961,18 +955,16 @@
|
|
|
961
955
|
}) : null;
|
|
962
956
|
if (resizeObserver) resizeObserver.observe(root);else window.addEventListener('resize', renderer.resize);
|
|
963
957
|
var visibility = createVisibilityGuard(root);
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
preset: _objectSpread2({}, preset)
|
|
968
|
-
});
|
|
958
|
+
root.addEventListener('pointerenter', function () {
|
|
959
|
+
return emitter.emit('pointerenter', {
|
|
960
|
+
preset: _objectSpread2({}, preset)
|
|
969
961
|
});
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
})
|
|
962
|
+
});
|
|
963
|
+
root.addEventListener('pointerleave', function () {
|
|
964
|
+
return emitter.emit('pointerleave', {
|
|
965
|
+
preset: _objectSpread2({}, preset)
|
|
974
966
|
});
|
|
975
|
-
}
|
|
967
|
+
});
|
|
976
968
|
root.addEventListener('click', function (event) {
|
|
977
969
|
emitter.emit('click', {
|
|
978
970
|
event: event,
|
|
@@ -1037,6 +1029,20 @@
|
|
|
1037
1029
|
}));
|
|
1038
1030
|
return this;
|
|
1039
1031
|
},
|
|
1032
|
+
setSeed: function setSeed(seed) {
|
|
1033
|
+
var value = Number(seed);
|
|
1034
|
+
if (!Number.isFinite(value)) return this;
|
|
1035
|
+
preset.seed = value;
|
|
1036
|
+
renderer.setPreset(_objectSpread2({}, preset));
|
|
1037
|
+
return this;
|
|
1038
|
+
},
|
|
1039
|
+
setSpeed: function setSpeed(speed) {
|
|
1040
|
+
var value = Number(speed);
|
|
1041
|
+
if (!Number.isFinite(value)) return this;
|
|
1042
|
+
preset.speed = value;
|
|
1043
|
+
renderer.setPreset(_objectSpread2({}, preset));
|
|
1044
|
+
return this;
|
|
1045
|
+
},
|
|
1040
1046
|
setSize: function setSize(width, height) {
|
|
1041
1047
|
if (width !== undefined) merged.width = width;
|
|
1042
1048
|
if (height !== undefined) merged.height = height;
|
|
@@ -2065,7 +2071,7 @@
|
|
|
2065
2071
|
if (!container || typeof container.appendChild !== 'function') {
|
|
2066
2072
|
throw new Error('createProgressCapsule: container element is required');
|
|
2067
2073
|
}
|
|
2068
|
-
var preset = _objectSpread2({}, getPreset('progress', (_options$preset = options.preset) !== null && _options$preset !== void 0 ? _options$preset : '
|
|
2074
|
+
var preset = _objectSpread2({}, getPreset('progress', (_options$preset = options.preset) !== null && _options$preset !== void 0 ? _options$preset : '星火'));
|
|
2069
2075
|
var merged = normalizeOptions(DEFAULTS.progress, preset, options);
|
|
2070
2076
|
var copy = _objectSpread2(_objectSpread2({}, COPY), merged.copy || {});
|
|
2071
2077
|
var root = document.createElement('div');
|
|
@@ -2221,6 +2227,26 @@
|
|
|
2221
2227
|
});
|
|
2222
2228
|
return this;
|
|
2223
2229
|
},
|
|
2230
|
+
setEdgeStyle: function setEdgeStyle(edgeStyle) {
|
|
2231
|
+
var value = String(edgeStyle || '').toLowerCase();
|
|
2232
|
+
if (value !== 'flow' && value !== 'tide') return this;
|
|
2233
|
+
preset.edgeStyle = value;
|
|
2234
|
+
controller.profile = value === 'tide' ? FLOW_PROFILES.tide : FLOW_PROFILES[preset.id] || FLOW_PROFILES['visual-training'];
|
|
2235
|
+
if (overlay) {
|
|
2236
|
+
overlay.dispose();
|
|
2237
|
+
overlay = attachProgressFlowOverlay({
|
|
2238
|
+
root: root,
|
|
2239
|
+
canvas: canvas,
|
|
2240
|
+
preset: preset,
|
|
2241
|
+
getProgress: function getProgress() {
|
|
2242
|
+
return controller.value;
|
|
2243
|
+
}
|
|
2244
|
+
});
|
|
2245
|
+
}
|
|
2246
|
+
controller.webglActive = Boolean(overlay);
|
|
2247
|
+
controller.resizeCanvas();
|
|
2248
|
+
return this;
|
|
2249
|
+
},
|
|
2224
2250
|
setColors: function setColors(colors) {
|
|
2225
2251
|
if (!Array.isArray(colors) || colors.length !== 4) return this;
|
|
2226
2252
|
controller.setColors(colors);
|
|
@@ -2286,7 +2312,7 @@
|
|
|
2286
2312
|
if (!host || typeof host.appendChild !== 'function') {
|
|
2287
2313
|
throw new Error('createColorBackground: host element is required');
|
|
2288
2314
|
}
|
|
2289
|
-
var preset = _objectSpread2({}, getPreset('capsule', (_options$preset = options.preset) !== null && _options$preset !== void 0 ? _options$preset : '
|
|
2315
|
+
var preset = _objectSpread2({}, getPreset('capsule', (_options$preset = options.preset) !== null && _options$preset !== void 0 ? _options$preset : '初光'));
|
|
2290
2316
|
var merged = normalizeOptions({
|
|
2291
2317
|
quality: DEFAULTS.capsule.quality,
|
|
2292
2318
|
renderer: DEFAULTS.capsule.renderer,
|
|
@@ -2430,7 +2456,5 @@
|
|
|
2430
2456
|
exports.pauseAll = pauseAll;
|
|
2431
2457
|
exports.resumeAll = resumeAll;
|
|
2432
2458
|
exports.validateColors = validateColors;
|
|
2433
|
-
exports.validatePreset = validatePreset;
|
|
2434
|
-
exports.validateProgressPreset = validateProgressPreset;
|
|
2435
2459
|
|
|
2436
2460
|
}));
|
package/dist/index.umd.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CosmicCapsules={})}(this,function(e){"use strict";function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o}function r(e,t,r){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:r;throw new TypeError("Private element is not present on this object")}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function i(e,t,r){return t&&function(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,h(o.key),o)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function a(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=p(e))||t){r&&(e=r);var o=0,n=function(){};return{s:n,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function s(e,t,r){return(t=h(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,o)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach(function(t){s(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o,n,i,a,s=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(o=i.call(r)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw n}}return s}}(e,t)||p(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||p(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function p(e,r){if(e){if("string"==typeof e)return t(e,r);var o={}.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?t(e,r):void 0}}function v(){var e=Object.create(null);return{on:function(t,r){return e[t]||(e[t]=[]),e[t].push(r),function(){var o=e[t];if(o){var n=o.indexOf(r);-1!==n&&o.splice(n,1)}}},off:function(t,r){var o=e[t];if(!o)return!1;var n=o.indexOf(r);return-1!==n&&(o.splice(n,1),!0)},emit:function(t){var r=e[t];if(r){for(var o=arguments.length,n=new Array(o>1?o-1:0),i=1;i<o;i++)n[i-1]=arguments[i];var s,l=a(r.slice());try{for(l.s();!(s=l.n()).done;){s.value.apply(void 0,n)}}catch(e){l.e(e)}finally{l.f()}}}}}var m=/^[\d.]+(?:px|%|vw|vh|vmin|vmax|em|rem)$/;function g(e){if("number"==typeof e){if(!Number.isFinite(e)||e<0)throw new Error("Invalid size: ".concat(e));return"".concat(e,"px")}if("string"!=typeof e)throw new Error("Invalid size: ".concat(String(e)));var t=e.trim();if(!t)throw new Error("Invalid size: empty string");if(/^\d+(?:\.\d+)?$/.test(t))return"".concat(t,"px");if(!m.test(t))throw new Error('Invalid size or unsupported unit: "'.concat(e,'" (use px, %, vw, vh, vmin, vmax, em, rem)'));return t}var y={low:{dpr:1},medium:{dpr:1.5},high:{dpr:2}};function b(e){return"auto"===e?(t="undefined"!=typeof navigator?navigator:null,r=t&&"number"==typeof t.deviceMemory?t.deviceMemory:8,o=t&&"number"==typeof t.hardwareConcurrency?t.hardwareConcurrency:8,r<=4||o<=4?1.5:2):(y[e]||y.medium).dpr;var t,r,o}function w(e,t,r){var o=function(e){for(var t={},r=0,o=Object.keys(e);r<o.length;r++){var n=o[r];void 0!==e[n]&&(t[n]=e[n])}return t},n=o(t&&"object"===f(t)?t:{}),i=o(r&&"object"===f(r)?r:{});return c(c(c({},e),n),i)}var E=["#EAF6FF","#8FD0FF","#3B87F6","#6B58E9"],C=["#EDF2FF","#2F58D5","#1B2040","#E07A43"],x=["#F2EEFF","#B99AF1","#8F74DB","#D7D85C"],A=["#F5F6F8","#B9C0CC","#7F8793","#4A4F59"],S=["#FFF0E6","#F6C26B","#F98A64","#E86D74"],_=[{id:"original",code:"NC-01",name:"ORIGINAL",group:"warm",seed:1.7,speed:.5,colors:d(["#FFF3EA","#F5B27A","#F67BC6","#A978E8"])},{id:"ocean",code:"NC-02",name:"OCEAN",group:"cold",seed:8.2,speed:.48,colors:d(E)},{id:"klein",code:"NC-03",name:"KLEIN",group:"cold",seed:14.1,speed:.49,colors:d(C)},{id:"ultraviolet",code:"NC-04",name:"ULTRAVIOLET",group:"cold",seed:23.4,speed:.47,colors:d(x)},{id:"chrome",code:"NC-05",name:"CHROME",group:"cold",seed:37.8,speed:.42,colors:d(A)},{id:"plus",code:"NC-06",name:"PLUS",group:"warm",seed:51.3,speed:.5,colors:d(S)}],P=[{id:"model-training",code:"NC-10",name:"MODEL TRAINING",subtitle:"SHA 4.5 + 100 2026 TKN",group:"progress",initialProgress:43,edgeStyle:"flow",colors:["#2B1025","#FF3F94","#FF8A3D","#FFF06A"]},{id:"agent-migration",code:"NC-11",name:"AGENT MIGRATION",subtitle:"TRANSFERRING PROTOCOL",group:"progress",initialProgress:33,edgeStyle:"flow",colors:["#101C37","#245BFF","#00CFFF","#5DFFE6"]},{id:"visual-training",code:"NC-12",name:"VISUAL TRAINING",subtitle:"GENERATING POWER ++",group:"progress",initialProgress:58,edgeStyle:"flow",colors:["#21142D","#7042FF","#42F58D","#C4FF8A"]},{id:"tide",code:"NC-13",name:"TIDE",subtitle:"MOON PULL / COAST",group:"progress",initialProgress:30,edgeStyle:"tide",colors:["#0A2239","#2E9BFF","#7FE3FF","#EAF9FF"]}],T=_,M=[].concat(d(_),d(P));function R(e){return Boolean(e&&"string"==typeof e.id&&"string"==typeof e.code&&"string"==typeof e.name&&Number.isFinite(e.seed)&&Number.isFinite(e.speed)&&Array.isArray(e.colors)&&4===e.colors.length)}function k(e){return Boolean(e&&"string"==typeof e.id&&"string"==typeof e.code&&"string"==typeof e.name&&"progress"===e.group&&Number.isFinite(e.initialProgress)&&-1!==["flow","tide"].indexOf(e.edgeStyle||"flow")&&Array.isArray(e.colors)&&4===e.colors.length)}function F(e,t){var r="capsule"===e?_:"progress"===e?P:null;if(!r)throw new Error("Unknown preset kind: ".concat(e,' (use "capsule" or "progress")'));if(t&&"object"===f(t)){if(!("capsule"===e?R(t):k(t)))throw new Error("Invalid ".concat(e," preset object"));return t}var o=String(t).trim().toLowerCase(),n=r.find(function(e){return e.id.toLowerCase()===o||e.code.toLowerCase()===o||e.name.toLowerCase()===o});if(!n)throw new Error("Unknown ".concat(e," preset: ").concat(t));return n}var L={capsule:{width:"100%",height:160,quality:"auto",renderer:"auto",respectReducedMotion:!0,interactive:!0,mouseColor:!0,showCopy:!0},progress:{width:454,height:104,min:0,max:100,draggable:!0,keyboard:!0,edgeStyle:"flow",quality:"auto",renderer:"auto",showCopy:!0,respectReducedMotion:!0}},D={brandName:"画境观屿",dragLabel:"DRAG",valueSuffix:"%",progressAria:"{brand} {code} 加载进度",capsuleAria:"打开 {name} 沉浸预览"};function B(e){var t=e.replace("#",""),r=Number.parseInt(t,16);return[(r>>16&255)/255,(r>>8&255)/255,(255&r)/255]}function O(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=e.replace("#",""),o=Number.parseInt(r,16),n=o>>8&255,i=255&o;return"rgba(".concat(o>>16&255,", ").concat(n,", ").concat(i,", ").concat(t,")")}function U(e,t,r){var o=e.createShader(t);if(e.shaderSource(o,r),e.compileShader(o),!e.getShaderParameter(o,e.COMPILE_STATUS)){var n=e.getShaderInfoLog(o)||"Unknown shader compile error";throw e.deleteShader(o),new Error(n)}return o}var I=new WeakSet,N=function(){return i(function e(t,i){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(o(this,e),n(this,I),this.canvas=t,this.preset=c({},i),this.options=c({dprCap:1.75,mouseColor:!0},a),this.gl=t.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,powerPreference:"high-performance",preserveDrawingBuffer:!1}),!this.gl)throw new Error("WebGL2 is not available");this.program=function(e){var t=U(e,e.VERTEX_SHADER,"#version 300 es\nin vec2 a_position;\nout vec2 v_uv;\nvoid main() {\n v_uv = a_position * 0.5 + 0.5;\n gl_Position = vec4(a_position, 0.0, 1.0);\n}"),r=U(e,e.FRAGMENT_SHADER,"#version 300 es\nprecision highp float;\n\nin vec2 v_uv;\nout vec4 outColor;\n\nuniform vec2 u_resolution;\nuniform float u_time;\nuniform float u_seed;\nuniform float u_motion;\nuniform vec2 u_pointer;\nuniform vec3 u_colorA;\nuniform vec3 u_colorB;\nuniform vec3 u_colorC;\nuniform vec3 u_colorD;\n\nfloat hash21(vec2 p) {\n p = fract(p * vec2(123.34, 456.21));\n p += dot(p, p + 45.32 + u_seed);\n return fract(p.x * p.y);\n}\n\nfloat noise(vec2 p) {\n vec2 i = floor(p);\n vec2 f = fract(p);\n f = f * f * (3.0 - 2.0 * f);\n float a = hash21(i);\n float b = hash21(i + vec2(1.0, 0.0));\n float c = hash21(i + vec2(0.0, 1.0));\n float d = hash21(i + vec2(1.0, 1.0));\n return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);\n}\n\nfloat fbm(vec2 p) {\n float value = 0.0;\n float amplitude = 0.52;\n mat2 rotation = mat2(0.80, 0.60, -0.60, 0.80);\n for (int i = 0; i < 6; i++) {\n value += amplitude * noise(p);\n p = rotation * p * 2.03 + 17.7;\n amplitude *= 0.5;\n }\n return value;\n}\n\nfloat gaussian(float value, float center, float width) {\n return exp(-pow(value - center, 2.0) / max(width, 0.0001));\n}\n\nvec3 palette(float t) {\n t = clamp(t, 0.0, 1.0);\n vec3 shadow = mix(u_colorA, u_colorB, smoothstep(0.06, 0.62, t));\n vec3 body = mix(u_colorB, u_colorC, smoothstep(0.30, 0.82, t));\n vec3 highlight = mix(u_colorC, u_colorD, smoothstep(0.74, 1.0, t));\n vec3 restrained = mix(shadow, body, smoothstep(0.26, 0.72, t));\n return mix(restrained, highlight, smoothstep(0.78, 0.97, t));\n}\n\nvec3 renderNebula(vec2 uv, vec2 p, vec2 pointer, float distanceToPointer, float t) {\n vec2 delta = p - pointer;\n float influence = exp(-distanceToPointer * 4.6) * u_motion;\n float angle = influence * 1.7;\n mat2 swirl = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n p = pointer + swirl * delta;\n p += normalize(delta + 0.0001) * influence * 0.08;\n\n vec2 drift = vec2(t * 0.22, -t * 0.13);\n vec2 q = vec2(\n fbm(p * 1.35 + drift + u_seed),\n fbm(p * 1.35 + vec2(5.2, 1.3) - drift * 0.85)\n );\n vec2 r = vec2(\n fbm(p * 2.0 + 3.6 * q + vec2(1.7, 9.2) + t * 0.10),\n fbm(p * 2.0 + 3.0 * q + vec2(8.3, 2.8) - t * 0.085)\n );\n\n float cloud = fbm(p * 1.7 + 4.2 * r);\n float veins = fbm(p * 4.0 - 2.0 * q + t * 0.065);\n float nebula = smoothstep(0.18, 0.91, cloud * 0.9 + veins * 0.22);\n\n vec3 color = palette(nebula);\n color += u_colorD * pow(max(cloud - 0.63, 0.0), 2.0) * 1.05;\n color *= 0.78 + 0.34 * smoothstep(0.15, 0.9, veins);\n\n vec2 starGrid = floor((uv + vec2(u_seed * 0.013, 0.0)) * vec2(132.0, 58.0));\n vec2 starCell = fract(uv * vec2(132.0, 58.0)) - 0.5;\n float starRandom = hash21(starGrid);\n float starShape = smoothstep(0.075, 0.0, length(starCell));\n float starMask = step(0.989, starRandom) * starShape;\n float twinkle = 0.35 + 0.65 * sin(t * (1.0 + starRandom * 2.4) + starRandom * 40.0) * 0.5 + 0.5;\n color += starMask * twinkle * mix(u_colorC, u_colorD, starRandom) * 1.05;\n\n float pointerGlow = exp(-distanceToPointer * 7.0) * u_motion;\n color += u_colorD * pointerGlow * 0.28;\n return color;\n}\n\nvoid main() {\n vec2 uv = v_uv;\n vec2 p = uv - 0.5;\n p.x *= u_resolution.x / max(u_resolution.y, 1.0);\n\n vec2 pointer = u_pointer - 0.5;\n pointer.x *= u_resolution.x / max(u_resolution.y, 1.0);\n float distanceToPointer = length(p - pointer);\n\n vec3 color = renderNebula(uv, p, pointer, distanceToPointer, u_time);\n float vignette = smoothstep(0.94, 0.18, length((uv - 0.5) * vec2(1.0, 1.35)));\n color *= 0.70 + vignette * 0.42;\n color = pow(max(color, vec3(0.0)), vec3(0.88));\n\n outColor = vec4(color, 1.0);\n}"),o=e.createProgram();if(e.attachShader(o,t),e.attachShader(o,r),e.linkProgram(o),e.deleteShader(t),e.deleteShader(r),!e.getProgramParameter(o,e.LINK_STATUS)){var n=e.getProgramInfoLog(o)||"Unknown program link error";throw e.deleteProgram(o),new Error(n)}return o}(this.gl),this.locations=r(I,this,z).call(this),this.pointer=[.72,.45],this.pointerTarget=d(this.pointer),this.motion=0,this.motionTarget=0,this.timeOffset=.73*i.seed,this.visible=!0,this.disposed=!1,r(I,this,j).call(this),r(I,this,G).call(this),this.resize()},[{key:"setPreset",value:function(e){this.preset=c({},e),this.timeOffset=.73*e.seed}},{key:"setDprCap",value:function(e){this.options.dprCap=e,this.resize()}},{key:"randomize",value:function(){this.preset.seed=100*Math.random(),this.timeOffset=40*Math.random()}},{key:"resize",value:function(){var e=Math.min(window.devicePixelRatio||1,this.options.dprCap),t=this.canvas.getBoundingClientRect(),r=Math.max(2,Math.round(t.width*e)),o=Math.max(2,Math.round(t.height*e));this.canvas.width===r&&this.canvas.height===o||(this.canvas.width=r,this.canvas.height=o,this.gl.viewport(0,0,r,o))}},{key:"draw",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.disposed&&this.visible){this.resize();var r=this.gl;this.pointer[0]+=.08*(this.pointerTarget[0]-this.pointer[0]),this.pointer[1]+=.08*(this.pointerTarget[1]-this.pointer[1]),this.motion+=.07*(this.motionTarget-this.motion),r.useProgram(this.program),r.bindBuffer(r.ARRAY_BUFFER,this.buffer),r.enableVertexAttribArray(this.locations.position),r.vertexAttribPointer(this.locations.position,2,r.FLOAT,!1,0,0);var o=this.preset.colors.map(B);r.uniform2f(this.locations.resolution,this.canvas.width,this.canvas.height),r.uniform1f(this.locations.time,this.timeOffset+(t?0:e*this.preset.speed)),r.uniform1f(this.locations.seed,this.preset.seed),r.uniform1f(this.locations.motion,this.motion),r.uniform2f(this.locations.pointer,this.pointer[0],this.pointer[1]),r.uniform3fv(this.locations.colorA,o[0]),r.uniform3fv(this.locations.colorB,o[1]),r.uniform3fv(this.locations.colorC,o[2]),r.uniform3fv(this.locations.colorD,o[3]),r.drawArrays(r.TRIANGLES,0,3)}}},{key:"dispose",value:function(){this.disposed=!0;var e=this.eventTarget||this.canvas;e.removeEventListener("pointermove",this.onPointerMove),e.removeEventListener("pointerdown",this.onPointerMove),e.removeEventListener("pointerleave",this.onPointerLeave),this.gl.deleteBuffer(this.buffer),this.gl.deleteProgram(this.program);var t=this.gl.getExtension("WEBGL_lose_context");t&&t.loseContext()}}])}();function z(){var e=this,t=this.gl,r=function(r){return t.getUniformLocation(e.program,r)};return{position:t.getAttribLocation(this.program,"a_position"),resolution:r("u_resolution"),time:r("u_time"),seed:r("u_seed"),motion:r("u_motion"),pointer:r("u_pointer"),colorA:r("u_colorA"),colorB:r("u_colorB"),colorC:r("u_colorC"),colorD:r("u_colorD")}}function j(){var e=this.gl,t=new Float32Array([-1,-1,3,-1,-1,3]);this.buffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.buffer),e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)}function G(){var e=this;!1!==this.options.mouseColor&&(this.eventTarget=this.options.eventTarget||this.canvas.parentElement||this.canvas,this.onPointerMove=function(t){var r=e.canvas.getBoundingClientRect();e.pointerTarget[0]=(t.clientX-r.left)/Math.max(r.width,1),e.pointerTarget[1]=1-(t.clientY-r.top)/Math.max(r.height,1),e.motionTarget=1},this.onPointerLeave=function(){e.motionTarget=0},this.eventTarget.addEventListener("pointermove",this.onPointerMove,{passive:!0}),this.eventTarget.addEventListener("pointerdown",this.onPointerMove,{passive:!0}),this.eventTarget.addEventListener("pointerleave",this.onPointerLeave,{passive:!0}))}function X(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=u(B(e).map(function(e){return Math.round(255*e)}),3),o=r[0],n=r[1],i=r[2];return"rgba(".concat(o,", ").concat(n,", ").concat(i,", ").concat(t,")")}var W=function(){return i(function e(t,r){o(this,e),this.canvas=t,this.preset=r,this.context=t.getContext("2d"),this.visible=!0},[{key:"resize",value:function(){var e=this.canvas.getBoundingClientRect(),t=Math.min(window.devicePixelRatio||1,1.5),r=Math.max(2,Math.round(e.width*t)),o=Math.max(2,Math.round(e.height*t));this.canvas.width===r&&this.canvas.height===o||(this.canvas.width=r,this.canvas.height=o)}},{key:"drawNebula",value:function(e){var t=this.context,r=this.canvas,o=r.width,n=r.height,i=t.createLinearGradient(0,0,o,n);i.addColorStop(0,this.preset.colors[0]),i.addColorStop(.38,this.preset.colors[1]),i.addColorStop(.72,this.preset.colors[2]),i.addColorStop(1,this.preset.colors[3]),t.fillStyle=i,t.fillRect(0,0,o,n),t.globalCompositeOperation="screen";for(var a=0;a<6;a+=1){var s=(.5+.45*Math.sin(.32*e+1.7*a))*o,l=(.5+.4*Math.cos(.25*e+a))*n,c=Math.max(o,n)*(.08+a%3*.04),u=t.createRadialGradient(s,l,0,s,l,c);u.addColorStop(0,X(this.preset.colors[(a+1)%4],.24)),u.addColorStop(1,X(this.preset.colors[a%4],0)),t.fillStyle=u,t.fillRect(s-c,l-c,2*c,2*c)}t.globalCompositeOperation="source-over"}},{key:"draw",value:function(e){this.visible&&(this.resize(),this.drawNebula(e))}},{key:"setPreset",value:function(e){this.preset=e}},{key:"randomize",value:function(){}},{key:"dispose",value:function(){}}])}(),q=[],Y=!1,V=!1,H=0,K=0;function $(e){if(Y){var t=K?Math.min((e-K)/1e3,.05):0;if(K=e,H=requestAnimationFrame($),!V){var r,o=a(q.slice());try{for(o.s();!(r=o.n()).done;){var n=r.value;try{n.isPaused()||n.onFrame(t,e)}catch(e){console.warn("[dlc-ui] frame error:",e)}}}catch(e){o.e(e)}finally{o.f()}}0===q.length&&(cancelAnimationFrame(H),Y=!1,H=0)}}function Q(e,t){var r={onFrame:e,isPaused:t};return q.push(r),Y||(Y=!0,K=0,H=requestAnimationFrame($)),function(){var e=q.indexOf(r);-1!==e&&q.splice(e,1),0===q.length&&H&&(cancelAnimationFrame(H),Y=!1,H=0)}}function J(e){var t=!0,r="undefined"==typeof document||!document.hidden,o=!1,n=null;"undefined"!=typeof IntersectionObserver&&(n=new IntersectionObserver(function(e){t=e.some(function(e){return e.isIntersecting})},{rootMargin:"180px"})).observe(e);var i=function(){r="undefined"!=typeof document&&!document.hidden};return"undefined"!=typeof document&&document.addEventListener("visibilitychange",i),{isVisible:function(){return t&&r},dispose:function(){o||(o=!0,n&&n.disconnect(),"undefined"!=typeof document&&document.removeEventListener("visibilitychange",i))}}}var Z=240,ee={"model-training":{seed:.37,broad:.58,middle:.25,detail:.13,lobe:.24},"agent-migration":{seed:1.71,broad:.72,middle:.1,detail:.03,lobe:.18},"visual-training":{seed:2.83,broad:.66,middle:.16,detail:.06,lobe:.23},tide:{seed:4.12,broad:.82,middle:.07,detail:.02,lobe:.3,warp:.5}},te=Object.create(null);function re(e,t,r){var o=(e-t)/Math.max(r,.001);return Math.exp(-o*o)}function oe(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"flow",r="".concat(e,":").concat(t);return te[r]||(te[r]=function(e){for(var t="tide"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"flow")?ee.tide:ee[e]||ee["visual-training"],r=new Uint8Array(19200),o=0;o<Z;o+=1){var n=o/Z*Math.PI*2;t.warp&&(n+=t.warp*Math.sin(2*n));for(var i=.28+.13*Math.sin(.53*n+t.seed),a=.7+.12*Math.cos(.47*n+1.7*t.seed),s=0;s<80;s+=1){var l=s/Math.max(79,1),c=Math.pow(Math.max(Math.sin(Math.PI*l),0),.48),u=Math.sin(l*Math.PI*2*1.35+.58*n+t.seed)*t.broad,d=Math.sin(l*Math.PI*2*3.2-.91*n+2.1*t.seed)*t.middle,h=Math.sin(l*Math.PI*2*6.1+1.31*n+3.2*t.seed)*t.detail,f=(re(l,i,.09)*Math.sin(1.11*n+4*t.seed)-re(l,a,.1)*Math.cos(.97*n+3.3*t.seed))*t.lobe,p=Math.max(-1,Math.min(1,(u+d+h+f)*c));r[s*Z+o]=Math.round(255*(.5*p+.5))}}return r}(e,t)),te[r]}function ne(e){var t=Number.parseInt(e.replace("#",""),16);return[(t>>16&255)/255,(t>>8&255)/255,(255&t)/255]}var ie={"model-training":0,"agent-migration":1,"visual-training":2,tide:3},ae={"model-training":1.05,"agent-migration":1.04,"visual-training":1.04,tide:1.18};function se(e,t,r){var o=e.createShader(t);if(e.shaderSource(o,r),e.compileShader(o),!e.getShaderParameter(o,e.COMPILE_STATUS)){var n=e.getShaderInfoLog(o)||"Unknown shader compile error";throw e.deleteShader(o),new Error(n)}return o}var le=function(){return i(function e(t,r){var n;o(this,e);var i=t.getContext("webgl2",{alpha:!1,antialias:!0,premultipliedAlpha:!1,powerPreference:"high-performance"});if(!i)throw new Error("WebGL2 unavailable");this.canvas=t,this.gl=i,this.program=function(e){var t=se(e,e.VERTEX_SHADER,"#version 300 es\nin vec2 a_position;\nout vec2 v_uv;\nvoid main() {\n v_uv = a_position * 0.5 + 0.5;\n gl_Position = vec4(a_position, 0.0, 1.0);\n}"),r=se(e,e.FRAGMENT_SHADER,"#version 300 es\nprecision highp float;\n\nin vec2 v_uv;\nout vec4 outColor;\n\nuniform vec2 u_resolution;\nuniform float u_time;\nuniform float u_progress;\nuniform float u_seed;\nuniform float u_profile;\nuniform sampler2D u_motion;\nuniform sampler2D u_effect;\nuniform float u_hasEffect;\nuniform float u_effectFrames;\nuniform float u_motionDuration;\nuniform float u_motionScale;\nuniform vec3 u_dark;\nuniform vec3 u_accentA;\nuniform vec3 u_accentB;\nuniform vec3 u_glow;\n\nfloat hash21(vec2 p) {\n p = fract(p * vec2(123.34, 456.21));\n p += dot(p, p + 45.32 + u_seed * 11.7);\n return fract(p.x * p.y);\n}\n\nfloat noise(vec2 p) {\n vec2 i = floor(p);\n vec2 f = fract(p);\n f = f * f * (3.0 - 2.0 * f);\n float a = hash21(i);\n float b = hash21(i + vec2(1.0, 0.0));\n float c = hash21(i + vec2(0.0, 1.0));\n float d = hash21(i + vec2(1.0, 1.0));\n return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);\n}\n\nfloat fbm(vec2 p) {\n float value = 0.0;\n float amplitude = 0.55;\n mat2 rotation = mat2(0.82, 0.57, -0.57, 0.82);\n for (int i = 0; i < 6; i++) {\n value += noise(p) * amplitude;\n p = rotation * p * 2.02 + 13.7;\n amplitude *= 0.48;\n }\n return value;\n}\n\nfloat gaussian(float value, float center, float width) {\n float delta = (value - center) / max(width, 0.0001);\n return exp(-delta * delta);\n}\n\nfloat profileMix(float model, float agent, float visual) {\n if (u_profile < 0.5) return model;\n if (u_profile < 1.5) return agent;\n return visual;\n}\n\nfloat motionSample(float y, float t) {\n float phase = fract(t / max(u_motionDuration, 0.001));\n float captured = texture(u_motion, vec2(phase, 1.0 - clamp(y, 0.0, 1.0))).r;\n return (captured * 2.0 - 1.0) * u_motionScale;\n}\n\nfloat edgeDisplacement(float y, float t) {\n return motionSample(y, t);\n}\n\nfloat flowDisplacement(float y, float t) {\n return (\n motionSample(y - 0.024, t) * 0.08 +\n motionSample(y - 0.012, t) * 0.18 +\n motionSample(y, t) * 0.48 +\n motionSample(y + 0.012, t) * 0.18 +\n motionSample(y + 0.024, t) * 0.08\n );\n}\n\nfloat ellipseRing(vec2 p, float radius, float width) {\n return gaussian(length(p), radius, width);\n}\n\nvoid main() {\n vec2 uv = v_uv;\n float t = u_time;\n float edge = u_progress + edgeDisplacement(uv.y, t);\n float flowEdge = u_progress + flowDisplacement(uv.y, t);\n float d = uv.x - edge;\n float fd = uv.x - flowEdge;\n\n vec3 rightBase = vec3(0.125, 0.129, 0.145);\n vec3 color = rightBase;\n\n float leftMask = 1.0 - smoothstep(-0.001, 0.002, d);\n color = mix(color, u_dark, leftMask * profileMix(0.96, 0.92, 0.96));\n\n vec2 flowP = vec2((fd + 0.10) * 6.2, uv.y * 1.95);\n float flowA = fbm(flowP + vec2(-t * 0.22, t * 0.27) + u_seed * 1.7);\n float flowB = fbm(flowP * 1.52 + vec2(t * 0.28, -t * 0.36) + 8.2 + u_seed);\n float flowC = fbm(flowP * 2.25 + vec2(-t * 0.41, t * 0.46) + 19.0);\n\n float farCenter = profileMix(-0.060, -0.079, -0.045) + (flowA - 0.5) * profileMix(0.018, 0.022, 0.014);\n float midCenter = profileMix(-0.039, -0.052, -0.030) + (flowB - 0.5) * profileMix(0.013, 0.016, 0.010);\n float hotCenter = profileMix(-0.026, -0.029, -0.023) + (flowC - 0.5) * 0.010;\n\n float farBand = gaussian(fd, farCenter, profileMix(0.035, 0.049, 0.030));\n float midBand = gaussian(fd, midCenter, profileMix(0.026, 0.034, 0.026));\n float hotBand = gaussian(fd, hotCenter, profileMix(0.023, 0.027, 0.026));\n float darkTrough = gaussian(fd, profileMix(-0.050, -0.058, -0.044) + (flowB - 0.5) * 0.010, profileMix(0.020, 0.025, 0.021));\n\n float ringY = 0.47 + sin(t * 0.58 + u_seed * 2.4) * 0.12;\n vec2 ringP = vec2((fd + 0.086) / 0.078, (uv.y - ringY) / 0.25);\n ringP += vec2((flowB - 0.5) * 0.08, (flowA - 0.5) * 0.06);\n float ringTexture = fbm(ringP * 2.15 + vec2(t * 0.18, -t * 0.14) + u_seed * 1.9);\n float ring = ellipseRing(ringP, 0.66, 0.32) * (0.30 + 0.64 * ringTexture);\n float ringCore = gaussian(length(ringP), 0.25, 0.25);\n float ringPulse = smoothstep(0.58, 0.90, 0.5 + 0.5 * sin(t * 0.82 + u_seed * 4.1));\n float modelRing = ring * ringPulse * (1.0 - step(0.5, u_profile));\n float visualRing = ring * 0.16 * step(1.5, u_profile) * ringPulse;\n\n float cloudGate = leftMask * smoothstep(-0.30, -0.008, fd);\n float textureA = smoothstep(0.24, 0.92, flowA * 0.72 + flowB * 0.42);\n float textureB = smoothstep(0.28, 0.94, flowB * 0.68 + flowC * 0.38);\n\n vec3 hotColor = u_accentB;\n color += u_accentA * farBand * cloudGate * (0.07 + textureA * profileMix(0.42, 0.24, 0.40));\n color += u_accentB * midBand * cloudGate * (0.15 + textureB * profileMix(0.70, 0.46, 0.68));\n color += hotColor * hotBand * cloudGate * profileMix(0.88, 0.62, 0.84);\n float modelMask = 1.0 - step(0.5, u_profile);\n color += u_accentA * (modelRing + visualRing) * cloudGate * profileMix(0.54, 0.0, 0.34);\n color *= 1.0 - darkTrough * profileMix(0.44, 0.24, 0.24) * cloudGate;\n color *= 1.0 - ringCore * modelMask * ringPulse * 0.44 * cloudGate;\n\n float broadHalo = exp(-abs(d) * 96.0);\n float innerHalo = exp(-abs(d) * 176.0);\n float colorCore = exp(-abs(d) * 360.0);\n float sharpCore = exp(-abs(d) * 760.0);\n float leftGate = 1.0 - smoothstep(-0.003, 0.005, d);\n\n color += u_accentA * broadHalo * leftGate * profileMix(0.09, 0.04, 0.06);\n color += hotColor * innerHalo * leftGate * profileMix(0.76, 0.72, 0.78);\n color += u_glow * colorCore * profileMix(0.72, 0.34, 0.24);\n\n float whiteStrength = profileMix(0.10, 0.0, 0.0);\n color += vec3(1.0, 0.99, 0.91) * sharpCore * whiteStrength;\n\n float rightCut = smoothstep(0.001, 0.006, d);\n color = mix(color, rightBase, rightCut);\n\n float effectX = (d * 1257.0 + 260.0) / 320.0;\n float atlasPhase = fract(t / 12.0) * u_effectFrames;\n float atlasFrameA = floor(atlasPhase);\n float atlasFrameB = mod(atlasFrameA + 1.0, u_effectFrames);\n float atlasMix = smoothstep(0.0, 1.0, fract(atlasPhase));\n float atlasXA = (atlasFrameA + clamp(effectX, 0.0, 1.0)) / u_effectFrames;\n float atlasXB = (atlasFrameB + clamp(effectX, 0.0, 1.0)) / u_effectFrames;\n vec3 referenceA = texture(u_effect, vec2(atlasXA, uv.y)).rgb;\n vec3 referenceB = texture(u_effect, vec2(atlasXB, uv.y)).rgb;\n vec3 referenceColor = mix(referenceA, referenceB, atlasMix);\n float stripMask = smoothstep(0.0, 0.018, effectX) * (1.0 - smoothstep(0.982, 1.0, effectX));\n float referenceLeft = 1.0 - smoothstep(-0.026, -0.012, d);\n color = mix(color, referenceColor, stripMask * referenceLeft * u_hasEffect);\n\n outColor = vec4(clamp(color, 0.0, 1.0), 1.0);\n}"),o=e.createProgram();if(e.attachShader(o,t),e.attachShader(o,r),e.linkProgram(o),e.deleteShader(t),e.deleteShader(r),!e.getProgramParameter(o,e.LINK_STATUS)){var n=e.getProgramInfoLog(o)||"Unknown shader link error";throw e.deleteProgram(o),new Error(n)}return o}(i),this.profile="tide"===r.edgeStyle?3:null!==(n=ie[r.id])&&void 0!==n?n:2,this.seed=13.7*function(e){var t,r=2166136261,o=a(e);try{for(o.s();!(t=o.n()).done;)r^=t.value.charCodeAt(0),r=Math.imul(r,16777619)}catch(e){o.e(e)}finally{o.f()}return(r>>>0)/4294967295}("".concat(r.id,"-shader"))+1,this.colors=r.colors.map(ne),this.motionData=oe(r.id,r.edgeStyle);var s="tide"===r.edgeStyle?ae.tide:ae[r.id]||1.04;this.motionScale=40*s/1257,this.position=i.getAttribLocation(this.program,"a_position"),this.uniforms={resolution:i.getUniformLocation(this.program,"u_resolution"),time:i.getUniformLocation(this.program,"u_time"),progress:i.getUniformLocation(this.program,"u_progress"),seed:i.getUniformLocation(this.program,"u_seed"),profile:i.getUniformLocation(this.program,"u_profile"),motion:i.getUniformLocation(this.program,"u_motion"),effect:i.getUniformLocation(this.program,"u_effect"),hasEffect:i.getUniformLocation(this.program,"u_hasEffect"),effectFrames:i.getUniformLocation(this.program,"u_effectFrames"),motionDuration:i.getUniformLocation(this.program,"u_motionDuration"),motionScale:i.getUniformLocation(this.program,"u_motionScale"),dark:i.getUniformLocation(this.program,"u_dark"),accentA:i.getUniformLocation(this.program,"u_accentA"),accentB:i.getUniformLocation(this.program,"u_accentB"),glow:i.getUniformLocation(this.program,"u_glow")},this.buffer=i.createBuffer(),i.bindBuffer(i.ARRAY_BUFFER,this.buffer),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),i.STATIC_DRAW),this.motionTexture=i.createTexture(),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,this.motionTexture),i.pixelStorei(i.UNPACK_ALIGNMENT,1),i.texImage2D(i.TEXTURE_2D,0,i.R8,Z,80,0,i.RED,i.UNSIGNED_BYTE,this.motionData),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.REPEAT),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),this.effectTexture=i.createTexture(),i.activeTexture(i.TEXTURE1),i.bindTexture(i.TEXTURE_2D,this.effectTexture),i.texImage2D(i.TEXTURE_2D,0,i.RGB,1,1,0,i.RGB,i.UNSIGNED_BYTE,new Uint8Array([32,33,38])),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),this.effectUploaded=!1},[{key:"resize",value:function(e,t,r){var o=Math.max(1,Math.round(e*r)),n=Math.max(1,Math.round(t*r));this.canvas.width===o&&this.canvas.height===n||(this.canvas.width=o,this.canvas.height=n),this.gl.viewport(0,0,o,n)}},{key:"draw",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=this.gl;o.useProgram(this.program),o.bindBuffer(o.ARRAY_BUFFER,this.buffer),o.enableVertexAttribArray(this.position),o.vertexAttribPointer(this.position,2,o.FLOAT,!1,0,0),o.uniform2f(this.uniforms.resolution,this.canvas.width,this.canvas.height),o.uniform1f(this.uniforms.time,e),o.uniform1f(this.uniforms.progress,t/100),o.uniform1f(this.uniforms.seed,this.seed),o.uniform1f(this.uniforms.profile,this.profile),o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.motionTexture),o.uniform1i(this.uniforms.motion,0),o.uniform1f(this.uniforms.motionDuration,12),o.uniform1f(this.uniforms.motionScale,this.motionScale);var n=this.effectUploaded?1:0;if(!this.effectUploaded&&r&&r.complete&&r.naturalWidth>0){o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.effectTexture),o.pixelStorei(o.UNPACK_FLIP_Y_WEBGL,!0);try{o.texImage2D(o.TEXTURE_2D,0,o.RGB,o.RGB,o.UNSIGNED_BYTE,r),this.effectUploaded=!0,n=1}catch(e){console.warn("[画境观屿] 参考纹理图集上传失败,继续使用程序化降级。",e)}o.pixelStorei(o.UNPACK_FLIP_Y_WEBGL,!1)}o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.effectTexture),o.uniform1i(this.uniforms.effect,1),o.uniform1f(this.uniforms.hasEffect,n),o.uniform1f(this.uniforms.effectFrames,24),o.uniform3fv(this.uniforms.dark,this.colors[0]),o.uniform3fv(this.uniforms.accentA,this.colors[1]),o.uniform3fv(this.uniforms.accentB,this.colors[2]),o.uniform3fv(this.uniforms.glow,this.colors[3]),o.drawArrays(o.TRIANGLES,0,6)}},{key:"setColors",value:function(e){this.colors=e.map(ne)}},{key:"dispose",value:function(){var e=this.gl;e.deleteBuffer(this.buffer),e.deleteTexture(this.motionTexture),e.deleteTexture(this.effectTexture),e.deleteProgram(this.program);var t=e.getExtension("WEBGL_lose_context");t&&t.loseContext()}}])}();var ce=Object.create(null),ue={"model-training":["#20131f","#ff3f94","#ff8a3d","#fff06a"],"agent-migration":["#111a31","#245bff","#00cfff","#5dffe6"],"visual-training":["#1f172b","#7042ff","#42f58d","#c4ff8a"],tide:["#0a2239","#2e9bff","#7fe3ff","#eaf9ff"]};function de(e,t,r,o,n,i,a){e.save(),e.translate(t,r),e.scale(1,n/o);var s=e.createRadialGradient(0,0,0,0,0,o);s.addColorStop(0,"".concat(i).concat(Math.round(255*a).toString(16).padStart(2,"0"))),s.addColorStop(.46,"".concat(i).concat(Math.round(.42*a*255).toString(16).padStart(2,"0"))),s.addColorStop(1,"".concat(i,"00")),e.fillStyle=s,e.fillRect(-o,-o,2*o,2*o),e.restore()}function he(e){return ce[e]||(ce[e]=function(e){var t=ue[e]||ue["visual-training"],r=document.createElement("canvas");r.width=1536,r.height=32;for(var o=r.getContext("2d"),n=0;n<24;n+=1){var i=n/24*Math.PI*2,a=64*n;o.save(),o.translate(a,0),o.fillStyle=t[0],o.fillRect(0,0,64,32),o.globalCompositeOperation="screen",de(o,35+5*Math.sin(.83*i),10+5*Math.cos(.61*i),27,18,t[1],"agent-migration"===e?.32:.42),de(o,45+4*Math.cos(.72*i),23+4*Math.sin(.54*i),22,15,t[2],.44),de(o,53+2*Math.sin(1.07*i),16+6*Math.cos(.89*i),12,13,t[3],"model-training"===e?.3:.2),o.globalCompositeOperation="source-over";var s=o.createRadialGradient(41,16,1,41,16,17);s.addColorStop(0,"rgba(5,6,11,0.64)"),s.addColorStop(.58,"rgba(6,7,12,0.26)"),s.addColorStop(1,"rgba(6,7,12,0)"),o.fillStyle=s,o.fillRect(20,0,44,32),o.restore()}var l=new Image;l.decoding="async";var c={image:l,ready:!1};return l.addEventListener("load",function(){c.ready=!0},{once:!0}),l.addEventListener("error",function(){c.ready=!1},{once:!0}),l.src=r.toDataURL("image/png"),c}(e)),ce[e]}function fe(e){var t=e.root,r=e.canvas,o=e.preset,n=e.getProgress,i=document.createElement("canvas");i.className="hj-progress-canvas hj-progress-overlay",i.setAttribute("aria-hidden","true"),r.insertAdjacentElement("afterend",i);var a=function(e,t){try{return new le(e,t)}catch(e){return console.warn("[画境观屿] 进度流体 WebGL2 不可用,使用 Canvas 2D 降级。",e),null}}(i,o);if(!a)return i.remove(),null;var s=he(o.id);t.classList.add("has-webgl-progress");var l=function(){var e=t.getBoundingClientRect(),r=Math.max(1,e.width),o=Math.max(1,e.height),n=Math.min(window.devicePixelRatio||1,2);i.style.width="".concat(r,"px"),i.style.height="".concat(o,"px"),a.resize(r,o,n)},c=null,u=null;return"undefined"!=typeof ResizeObserver?(c=new ResizeObserver(l)).observe(t):(u=l,window.addEventListener("resize",u)),l(),{update:function(e){var t=e%12,r=n();a.draw(t,Number.isFinite(r)?r:o.initialProgress,s.ready?s.image:null)},setColors:function(e){a.setColors(e)},dispose:function(){c&&c.disconnect(),u&&window.removeEventListener("resize",u),a.dispose(),i.remove(),t.classList.remove("has-webgl-progress")}}}var pe=function(e,t,r){return Math.min(Math.max(e,t),r)},ve="undefined"!=typeof CanvasRenderingContext2D&&"filter"in CanvasRenderingContext2D.prototype;function me(e){var t,r=2166136261,o=a(e);try{for(o.s();!(t=o.n()).done;){r^=t.value.charCodeAt(0),r=Math.imul(r,16777619)}}catch(e){o.e(e)}finally{o.f()}return(r>>>0)/4294967295}function ge(e,t){return e.replace(/\{(\w+)\}/g,function(e,r){return void 0!==t[r]?t[r]:""})}var ye={"model-training":{cycles:[.98,3.05,5.45],amplitudes:[11.2,11,5.2],speeds:[.31,-.53,.78],bulgeAmplitude:8.2,timeScale:1,glowWidth:5.8,haloWidth:20,whiteAlpha:.72,whiteWidth:1.15,cloudWidth:.17,autoRange:[25,66]},"agent-migration":{cycles:[.62,1.55,2.95],amplitudes:[16,7.8,2.3],speeds:[.25,-.4,.6],bulgeAmplitude:8.4,timeScale:.82,glowWidth:6.3,haloWidth:21,whiteAlpha:.18,whiteWidth:.45,cloudWidth:.18,autoRange:[24,62]},"visual-training":{cycles:[.88,2.45,4.35],amplitudes:[12.8,10.2,4.3],speeds:[.28,-.47,.69],bulgeAmplitude:7.3,timeScale:.91,glowWidth:6,haloWidth:21,whiteAlpha:.3,whiteWidth:.55,cloudWidth:.175,autoRange:[20,75]},tide:{cycles:[.72,1.9,4.2],amplitudes:[19,6.5,1.5],speeds:[.42,-.5,.66],bulgeAmplitude:9.5,timeScale:.85,glowWidth:6.2,haloWidth:21,whiteAlpha:.5,whiteWidth:1,cloudWidth:.18,autoRange:[18,70],surge:.55}},be=function(){return i(function e(t){var r,n,i,a=this,s=t.root,l=t.canvas,c=t.valueElement,u=t.preset,d=t.emitter,h=t.options,f=t.copy;o(this,e),this.root=s,this.canvas=l,this.valueElement=c,this.preset=u,this.emitter=d,this.options=h,this.copy=f,this.profile="tide"===u.edgeStyle?ye.tide:ye[u.id]||ye["visual-training"],this.min=null!==(r=h.min)&&void 0!==r?r:0,this.max=null!==(n=h.max)&&void 0!==n?n:100,this.dprCap=b(h.quality),this.ctx=l.getContext("2d"),this.value=pe(null!==(i=h.value)&&void 0!==i?i:u.initialProgress,this.min,this.max),this.dragging=!1,this.webglActive=!1,this.flowTime=31*me(u.id),this.seed=me("".concat(u.id,"-reference"))*Math.PI*2,this.randomState=Math.floor(2147483647*me("".concat(u.id,"-auto")))||1,this.dpr=1,this.width=0,this.height=0,this.handlers={},this.resizeObserver="undefined"!=typeof ResizeObserver?new ResizeObserver(function(){return a.resizeCanvas()}):null,this.resizeObserver?this.resizeObserver.observe(this.root):window.addEventListener("resize",this.resizeCanvas),this.suppressEvents=!0,this.setProgress(this.value,"init"),this.suppressEvents=!1,this.bindEvents(),this.resizeCanvas()},[{key:"random",value:function(){return this.randomState=Math.imul(this.randomState,1664525)+1013904223>>>0,this.randomState/4294967296}},{key:"setProgress",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"auto";this.value=pe(e,this.min,this.max);var r=Math.round(this.value);this.root.style.setProperty("--progress",this.value.toFixed(2)),this.root.setAttribute("aria-valuenow",String(r)),this.root.setAttribute("aria-valuetext","".concat(r).concat(this.copy.valueSuffix)),this.valueElement.textContent="".concat(r).concat(this.copy.valueSuffix),this.suppressEvents||this.emitter.emit("change",{value:this.value,source:t})}},{key:"resizeCanvas",value:function(){var e=this.root.getBoundingClientRect();this.dpr=Math.min(window.devicePixelRatio||1,this.dprCap),this.width=Math.max(1,e.width),this.height=Math.max(1,e.height),this.canvas.width=Math.round(this.width*this.dpr),this.canvas.height=Math.round(this.height*this.dpr),this.canvas.style.width="".concat(this.width,"px"),this.canvas.style.height="".concat(this.height,"px"),this.ctx.setTransform(this.dpr,0,0,this.dpr,0,0)}},{key:"edgeEnvelope",value:function(e){var t=Math.sin(Math.PI*pe(e,0,1));return Math.pow(Math.max(t,0),.48)}},{key:"localBulge",value:function(e,t,r){var o=0===r?1:-1,n=.28+.4*r+.13*Math.sin(t*(.19+.035*r)+this.seed*(1.1+r)),i=.075+.016*r+.012*Math.sin(.13*t+2.1*this.seed),a=(e-n)/Math.max(i,.035);return Math.exp(-.5*a*a)*Math.sin(t*(.71+.09*r)+this.seed*(2.7+r))*this.profile.bulgeAmplitude*o}},{key:"edgeOffset",value:function(e,t){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,n=this.height>0?e/this.height:0,i=this.edgeEnvelope(n),a=t*this.profile.timeScale,s=this.profile.surge?a+this.profile.surge*Math.sin(2*a):a,l=0,c=0;c<this.profile.cycles.length;c+=1){var u=this.profile.cycles[c],d=this.profile.amplitudes[c],h=this.profile.speeds[c],f=.74+.26*Math.sin(s*(.17+.045*c)+this.seed*(c+2.4));l+=Math.sin(n*Math.PI*2*u+s*h*Math.PI*2+this.seed*(c+1)+r)*d*f}return l+=this.localBulge(n,s+r,0),(l+=this.localBulge(n,s-.7*r,1))*i*o}},{key:"createEdgePath",value:function(e,t,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,i=Math.max(1.8,this.height/92);e.beginPath();for(var a=0;a<=this.height+i;a+=i){var s=t+this.edgeOffset(a,r,o,n);0===a?e.moveTo(s,a):e.lineTo(s,a)}}},{key:"createFillPath",value:function(e,t,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,i=Math.max(1.8,this.height/92);e.beginPath(),e.moveTo(0,0),e.lineTo(t+this.edgeOffset(0,r,o,n),0);for(var a=i;a<=this.height+i;a+=i)e.lineTo(t+this.edgeOffset(a,r,o,n),a);e.lineTo(0,this.height),e.closePath()}},{key:"drawEllipticalGlow",value:function(e,t,r,o,n,i){var a=this.ctx;a.save(),a.translate(e,t),a.scale(1,o/r);var s=a.createRadialGradient(0,0,0,0,0,r);s.addColorStop(0,O(n,i)),s.addColorStop(.42,O(n,.48*i)),s.addColorStop(1,O(n,0)),a.globalCompositeOperation="screen",a.fillStyle=s,a.fillRect(-r,-r,2*r,2*r),a.restore()}},{key:"drawDarkEllipticalShadow",value:function(e,t,r,o,n){var i=this.ctx;i.save(),i.translate(e,t),i.scale(1,o/r);var a=i.createRadialGradient(0,0,0,0,0,r);a.addColorStop(0,"rgba(6, 6, 11, ".concat(n,")")),a.addColorStop(.54,"rgba(8, 8, 14, ".concat(.62*n,")")),a.addColorStop(1,"rgba(8, 8, 14, 0)"),i.globalCompositeOperation="source-over",i.fillStyle=a,i.fillRect(-r,-r,2*r,2*r),i.restore()}},{key:"drawColorClouds",value:function(e,t,r,o,n){this.ctx;var i=this.width,a=this.height,s=this.profile.cloudWidth,l=t*this.profile.timeScale,c=a*(.28+.13*Math.sin(.24*l+this.seed)),u=a*(.7+.12*Math.cos(.21*l+1.7*this.seed)),d=a*(.49+.15*Math.sin(.31*l+2.3*this.seed)),h=e-.095*i,f=Math.max(52,i*s),p=.42*a;this.drawEllipticalGlow(h,c,f,p,r,.38),this.drawDarkEllipticalShadow(h+.16*f,c,.58*f,.66*p,.74);var v=e-.072*i,m=Math.max(44,i*s*.82),g=.36*a;this.drawEllipticalGlow(v,u,m,g,o,.31),this.drawDarkEllipticalShadow(v+.14*m,u,.54*m,.62*g,.64),this.drawEllipticalGlow(e-.034*i,d,Math.max(30,i*s*.48),.27*a,n,.2)}},{key:"drawPathBand",value:function(e){var t=e.baseX,r=e.time,o=e.phase,n=e.amplitudeScale,i=e.color,a=e.alpha,s=e.blur,l=e.width,c=e.composite,u=void 0===c?"screen":c,d=this.ctx;this.createEdgePath(d,t,r,o,n),d.save(),d.globalCompositeOperation=u,d.globalAlpha=a,ve&&(d.filter="blur(".concat(s,"px)")),d.strokeStyle=i,d.lineWidth=l,d.stroke(),d.restore()}},{key:"setRange",value:function(e,t){this.min=e,this.max=t;var r=pe(this.value,this.min,this.max);r!==this.value&&this.setProgress(r,"prop")}},{key:"drawReferenceFlow",value:function(){var e=this.ctx,t=this.width,r=this.height;if(!(!e||t<=0||r<=0)){var o=t*(this.value/100),n=this.flowTime,i=u(this.preset.colors,4),a=i[0],s=i[1],l=i[2],c=i[3];e.clearRect(0,0,t,r),e.fillStyle="#202126",e.fillRect(0,0,t,r),this.createFillPath(e,o,n,0,1);var d=e.createLinearGradient(0,0,Math.max(o,1),0);d.addColorStop(0,a),d.addColorStop(.74,a),d.addColorStop(.89,O(a,.99)),d.addColorStop(.955,O(s,.09)),d.addColorStop(.992,O(l,.54)),d.addColorStop(1,O(c,.78)),e.fillStyle=d,e.fill(),this.drawColorClouds(o,n,s,l,c),this.drawPathBand({baseX:o-.105*t,time:n,phase:1.42,amplitudeScale:1.18,color:s,alpha:.22,blur:21,width:54}),this.drawPathBand({baseX:o-.073*t,time:n,phase:-.92,amplitudeScale:1.06,color:l,alpha:.3,blur:15,width:42}),this.drawPathBand({baseX:o-.047*t,time:n,phase:.42,amplitudeScale:.94,color:"rgba(5, 5, 10, 0.92)",alpha:.72,blur:12,width:34,composite:"source-over"}),this.drawPathBand({baseX:o-.025*t,time:n,phase:-.28,amplitudeScale:.96,color:l,alpha:.66,blur:8,width:28}),e.save(),this.createFillPath(e,o,n,0,1),e.clip(),this.createEdgePath(e,o,n,0,1),e.save(),e.globalCompositeOperation="screen",e.strokeStyle=O(s,.2),e.lineWidth=this.profile.haloWidth,e.shadowColor=s,e.shadowBlur=.72*this.profile.haloWidth,e.stroke(),e.restore(),e.save(),e.globalCompositeOperation="screen",e.strokeStyle=O(l,.78),e.lineWidth=this.profile.glowWidth+4.2,e.shadowColor=l,e.shadowBlur=8,e.stroke(),e.restore(),e.save(),e.globalCompositeOperation="screen",e.strokeStyle=O(c,.88),e.lineWidth=this.profile.glowWidth,e.shadowColor=c,e.shadowBlur=5,e.stroke(),e.restore(),e.restore(),e.save(),e.globalCompositeOperation="screen",e.strokeStyle=O(c,.84),e.lineWidth=2.15,e.shadowColor=c,e.shadowBlur=2.5,this.createEdgePath(e,o,n,0,1),e.stroke(),e.restore(),this.profile.whiteAlpha>.05&&(e.save(),e.globalCompositeOperation="screen",e.strokeStyle="rgba(255,255,245,".concat(this.profile.whiteAlpha,")"),e.lineWidth=this.profile.whiteWidth,this.createEdgePath(e,o,n,0,1),e.stroke(),e.restore())}}},{key:"updateFromPointer",value:function(e){var t=this.root.getBoundingClientRect(),r=t.width>0?(e.clientX-t.left)/t.width:0;this.setProgress(100*r,"drag")}},{key:"beginDrag",value:function(e){if(void 0===e.button||0===e.button){e.preventDefault(),this.dragging=!0,this.root.classList.add("is-dragging");try{var t,r;null===(t=(r=this.root).setPointerCapture)||void 0===t||t.call(r,e.pointerId)}catch(e){}this.emitter.emit("dragstart",{value:this.value}),this.updateFromPointer(e)}}},{key:"moveDrag",value:function(e){this.dragging&&(e.preventDefault(),this.updateFromPointer(e))}},{key:"endDrag",value:function(e){if(this.dragging){this.dragging=!1,this.root.classList.remove("is-dragging");try{var t,r;void 0!==(null==e?void 0:e.pointerId)&&null!==(t=(r=this.root).hasPointerCapture)&&void 0!==t&&t.call(r,e.pointerId)&&this.root.releasePointerCapture(e.pointerId)}catch(e){}this.emitter.emit("dragend",{value:this.value})}}},{key:"bindEvents",value:function(){var e=this;!1!==this.options.draggable&&(this.handlers.pointerdown=function(t){return e.beginDrag(t)},this.handlers.pointermove=function(t){return e.moveDrag(t)},this.handlers.pointerup=function(t){return e.endDrag(t)},this.handlers.pointercancel=function(t){return e.endDrag(t)},this.root.addEventListener("pointerdown",this.handlers.pointerdown),this.root.addEventListener("pointermove",this.handlers.pointermove),this.root.addEventListener("pointerup",this.handlers.pointerup),this.root.addEventListener("pointercancel",this.handlers.pointercancel)),!1!==this.options.keyboard&&(this.handlers.keydown=function(t){var r={ArrowLeft:-2,ArrowDown:-2,ArrowRight:2,ArrowUp:2,PageDown:-10,PageUp:10};if("Home"===t.key)t.preventDefault(),e.setProgress(e.min,"keyboard");else if("End"===t.key)t.preventDefault(),e.setProgress(e.max,"keyboard");else{if(!r[t.key])return;t.preventDefault(),e.setProgress(e.value+r[t.key],"keyboard")}},this.root.addEventListener("keydown",this.handlers.keydown))}},{key:"update",value:function(e,t){t||(this.flowTime+=e)}},{key:"draw",value:function(){this.webglActive||this.drawReferenceFlow()}},{key:"randomize",value:function(){this.flowTime=40*this.random()}},{key:"setColors",value:function(e){Array.isArray(e)&&4===e.length&&(this.preset=c(c({},this.preset),{},{colors:e}))}},{key:"dispose",value:function(){this.resizeObserver?this.resizeObserver.disconnect():window.removeEventListener("resize",this.resizeCanvas);for(var e=0,t=Object.keys(this.handlers);e<t.length;e++){var r=t[e],o=this.handlers[r];this.root.removeEventListener(r,o)}this.handlers={}}}])}();e.ALL_PRESETS=M,e.COPY=D,e.CosmicRenderer=N,e.DEFAULTS=L,e.FallbackRenderer=W,e.PRESETS=T,e.PROGRESS_PRESETS=P,e.ProgressCapsuleController=be,e.ProgressFlowRenderer=le,e.QUALITY_TIERS=y,e.createCapsule=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||"function"!=typeof e.appendChild)throw new Error("createCapsule: container element is required");var o=c({},F("capsule",null!==(t=r.preset)&&void 0!==t?t:"NC-01")),n=w(L.capsule,o,r),i=c(c({},D),n.copy||{}),a=document.createElement("div");a.className="hj-capsule-root hj-capsule-cosmic",a.dataset.group=o.group,a.dataset.mode="nebula",a.dataset.theme=o.theme||"light",a.setAttribute("aria-label",i.capsuleAria.replace("{name}",o.name));var s=!1!==i.enabled&&!1!==n.showCopy,l=function(e,t){var r=i[e];return void 0===r?t:r},u=document.createElement("div");u.className="hj-capsule-copy";var d,h=function(){var e,t,r,n,i;s&&(u.innerHTML=(e=l("code",o.code),t=l("name",o.name),r=l("subtitle",o.subtitle),n=l("state","LIVE COSMIC STUDY"),i="",e&&(i+='<span class="hj-capsule-code">'.concat(e,"</span>")),t&&(i+='<span class="hj-capsule-name">'.concat(t,"</span>")),r&&(i+='<span class="hj-capsule-brand">'.concat(r,"</span>")),n&&(i+='<span class="hj-capsule-state">'.concat(n,"</span>")),i))};h(),i.background&&a.style.setProperty("--hj-copy-bg","string"==typeof(d=i.background)&&/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(d)?"linear-gradient(90deg, ".concat(i.background," 0%, ").concat(i.background," 74%, ").concat(O(i.background,.97)," 84%, ").concat(O(i.background,0)," 100%)"):i.background),i.color&&a.style.setProperty("--hj-copy-color",i.color);var f=document.createElement("canvas");f.className="hj-capsule-canvas",f.setAttribute("aria-hidden","true"),s&&a.appendChild(u),a.appendChild(f),e.appendChild(a);var p,m=v(),y=n.respectReducedMotion&&"undefined"!=typeof matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches;if("canvas2d"!==n.renderer)try{p=new N(f,n,{dprCap:b(n.quality)})}catch(e){p=new W(f,n),m.emit("error",{message:String(e&&e.message?e.message:e)})}else p=new W(f,n);var E=function(){a.style.width=g(n.width),a.style.height=g(n.height);for(var e=n.cssVars||{},t=0,r=Object.keys(e);t<r.length;t++){var o=r[t];a.style.setProperty(o,e[o])}p.resize()};E();var C="undefined"!=typeof ResizeObserver?new ResizeObserver(function(){return p.resize()}):null;C?C.observe(a):window.addEventListener("resize",p.resize);var x=J(a);!1!==n.interactive&&(a.addEventListener("pointerenter",function(){return m.emit("pointerenter",{preset:c({},o)})}),a.addEventListener("pointerleave",function(){return m.emit("pointerleave",{preset:c({},o)})})),a.addEventListener("click",function(e){m.emit("click",{event:e,preset:c({},o)})}),a.addEventListener("pointerdown",function(e){return m.emit("pointerdown",{event:e,preset:c({},o)})}),a.addEventListener("pointerup",function(e){return m.emit("pointerup",{event:e,preset:c({},o)})}),a.addEventListener("dblclick",function(e){return m.emit("dblclick",{event:e,preset:c({},o)})});var A=0,S=Q(function(e){A+=e,x.isVisible()&&p.draw(A)},function(){return y});return m.emit("ready",{preset:c({},o)}),{element:a,canvas:f,preset:o,on:m.on,off:m.off,setPreset:function(e){var t=F("capsule",e);return Object.assign(o,t),p.setPreset(t),a.dataset.mode="nebula",a.dataset.theme=o.theme||"light",h(),p.resize(),m.emit("presetchange",{preset:c({},t)}),this},setColors:function(e){return Array.isArray(e)&&4===e.length?(o.colors=e,p.setPreset(c(c({},o),{},{colors:e})),this):this},setSize:function(e,t){return void 0!==e&&(n.width=e),void 0!==t&&(n.height=t),E(),this},randomize:function(){return p.randomize(),this},pause:function(){return y=!0,this},resume:function(){return y=!1,this},setQuality:function(e){return n.quality=e,"function"==typeof p.setDprCap&&p.setDprCap(b(e)),this},dispose:function(){S(),x.dispose(),C?C.disconnect():window.removeEventListener("resize",p.resize),p.dispose(),a.remove()}}},e.createColorBackground=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||"function"!=typeof e.appendChild)throw new Error("createColorBackground: host element is required");var o=c({},F("capsule",null!==(t=r.preset)&&void 0!==t?t:"NC-01")),n=w({quality:L.capsule.quality,renderer:L.capsule.renderer,respectReducedMotion:L.capsule.respectReducedMotion,mouseColor:!0,opacity:1,fallbackColor:!0},o,r),i=getComputedStyle(e);"static"!==i.position&&""!==i.position||(e.style.position="relative"),e.style.isolation="isolate";var a=document.createElement("div");a.className="dlc-color-layer";var s=function(){a.style.setProperty("--dlc-color-opacity",String(n.opacity));var e=!1===n.fallbackColor||null==n.fallbackColor?"transparent":"string"==typeof n.fallbackColor?n.fallbackColor:o.colors[0];a.style.setProperty("--dlc-color-bg",e)};s();var l=document.createElement("canvas");l.className="dlc-color-canvas",l.setAttribute("aria-hidden","true"),a.appendChild(l),e.appendChild(a);var u,d=v(),h=n.respectReducedMotion&&"undefined"!=typeof matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches;if("canvas2d"!==n.renderer)try{u=new N(l,n,{dprCap:b(n.quality),mouseColor:!1!==n.mouseColor,eventTarget:e})}catch(e){u=new W(l,n),d.emit("error",{message:String(e&&e.message?e.message:e)})}else u=new W(l,n);var f="undefined"!=typeof ResizeObserver?new ResizeObserver(function(){return u.resize()}):null;f?f.observe(e):window.addEventListener("resize",u.resize);var p=J(a),m=0,g=Q(function(e){m+=e,p.isVisible()&&u.draw(m)},function(){return h});return d.emit("ready",{preset:c({},o)}),{element:e,layer:a,canvas:l,preset:o,on:d.on,off:d.off,setPreset:function(e){var t=F("capsule",e);return Object.assign(o,t),u.setPreset(t),u.resize(),s(),d.emit("presetchange",{preset:c({},t)}),this},setColors:function(e){return Array.isArray(e)&&4===e.length?(o.colors=e,u.setPreset(c(c({},o),{},{colors:e})),s(),this):this},setQuality:function(e){return n.quality=e,"function"==typeof u.setDprCap&&u.setDprCap(b(e)),this},setOpacity:function(e){var t=Number(e);return Number.isFinite(t)?(n.opacity=Math.min(1,Math.max(0,t)),a.style.setProperty("--dlc-color-opacity",String(n.opacity)),this):this},randomize:function(){return u.randomize(),this},pause:function(){return h=!0,this},resume:function(){return h=!1,this},dispose:function(){g(),p.dispose(),f?f.disconnect():window.removeEventListener("resize",u.resize),u.dispose(),a.remove()}}},e.createProgressCapsule=function(e){var t,r,o,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||"function"!=typeof e.appendChild)throw new Error("createProgressCapsule: container element is required");var i=c({},F("progress",null!==(t=n.preset)&&void 0!==t?t:"NC-10")),a=w(L.progress,i,n),s=c(c({},D),a.copy||{}),l=document.createElement("div");l.className="hj-capsule-root hj-progress-root",l.setAttribute("role","slider"),l.setAttribute("tabindex","0"),l.setAttribute("data-draggable",String(!1!==a.draggable)),l.setAttribute("aria-valuemin",String(null!==(r=a.min)&&void 0!==r?r:0)),l.setAttribute("aria-valuemax",String(null!==(o=a.max)&&void 0!==o?o:100)),l.setAttribute("aria-valuenow",String(i.initialProgress)),l.setAttribute("aria-label",ge(s.progressAria,{brand:s.brandName,code:i.code,name:i.name})),!1===a.keyboard&&l.setAttribute("tabindex","-1");var u=document.createElement("canvas");u.className="hj-progress-canvas",u.setAttribute("aria-hidden","true");var d=!1!==s.enabled&&!1!==a.showCopy;function h(){var e,t,r,o="",n=s.brandName||"",a=(e="subtitle",t=i.subtitle,void 0===(r=s[e])?t:r);return n&&(o+='<span class="hj-progress-name">'.concat(n,"</span>")),a&&(o+='<span class="hj-progress-subtitle">'.concat(a,"</span>")),o}var f=document.createElement("div");f.className="hj-progress-copy";var p=function(){d&&(f.innerHTML=h())};p(),s.background&&(l.style.setProperty("--hj-progress-copy-bg",s.background),l.style.setProperty("--hj-progress-copy-pad","6px 12px")),s.color&&l.style.setProperty("--hj-progress-copy-color",s.color);var m=document.createElement("div");m.className="hj-progress-value",m.setAttribute("aria-hidden","true");var y=document.createElement("span");y.className="hj-progress-drag-label",y.setAttribute("aria-hidden","true"),y.textContent=s.dragLabel,l.appendChild(u),d&&l.appendChild(f),l.appendChild(m),l.appendChild(y),e.appendChild(l);var E=v(),C=a.respectReducedMotion&&"undefined"!=typeof matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches,x=function(){l.style.width=g(a.width),l.style.height=g(a.height);for(var e=a.cssVars||{},t=0,r=Object.keys(e);t<r.length;t++){var o=r[t];l.style.setProperty(o,e[o])}};x();var A=new be({root:l,canvas:u,valueElement:m,preset:i,emitter:E,options:a,copy:s}),S=null;"canvas2d"!==a.renderer&&(S=fe({root:l,canvas:u,preset:i,getProgress:function(){return A.value}})),S&&(A.webglActive=!0);var _=J(l),P=0,T=Q(function(e,t){P+=e,A.update(e,!1),_.isVisible()&&(A.draw(),S&&S.update(P))},function(){return C});return E.emit("ready",{preset:c({},i)}),{element:l,canvas:u,preset:i,on:E.on,off:E.off,setValue:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"prop";return A.setProgress(e,t),this},getValue:function(){return A.value},setRange:function(e,t){return A.setRange(e,t),this},setPreset:function(e){var t=F("progress",e);return Object.assign(i,t),A.preset=t,A.profile="tide"===t.edgeStyle?ye.tide:ye[t.id]||ye["visual-training"],A.flowTime=31*me(t.id),A.seed=me("".concat(t.id,"-reference"))*Math.PI*2,l.setAttribute("aria-label",ge(s.progressAria,{brand:s.brandName,code:i.code,name:i.name})),p(),S&&(S.dispose(),S=fe({root:l,canvas:u,preset:t,getProgress:function(){return A.value}})),A.webglActive=Boolean(S),A.resizeCanvas(),E.emit("presetchange",{preset:c({},t)}),this},setColors:function(e){return Array.isArray(e)&&4===e.length?(A.setColors(e),S&&S.setColors(e),A.resizeCanvas(),this):this},setSize:function(e,t){return void 0!==e&&(a.width=e),void 0!==t&&(a.height=t),x(),A.resizeCanvas(),this},randomize:function(){return A.randomize(),this},pause:function(){return C=!0,this},resume:function(){return C=!1,this},setQuality:function(e){return a.quality=e,A.dprCap=b(e),A.resizeCanvas(),this},dispose:function(){T(),_.dispose(),S&&S.dispose(),A.dispose(),l.remove()}}},e.dprCapFor=b,e.getPreset=F,e.hexToRgb01=B,e.hexToRgba=O,e.parseSize=g,e.pauseAll=function(){V=!0},e.resumeAll=function(){V=!1},e.validateColors=function(e){return Array.isArray(e)&&4===e.length&&e.every(function(e){return"string"==typeof e&&/^#[0-9a-f]{6}$/i.test(e)})},e.validatePreset=R,e.validateProgressPreset=k});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CosmicCapsules={})}(this,function(e){"use strict";function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o}function r(e,t,r){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:r;throw new TypeError("Private element is not present on this object")}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.add(e)}function i(e,t,r){return t&&function(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,h(o.key),o)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function a(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=p(e))||t){r&&(e=r);var o=0,n=function(){};return{s:n,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function s(e,t,r){return(t=h(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,o)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach(function(t){s(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o,n,i,a,s=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(o=i.call(r)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){c=!0,n=e}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw n}}return s}}(e,t)||p(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||p(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function p(e,r){if(e){if("string"==typeof e)return t(e,r);var o={}.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?t(e,r):void 0}}function v(){var e=Object.create(null);return{on:function(t,r){return e[t]||(e[t]=[]),e[t].push(r),function(){var o=e[t];if(o){var n=o.indexOf(r);-1!==n&&o.splice(n,1)}}},off:function(t,r){var o=e[t];if(!o)return!1;var n=o.indexOf(r);return-1!==n&&(o.splice(n,1),!0)},emit:function(t){var r=e[t];if(r){for(var o=arguments.length,n=new Array(o>1?o-1:0),i=1;i<o;i++)n[i-1]=arguments[i];var s,l=a(r.slice());try{for(l.s();!(s=l.n()).done;){s.value.apply(void 0,n)}}catch(e){l.e(e)}finally{l.f()}}}}}var m=/^[\d.]+(?:px|%|vw|vh|vmin|vmax|em|rem)$/;function g(e){if("number"==typeof e){if(!Number.isFinite(e)||e<0)throw new Error("Invalid size: ".concat(e));return"".concat(e,"px")}if("string"!=typeof e)throw new Error("Invalid size: ".concat(String(e)));var t=e.trim();if(!t)throw new Error("Invalid size: empty string");if(/^\d+(?:\.\d+)?$/.test(t))return"".concat(t,"px");if(!m.test(t))throw new Error('Invalid size or unsupported unit: "'.concat(e,'" (use px, %, vw, vh, vmin, vmax, em, rem)'));return t}var y={low:{dpr:1},medium:{dpr:1.5},high:{dpr:2}};function b(e){return"auto"===e?(t="undefined"!=typeof navigator?navigator:null,r=t&&"number"==typeof t.deviceMemory?t.deviceMemory:8,o=t&&"number"==typeof t.hardwareConcurrency?t.hardwareConcurrency:8,r<=4||o<=4?1.5:2):(y[e]||y.medium).dpr;var t,r,o}function w(e,t,r){var o=function(e){for(var t={},r=0,o=Object.keys(e);r<o.length;r++){var n=o[r];void 0!==e[n]&&(t[n]=e[n])}return t},n=o(t&&"object"===f(t)?t:{}),i=o(r&&"object"===f(r)?r:{});return c(c(c({},e),n),i)}var E=["#EAF6FF","#8FD0FF","#3B87F6","#6B58E9"],C=["#EDF2FF","#2F58D5","#1B2040","#E07A43"],x=["#F2EEFF","#B99AF1","#8F74DB","#D7D85C"],S=["#F5F6F8","#B9C0CC","#7F8793","#4A4F59"],_=["#FFF0E6","#F6C26B","#F98A64","#E86D74"],P=[{id:"original",code:"NC-01",name:"初光",group:"warm",seed:1.7,speed:.5,colors:d(["#FFF3EA","#F5B27A","#F67BC6","#A978E8"])},{id:"ocean",code:"NC-02",name:"沧溟",group:"cold",seed:8.2,speed:.48,colors:d(E)},{id:"klein",code:"NC-03",name:"玄夜",group:"cold",seed:14.1,speed:.49,colors:d(C)},{id:"ultraviolet",code:"NC-04",name:"紫霄",group:"cold",seed:23.4,speed:.47,colors:d(x)},{id:"chrome",code:"NC-05",name:"银汉",group:"cold",seed:37.8,speed:.42,colors:d(S)},{id:"plus",code:"NC-06",name:"熔金",group:"warm",seed:51.3,speed:.5,colors:d(_)}],A=[{id:"model-training",code:"NC-10",name:"星火",subtitle:"SHA 4.5 + 100 2026 TKN",group:"progress",initialProgress:43,edgeStyle:"flow",colors:["#2B1025","#FF3F94","#FF8A3D","#FFF06A"]},{id:"agent-migration",code:"NC-11",name:"迁流",subtitle:"TRANSFERRING PROTOCOL",group:"progress",initialProgress:33,edgeStyle:"flow",colors:["#101C37","#245BFF","#00CFFF","#5DFFE6"]},{id:"visual-training",code:"NC-12",name:"幻境",subtitle:"GENERATING POWER ++",group:"progress",initialProgress:58,edgeStyle:"flow",colors:["#21142D","#7042FF","#42F58D","#C4FF8A"]},{id:"tide",code:"NC-13",name:"汐潮",subtitle:"MOON PULL / COAST",group:"progress",initialProgress:30,edgeStyle:"tide",colors:["#0A2239","#2E9BFF","#7FE3FF","#EAF9FF"]}],T=P,M=[].concat(d(P),d(A));function R(e,t){var r="capsule"===e?P:"progress"===e?A:null;if(!r)throw new Error("Unknown preset kind: ".concat(e,' (use "capsule" or "progress")'));var o=String(t).trim().toLowerCase(),n=r.find(function(e){return e.name.toLowerCase()===o});if(!n)throw new Error("Unknown ".concat(e," preset: ").concat(t));return n}var k={capsule:{width:"100%",height:160,quality:"auto",renderer:"auto",respectReducedMotion:!0,mouseColor:!0,showCopy:!0},progress:{width:454,height:104,min:0,max:100,draggable:!0,keyboard:!0,edgeStyle:"flow",quality:"auto",renderer:"auto",showCopy:!0,respectReducedMotion:!0}},F={brandName:"画境观屿",dragLabel:"DRAG",valueSuffix:"%",progressAria:"{brand} {code} 加载进度",capsuleAria:"打开 {name} 沉浸预览"};function L(e){var t=e.replace("#",""),r=Number.parseInt(t,16);return[(r>>16&255)/255,(r>>8&255)/255,(255&r)/255]}function D(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=e.replace("#",""),o=Number.parseInt(r,16),n=o>>8&255,i=255&o;return"rgba(".concat(o>>16&255,", ").concat(n,", ").concat(i,", ").concat(t,")")}function B(e,t,r){var o=e.createShader(t);if(e.shaderSource(o,r),e.compileShader(o),!e.getShaderParameter(o,e.COMPILE_STATUS)){var n=e.getShaderInfoLog(o)||"Unknown shader compile error";throw e.deleteShader(o),new Error(n)}return o}var O=new WeakSet,U=function(){return i(function e(t,i){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(o(this,e),n(this,O),this.canvas=t,this.preset=c({},i),this.options=c({dprCap:1.75,mouseColor:!0},a),this.gl=t.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,powerPreference:"high-performance",preserveDrawingBuffer:!1}),!this.gl)throw new Error("WebGL2 is not available");this.program=function(e){var t=B(e,e.VERTEX_SHADER,"#version 300 es\nin vec2 a_position;\nout vec2 v_uv;\nvoid main() {\n v_uv = a_position * 0.5 + 0.5;\n gl_Position = vec4(a_position, 0.0, 1.0);\n}"),r=B(e,e.FRAGMENT_SHADER,"#version 300 es\nprecision highp float;\n\nin vec2 v_uv;\nout vec4 outColor;\n\nuniform vec2 u_resolution;\nuniform float u_time;\nuniform float u_seed;\nuniform float u_motion;\nuniform vec2 u_pointer;\nuniform vec3 u_colorA;\nuniform vec3 u_colorB;\nuniform vec3 u_colorC;\nuniform vec3 u_colorD;\n\nfloat hash21(vec2 p) {\n p = fract(p * vec2(123.34, 456.21));\n p += dot(p, p + 45.32 + u_seed);\n return fract(p.x * p.y);\n}\n\nfloat noise(vec2 p) {\n vec2 i = floor(p);\n vec2 f = fract(p);\n f = f * f * (3.0 - 2.0 * f);\n float a = hash21(i);\n float b = hash21(i + vec2(1.0, 0.0));\n float c = hash21(i + vec2(0.0, 1.0));\n float d = hash21(i + vec2(1.0, 1.0));\n return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);\n}\n\nfloat fbm(vec2 p) {\n float value = 0.0;\n float amplitude = 0.52;\n mat2 rotation = mat2(0.80, 0.60, -0.60, 0.80);\n for (int i = 0; i < 6; i++) {\n value += amplitude * noise(p);\n p = rotation * p * 2.03 + 17.7;\n amplitude *= 0.5;\n }\n return value;\n}\n\nfloat gaussian(float value, float center, float width) {\n return exp(-pow(value - center, 2.0) / max(width, 0.0001));\n}\n\nvec3 palette(float t) {\n t = clamp(t, 0.0, 1.0);\n vec3 shadow = mix(u_colorA, u_colorB, smoothstep(0.06, 0.62, t));\n vec3 body = mix(u_colorB, u_colorC, smoothstep(0.30, 0.82, t));\n vec3 highlight = mix(u_colorC, u_colorD, smoothstep(0.74, 1.0, t));\n vec3 restrained = mix(shadow, body, smoothstep(0.26, 0.72, t));\n return mix(restrained, highlight, smoothstep(0.78, 0.97, t));\n}\n\nvec3 renderNebula(vec2 uv, vec2 p, vec2 pointer, float distanceToPointer, float t) {\n vec2 delta = p - pointer;\n float influence = exp(-distanceToPointer * 4.6) * u_motion;\n float angle = influence * 1.7;\n mat2 swirl = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n p = pointer + swirl * delta;\n p += normalize(delta + 0.0001) * influence * 0.08;\n\n vec2 drift = vec2(t * 0.22, -t * 0.13);\n vec2 q = vec2(\n fbm(p * 1.35 + drift + u_seed),\n fbm(p * 1.35 + vec2(5.2, 1.3) - drift * 0.85)\n );\n vec2 r = vec2(\n fbm(p * 2.0 + 3.6 * q + vec2(1.7, 9.2) + t * 0.10),\n fbm(p * 2.0 + 3.0 * q + vec2(8.3, 2.8) - t * 0.085)\n );\n\n float cloud = fbm(p * 1.7 + 4.2 * r);\n float veins = fbm(p * 4.0 - 2.0 * q + t * 0.065);\n float nebula = smoothstep(0.18, 0.91, cloud * 0.9 + veins * 0.22);\n\n vec3 color = palette(nebula);\n color += u_colorD * pow(max(cloud - 0.63, 0.0), 2.0) * 1.05;\n color *= 0.78 + 0.34 * smoothstep(0.15, 0.9, veins);\n\n vec2 starGrid = floor((uv + vec2(u_seed * 0.013, 0.0)) * vec2(132.0, 58.0));\n vec2 starCell = fract(uv * vec2(132.0, 58.0)) - 0.5;\n float starRandom = hash21(starGrid);\n float starShape = smoothstep(0.075, 0.0, length(starCell));\n float starMask = step(0.989, starRandom) * starShape;\n float twinkle = 0.35 + 0.65 * sin(t * (1.0 + starRandom * 2.4) + starRandom * 40.0) * 0.5 + 0.5;\n color += starMask * twinkle * mix(u_colorC, u_colorD, starRandom) * 1.05;\n\n float pointerGlow = exp(-distanceToPointer * 7.0) * u_motion;\n color += u_colorD * pointerGlow * 0.28;\n return color;\n}\n\nvoid main() {\n vec2 uv = v_uv;\n vec2 p = uv - 0.5;\n p.x *= u_resolution.x / max(u_resolution.y, 1.0);\n\n vec2 pointer = u_pointer - 0.5;\n pointer.x *= u_resolution.x / max(u_resolution.y, 1.0);\n float distanceToPointer = length(p - pointer);\n\n vec3 color = renderNebula(uv, p, pointer, distanceToPointer, u_time);\n float vignette = smoothstep(0.94, 0.18, length((uv - 0.5) * vec2(1.0, 1.35)));\n color *= 0.70 + vignette * 0.42;\n color = pow(max(color, vec3(0.0)), vec3(0.88));\n\n outColor = vec4(color, 1.0);\n}"),o=e.createProgram();if(e.attachShader(o,t),e.attachShader(o,r),e.linkProgram(o),e.deleteShader(t),e.deleteShader(r),!e.getProgramParameter(o,e.LINK_STATUS)){var n=e.getProgramInfoLog(o)||"Unknown program link error";throw e.deleteProgram(o),new Error(n)}return o}(this.gl),this.locations=r(O,this,I).call(this),this.pointer=[.72,.45],this.pointerTarget=d(this.pointer),this.motion=0,this.motionTarget=0,this.timeOffset=.73*i.seed,this.visible=!0,this.disposed=!1,r(O,this,N).call(this),r(O,this,z).call(this),this.resize()},[{key:"setPreset",value:function(e){this.preset=c({},e),this.timeOffset=.73*e.seed}},{key:"setDprCap",value:function(e){this.options.dprCap=e,this.resize()}},{key:"randomize",value:function(){this.preset.seed=100*Math.random(),this.timeOffset=40*Math.random()}},{key:"resize",value:function(){var e=Math.min(window.devicePixelRatio||1,this.options.dprCap),t=this.canvas.getBoundingClientRect(),r=Math.max(2,Math.round(t.width*e)),o=Math.max(2,Math.round(t.height*e));this.canvas.width===r&&this.canvas.height===o||(this.canvas.width=r,this.canvas.height=o,this.gl.viewport(0,0,r,o))}},{key:"draw",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.disposed&&this.visible){this.resize();var r=this.gl;this.pointer[0]+=.08*(this.pointerTarget[0]-this.pointer[0]),this.pointer[1]+=.08*(this.pointerTarget[1]-this.pointer[1]),this.motion+=.07*(this.motionTarget-this.motion),r.useProgram(this.program),r.bindBuffer(r.ARRAY_BUFFER,this.buffer),r.enableVertexAttribArray(this.locations.position),r.vertexAttribPointer(this.locations.position,2,r.FLOAT,!1,0,0);var o=this.preset.colors.map(L);r.uniform2f(this.locations.resolution,this.canvas.width,this.canvas.height),r.uniform1f(this.locations.time,this.timeOffset+(t?0:e*this.preset.speed)),r.uniform1f(this.locations.seed,this.preset.seed),r.uniform1f(this.locations.motion,this.motion),r.uniform2f(this.locations.pointer,this.pointer[0],this.pointer[1]),r.uniform3fv(this.locations.colorA,o[0]),r.uniform3fv(this.locations.colorB,o[1]),r.uniform3fv(this.locations.colorC,o[2]),r.uniform3fv(this.locations.colorD,o[3]),r.drawArrays(r.TRIANGLES,0,3)}}},{key:"dispose",value:function(){this.disposed=!0;var e=this.eventTarget||this.canvas;e.removeEventListener("pointermove",this.onPointerMove),e.removeEventListener("pointerdown",this.onPointerMove),e.removeEventListener("pointerleave",this.onPointerLeave),this.gl.deleteBuffer(this.buffer),this.gl.deleteProgram(this.program);var t=this.gl.getExtension("WEBGL_lose_context");t&&t.loseContext()}}])}();function I(){var e=this,t=this.gl,r=function(r){return t.getUniformLocation(e.program,r)};return{position:t.getAttribLocation(this.program,"a_position"),resolution:r("u_resolution"),time:r("u_time"),seed:r("u_seed"),motion:r("u_motion"),pointer:r("u_pointer"),colorA:r("u_colorA"),colorB:r("u_colorB"),colorC:r("u_colorC"),colorD:r("u_colorD")}}function N(){var e=this.gl,t=new Float32Array([-1,-1,3,-1,-1,3]);this.buffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.buffer),e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)}function z(){var e=this;!1!==this.options.mouseColor&&(this.eventTarget=this.options.eventTarget||this.canvas.parentElement||this.canvas,this.onPointerMove=function(t){var r=e.canvas.getBoundingClientRect();e.pointerTarget[0]=(t.clientX-r.left)/Math.max(r.width,1),e.pointerTarget[1]=1-(t.clientY-r.top)/Math.max(r.height,1),e.motionTarget=1},this.onPointerLeave=function(){e.motionTarget=0},this.eventTarget.addEventListener("pointermove",this.onPointerMove,{passive:!0}),this.eventTarget.addEventListener("pointerdown",this.onPointerMove,{passive:!0}),this.eventTarget.addEventListener("pointerleave",this.onPointerLeave,{passive:!0}))}function j(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=u(L(e).map(function(e){return Math.round(255*e)}),3),o=r[0],n=r[1],i=r[2];return"rgba(".concat(o,", ").concat(n,", ").concat(i,", ").concat(t,")")}var G=function(){return i(function e(t,r){o(this,e),this.canvas=t,this.preset=r,this.context=t.getContext("2d"),this.visible=!0},[{key:"resize",value:function(){var e=this.canvas.getBoundingClientRect(),t=Math.min(window.devicePixelRatio||1,1.5),r=Math.max(2,Math.round(e.width*t)),o=Math.max(2,Math.round(e.height*t));this.canvas.width===r&&this.canvas.height===o||(this.canvas.width=r,this.canvas.height=o)}},{key:"drawNebula",value:function(e){var t=this.context,r=this.canvas,o=r.width,n=r.height,i=t.createLinearGradient(0,0,o,n);i.addColorStop(0,this.preset.colors[0]),i.addColorStop(.38,this.preset.colors[1]),i.addColorStop(.72,this.preset.colors[2]),i.addColorStop(1,this.preset.colors[3]),t.fillStyle=i,t.fillRect(0,0,o,n),t.globalCompositeOperation="screen";for(var a=0;a<6;a+=1){var s=(.5+.45*Math.sin(.32*e+1.7*a))*o,l=(.5+.4*Math.cos(.25*e+a))*n,c=Math.max(o,n)*(.08+a%3*.04),u=t.createRadialGradient(s,l,0,s,l,c);u.addColorStop(0,j(this.preset.colors[(a+1)%4],.24)),u.addColorStop(1,j(this.preset.colors[a%4],0)),t.fillStyle=u,t.fillRect(s-c,l-c,2*c,2*c)}t.globalCompositeOperation="source-over"}},{key:"draw",value:function(e){this.visible&&(this.resize(),this.drawNebula(e))}},{key:"setPreset",value:function(e){this.preset=e}},{key:"randomize",value:function(){}},{key:"dispose",value:function(){}}])}(),X=[],W=!1,q=!1,Y=0,V=0;function H(e){if(W){var t=V?Math.min((e-V)/1e3,.05):0;if(V=e,Y=requestAnimationFrame(H),!q){var r,o=a(X.slice());try{for(o.s();!(r=o.n()).done;){var n=r.value;try{n.isPaused()||n.onFrame(t,e)}catch(e){console.warn("[dlc-ui] frame error:",e)}}}catch(e){o.e(e)}finally{o.f()}}0===X.length&&(cancelAnimationFrame(Y),W=!1,Y=0)}}function K(e,t){var r={onFrame:e,isPaused:t};return X.push(r),W||(W=!0,V=0,Y=requestAnimationFrame(H)),function(){var e=X.indexOf(r);-1!==e&&X.splice(e,1),0===X.length&&Y&&(cancelAnimationFrame(Y),W=!1,Y=0)}}function $(e){var t=!0,r="undefined"==typeof document||!document.hidden,o=!1,n=null;"undefined"!=typeof IntersectionObserver&&(n=new IntersectionObserver(function(e){t=e.some(function(e){return e.isIntersecting})},{rootMargin:"180px"})).observe(e);var i=function(){r="undefined"!=typeof document&&!document.hidden};return"undefined"!=typeof document&&document.addEventListener("visibilitychange",i),{isVisible:function(){return t&&r},dispose:function(){o||(o=!0,n&&n.disconnect(),"undefined"!=typeof document&&document.removeEventListener("visibilitychange",i))}}}var Q=240,J={"model-training":{seed:.37,broad:.58,middle:.25,detail:.13,lobe:.24},"agent-migration":{seed:1.71,broad:.72,middle:.1,detail:.03,lobe:.18},"visual-training":{seed:2.83,broad:.66,middle:.16,detail:.06,lobe:.23},tide:{seed:4.12,broad:.82,middle:.07,detail:.02,lobe:.3,warp:.5}},Z=Object.create(null);function ee(e,t,r){var o=(e-t)/Math.max(r,.001);return Math.exp(-o*o)}function te(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"flow",r="".concat(e,":").concat(t);return Z[r]||(Z[r]=function(e){for(var t="tide"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"flow")?J.tide:J[e]||J["visual-training"],r=new Uint8Array(19200),o=0;o<Q;o+=1){var n=o/Q*Math.PI*2;t.warp&&(n+=t.warp*Math.sin(2*n));for(var i=.28+.13*Math.sin(.53*n+t.seed),a=.7+.12*Math.cos(.47*n+1.7*t.seed),s=0;s<80;s+=1){var l=s/Math.max(79,1),c=Math.pow(Math.max(Math.sin(Math.PI*l),0),.48),u=Math.sin(l*Math.PI*2*1.35+.58*n+t.seed)*t.broad,d=Math.sin(l*Math.PI*2*3.2-.91*n+2.1*t.seed)*t.middle,h=Math.sin(l*Math.PI*2*6.1+1.31*n+3.2*t.seed)*t.detail,f=(ee(l,i,.09)*Math.sin(1.11*n+4*t.seed)-ee(l,a,.1)*Math.cos(.97*n+3.3*t.seed))*t.lobe,p=Math.max(-1,Math.min(1,(u+d+h+f)*c));r[s*Q+o]=Math.round(255*(.5*p+.5))}}return r}(e,t)),Z[r]}function re(e){var t=Number.parseInt(e.replace("#",""),16);return[(t>>16&255)/255,(t>>8&255)/255,(255&t)/255]}var oe={"model-training":0,"agent-migration":1,"visual-training":2,tide:3},ne={"model-training":1.05,"agent-migration":1.04,"visual-training":1.04,tide:1.18};function ie(e,t,r){var o=e.createShader(t);if(e.shaderSource(o,r),e.compileShader(o),!e.getShaderParameter(o,e.COMPILE_STATUS)){var n=e.getShaderInfoLog(o)||"Unknown shader compile error";throw e.deleteShader(o),new Error(n)}return o}var ae=function(){return i(function e(t,r){var n;o(this,e);var i=t.getContext("webgl2",{alpha:!1,antialias:!0,premultipliedAlpha:!1,powerPreference:"high-performance"});if(!i)throw new Error("WebGL2 unavailable");this.canvas=t,this.gl=i,this.program=function(e){var t=ie(e,e.VERTEX_SHADER,"#version 300 es\nin vec2 a_position;\nout vec2 v_uv;\nvoid main() {\n v_uv = a_position * 0.5 + 0.5;\n gl_Position = vec4(a_position, 0.0, 1.0);\n}"),r=ie(e,e.FRAGMENT_SHADER,"#version 300 es\nprecision highp float;\n\nin vec2 v_uv;\nout vec4 outColor;\n\nuniform vec2 u_resolution;\nuniform float u_time;\nuniform float u_progress;\nuniform float u_seed;\nuniform float u_profile;\nuniform sampler2D u_motion;\nuniform sampler2D u_effect;\nuniform float u_hasEffect;\nuniform float u_effectFrames;\nuniform float u_motionDuration;\nuniform float u_motionScale;\nuniform vec3 u_dark;\nuniform vec3 u_accentA;\nuniform vec3 u_accentB;\nuniform vec3 u_glow;\n\nfloat hash21(vec2 p) {\n p = fract(p * vec2(123.34, 456.21));\n p += dot(p, p + 45.32 + u_seed * 11.7);\n return fract(p.x * p.y);\n}\n\nfloat noise(vec2 p) {\n vec2 i = floor(p);\n vec2 f = fract(p);\n f = f * f * (3.0 - 2.0 * f);\n float a = hash21(i);\n float b = hash21(i + vec2(1.0, 0.0));\n float c = hash21(i + vec2(0.0, 1.0));\n float d = hash21(i + vec2(1.0, 1.0));\n return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);\n}\n\nfloat fbm(vec2 p) {\n float value = 0.0;\n float amplitude = 0.55;\n mat2 rotation = mat2(0.82, 0.57, -0.57, 0.82);\n for (int i = 0; i < 6; i++) {\n value += noise(p) * amplitude;\n p = rotation * p * 2.02 + 13.7;\n amplitude *= 0.48;\n }\n return value;\n}\n\nfloat gaussian(float value, float center, float width) {\n float delta = (value - center) / max(width, 0.0001);\n return exp(-delta * delta);\n}\n\nfloat profileMix(float model, float agent, float visual) {\n if (u_profile < 0.5) return model;\n if (u_profile < 1.5) return agent;\n return visual;\n}\n\nfloat motionSample(float y, float t) {\n float phase = fract(t / max(u_motionDuration, 0.001));\n float captured = texture(u_motion, vec2(phase, 1.0 - clamp(y, 0.0, 1.0))).r;\n return (captured * 2.0 - 1.0) * u_motionScale;\n}\n\nfloat edgeDisplacement(float y, float t) {\n return motionSample(y, t);\n}\n\nfloat flowDisplacement(float y, float t) {\n return (\n motionSample(y - 0.024, t) * 0.08 +\n motionSample(y - 0.012, t) * 0.18 +\n motionSample(y, t) * 0.48 +\n motionSample(y + 0.012, t) * 0.18 +\n motionSample(y + 0.024, t) * 0.08\n );\n}\n\nfloat ellipseRing(vec2 p, float radius, float width) {\n return gaussian(length(p), radius, width);\n}\n\nvoid main() {\n vec2 uv = v_uv;\n float t = u_time;\n float edge = u_progress + edgeDisplacement(uv.y, t);\n float flowEdge = u_progress + flowDisplacement(uv.y, t);\n float d = uv.x - edge;\n float fd = uv.x - flowEdge;\n\n vec3 rightBase = vec3(0.125, 0.129, 0.145);\n vec3 color = rightBase;\n\n float leftMask = 1.0 - smoothstep(-0.001, 0.002, d);\n color = mix(color, u_dark, leftMask * profileMix(0.96, 0.92, 0.96));\n\n vec2 flowP = vec2((fd + 0.10) * 6.2, uv.y * 1.95);\n float flowA = fbm(flowP + vec2(-t * 0.22, t * 0.27) + u_seed * 1.7);\n float flowB = fbm(flowP * 1.52 + vec2(t * 0.28, -t * 0.36) + 8.2 + u_seed);\n float flowC = fbm(flowP * 2.25 + vec2(-t * 0.41, t * 0.46) + 19.0);\n\n float farCenter = profileMix(-0.060, -0.079, -0.045) + (flowA - 0.5) * profileMix(0.018, 0.022, 0.014);\n float midCenter = profileMix(-0.039, -0.052, -0.030) + (flowB - 0.5) * profileMix(0.013, 0.016, 0.010);\n float hotCenter = profileMix(-0.026, -0.029, -0.023) + (flowC - 0.5) * 0.010;\n\n float farBand = gaussian(fd, farCenter, profileMix(0.035, 0.049, 0.030));\n float midBand = gaussian(fd, midCenter, profileMix(0.026, 0.034, 0.026));\n float hotBand = gaussian(fd, hotCenter, profileMix(0.023, 0.027, 0.026));\n float darkTrough = gaussian(fd, profileMix(-0.050, -0.058, -0.044) + (flowB - 0.5) * 0.010, profileMix(0.020, 0.025, 0.021));\n\n float ringY = 0.47 + sin(t * 0.58 + u_seed * 2.4) * 0.12;\n vec2 ringP = vec2((fd + 0.086) / 0.078, (uv.y - ringY) / 0.25);\n ringP += vec2((flowB - 0.5) * 0.08, (flowA - 0.5) * 0.06);\n float ringTexture = fbm(ringP * 2.15 + vec2(t * 0.18, -t * 0.14) + u_seed * 1.9);\n float ring = ellipseRing(ringP, 0.66, 0.32) * (0.30 + 0.64 * ringTexture);\n float ringCore = gaussian(length(ringP), 0.25, 0.25);\n float ringPulse = smoothstep(0.58, 0.90, 0.5 + 0.5 * sin(t * 0.82 + u_seed * 4.1));\n float modelRing = ring * ringPulse * (1.0 - step(0.5, u_profile));\n float visualRing = ring * 0.16 * step(1.5, u_profile) * ringPulse;\n\n float cloudGate = leftMask * smoothstep(-0.30, -0.008, fd);\n float textureA = smoothstep(0.24, 0.92, flowA * 0.72 + flowB * 0.42);\n float textureB = smoothstep(0.28, 0.94, flowB * 0.68 + flowC * 0.38);\n\n vec3 hotColor = u_accentB;\n color += u_accentA * farBand * cloudGate * (0.07 + textureA * profileMix(0.42, 0.24, 0.40));\n color += u_accentB * midBand * cloudGate * (0.15 + textureB * profileMix(0.70, 0.46, 0.68));\n color += hotColor * hotBand * cloudGate * profileMix(0.88, 0.62, 0.84);\n float modelMask = 1.0 - step(0.5, u_profile);\n color += u_accentA * (modelRing + visualRing) * cloudGate * profileMix(0.54, 0.0, 0.34);\n color *= 1.0 - darkTrough * profileMix(0.44, 0.24, 0.24) * cloudGate;\n color *= 1.0 - ringCore * modelMask * ringPulse * 0.44 * cloudGate;\n\n float broadHalo = exp(-abs(d) * 96.0);\n float innerHalo = exp(-abs(d) * 176.0);\n float colorCore = exp(-abs(d) * 360.0);\n float sharpCore = exp(-abs(d) * 760.0);\n float leftGate = 1.0 - smoothstep(-0.003, 0.005, d);\n\n color += u_accentA * broadHalo * leftGate * profileMix(0.09, 0.04, 0.06);\n color += hotColor * innerHalo * leftGate * profileMix(0.76, 0.72, 0.78);\n color += u_glow * colorCore * profileMix(0.72, 0.34, 0.24);\n\n float whiteStrength = profileMix(0.10, 0.0, 0.0);\n color += vec3(1.0, 0.99, 0.91) * sharpCore * whiteStrength;\n\n float rightCut = smoothstep(0.001, 0.006, d);\n color = mix(color, rightBase, rightCut);\n\n float effectX = (d * 1257.0 + 260.0) / 320.0;\n float atlasPhase = fract(t / 12.0) * u_effectFrames;\n float atlasFrameA = floor(atlasPhase);\n float atlasFrameB = mod(atlasFrameA + 1.0, u_effectFrames);\n float atlasMix = smoothstep(0.0, 1.0, fract(atlasPhase));\n float atlasXA = (atlasFrameA + clamp(effectX, 0.0, 1.0)) / u_effectFrames;\n float atlasXB = (atlasFrameB + clamp(effectX, 0.0, 1.0)) / u_effectFrames;\n vec3 referenceA = texture(u_effect, vec2(atlasXA, uv.y)).rgb;\n vec3 referenceB = texture(u_effect, vec2(atlasXB, uv.y)).rgb;\n vec3 referenceColor = mix(referenceA, referenceB, atlasMix);\n float stripMask = smoothstep(0.0, 0.018, effectX) * (1.0 - smoothstep(0.982, 1.0, effectX));\n float referenceLeft = 1.0 - smoothstep(-0.026, -0.012, d);\n color = mix(color, referenceColor, stripMask * referenceLeft * u_hasEffect);\n\n outColor = vec4(clamp(color, 0.0, 1.0), 1.0);\n}"),o=e.createProgram();if(e.attachShader(o,t),e.attachShader(o,r),e.linkProgram(o),e.deleteShader(t),e.deleteShader(r),!e.getProgramParameter(o,e.LINK_STATUS)){var n=e.getProgramInfoLog(o)||"Unknown shader link error";throw e.deleteProgram(o),new Error(n)}return o}(i),this.profile="tide"===r.edgeStyle?3:null!==(n=oe[r.id])&&void 0!==n?n:2,this.seed=13.7*function(e){var t,r=2166136261,o=a(e);try{for(o.s();!(t=o.n()).done;)r^=t.value.charCodeAt(0),r=Math.imul(r,16777619)}catch(e){o.e(e)}finally{o.f()}return(r>>>0)/4294967295}("".concat(r.id,"-shader"))+1,this.colors=r.colors.map(re),this.motionData=te(r.id,r.edgeStyle);var s="tide"===r.edgeStyle?ne.tide:ne[r.id]||1.04;this.motionScale=40*s/1257,this.position=i.getAttribLocation(this.program,"a_position"),this.uniforms={resolution:i.getUniformLocation(this.program,"u_resolution"),time:i.getUniformLocation(this.program,"u_time"),progress:i.getUniformLocation(this.program,"u_progress"),seed:i.getUniformLocation(this.program,"u_seed"),profile:i.getUniformLocation(this.program,"u_profile"),motion:i.getUniformLocation(this.program,"u_motion"),effect:i.getUniformLocation(this.program,"u_effect"),hasEffect:i.getUniformLocation(this.program,"u_hasEffect"),effectFrames:i.getUniformLocation(this.program,"u_effectFrames"),motionDuration:i.getUniformLocation(this.program,"u_motionDuration"),motionScale:i.getUniformLocation(this.program,"u_motionScale"),dark:i.getUniformLocation(this.program,"u_dark"),accentA:i.getUniformLocation(this.program,"u_accentA"),accentB:i.getUniformLocation(this.program,"u_accentB"),glow:i.getUniformLocation(this.program,"u_glow")},this.buffer=i.createBuffer(),i.bindBuffer(i.ARRAY_BUFFER,this.buffer),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),i.STATIC_DRAW),this.motionTexture=i.createTexture(),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,this.motionTexture),i.pixelStorei(i.UNPACK_ALIGNMENT,1),i.texImage2D(i.TEXTURE_2D,0,i.R8,Q,80,0,i.RED,i.UNSIGNED_BYTE,this.motionData),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.REPEAT),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),this.effectTexture=i.createTexture(),i.activeTexture(i.TEXTURE1),i.bindTexture(i.TEXTURE_2D,this.effectTexture),i.texImage2D(i.TEXTURE_2D,0,i.RGB,1,1,0,i.RGB,i.UNSIGNED_BYTE,new Uint8Array([32,33,38])),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),this.effectUploaded=!1},[{key:"resize",value:function(e,t,r){var o=Math.max(1,Math.round(e*r)),n=Math.max(1,Math.round(t*r));this.canvas.width===o&&this.canvas.height===n||(this.canvas.width=o,this.canvas.height=n),this.gl.viewport(0,0,o,n)}},{key:"draw",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=this.gl;o.useProgram(this.program),o.bindBuffer(o.ARRAY_BUFFER,this.buffer),o.enableVertexAttribArray(this.position),o.vertexAttribPointer(this.position,2,o.FLOAT,!1,0,0),o.uniform2f(this.uniforms.resolution,this.canvas.width,this.canvas.height),o.uniform1f(this.uniforms.time,e),o.uniform1f(this.uniforms.progress,t/100),o.uniform1f(this.uniforms.seed,this.seed),o.uniform1f(this.uniforms.profile,this.profile),o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.motionTexture),o.uniform1i(this.uniforms.motion,0),o.uniform1f(this.uniforms.motionDuration,12),o.uniform1f(this.uniforms.motionScale,this.motionScale);var n=this.effectUploaded?1:0;if(!this.effectUploaded&&r&&r.complete&&r.naturalWidth>0){o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.effectTexture),o.pixelStorei(o.UNPACK_FLIP_Y_WEBGL,!0);try{o.texImage2D(o.TEXTURE_2D,0,o.RGB,o.RGB,o.UNSIGNED_BYTE,r),this.effectUploaded=!0,n=1}catch(e){console.warn("[画境观屿] 参考纹理图集上传失败,继续使用程序化降级。",e)}o.pixelStorei(o.UNPACK_FLIP_Y_WEBGL,!1)}o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.effectTexture),o.uniform1i(this.uniforms.effect,1),o.uniform1f(this.uniforms.hasEffect,n),o.uniform1f(this.uniforms.effectFrames,24),o.uniform3fv(this.uniforms.dark,this.colors[0]),o.uniform3fv(this.uniforms.accentA,this.colors[1]),o.uniform3fv(this.uniforms.accentB,this.colors[2]),o.uniform3fv(this.uniforms.glow,this.colors[3]),o.drawArrays(o.TRIANGLES,0,6)}},{key:"setColors",value:function(e){this.colors=e.map(re)}},{key:"dispose",value:function(){var e=this.gl;e.deleteBuffer(this.buffer),e.deleteTexture(this.motionTexture),e.deleteTexture(this.effectTexture),e.deleteProgram(this.program);var t=e.getExtension("WEBGL_lose_context");t&&t.loseContext()}}])}();var se=Object.create(null),le={"model-training":["#20131f","#ff3f94","#ff8a3d","#fff06a"],"agent-migration":["#111a31","#245bff","#00cfff","#5dffe6"],"visual-training":["#1f172b","#7042ff","#42f58d","#c4ff8a"],tide:["#0a2239","#2e9bff","#7fe3ff","#eaf9ff"]};function ce(e,t,r,o,n,i,a){e.save(),e.translate(t,r),e.scale(1,n/o);var s=e.createRadialGradient(0,0,0,0,0,o);s.addColorStop(0,"".concat(i).concat(Math.round(255*a).toString(16).padStart(2,"0"))),s.addColorStop(.46,"".concat(i).concat(Math.round(.42*a*255).toString(16).padStart(2,"0"))),s.addColorStop(1,"".concat(i,"00")),e.fillStyle=s,e.fillRect(-o,-o,2*o,2*o),e.restore()}function ue(e){return se[e]||(se[e]=function(e){var t=le[e]||le["visual-training"],r=document.createElement("canvas");r.width=1536,r.height=32;for(var o=r.getContext("2d"),n=0;n<24;n+=1){var i=n/24*Math.PI*2,a=64*n;o.save(),o.translate(a,0),o.fillStyle=t[0],o.fillRect(0,0,64,32),o.globalCompositeOperation="screen",ce(o,35+5*Math.sin(.83*i),10+5*Math.cos(.61*i),27,18,t[1],"agent-migration"===e?.32:.42),ce(o,45+4*Math.cos(.72*i),23+4*Math.sin(.54*i),22,15,t[2],.44),ce(o,53+2*Math.sin(1.07*i),16+6*Math.cos(.89*i),12,13,t[3],"model-training"===e?.3:.2),o.globalCompositeOperation="source-over";var s=o.createRadialGradient(41,16,1,41,16,17);s.addColorStop(0,"rgba(5,6,11,0.64)"),s.addColorStop(.58,"rgba(6,7,12,0.26)"),s.addColorStop(1,"rgba(6,7,12,0)"),o.fillStyle=s,o.fillRect(20,0,44,32),o.restore()}var l=new Image;l.decoding="async";var c={image:l,ready:!1};return l.addEventListener("load",function(){c.ready=!0},{once:!0}),l.addEventListener("error",function(){c.ready=!1},{once:!0}),l.src=r.toDataURL("image/png"),c}(e)),se[e]}function de(e){var t=e.root,r=e.canvas,o=e.preset,n=e.getProgress,i=document.createElement("canvas");i.className="hj-progress-canvas hj-progress-overlay",i.setAttribute("aria-hidden","true"),r.insertAdjacentElement("afterend",i);var a=function(e,t){try{return new ae(e,t)}catch(e){return console.warn("[画境观屿] 进度流体 WebGL2 不可用,使用 Canvas 2D 降级。",e),null}}(i,o);if(!a)return i.remove(),null;var s=ue(o.id);t.classList.add("has-webgl-progress");var l=function(){var e=t.getBoundingClientRect(),r=Math.max(1,e.width),o=Math.max(1,e.height),n=Math.min(window.devicePixelRatio||1,2);i.style.width="".concat(r,"px"),i.style.height="".concat(o,"px"),a.resize(r,o,n)},c=null,u=null;return"undefined"!=typeof ResizeObserver?(c=new ResizeObserver(l)).observe(t):(u=l,window.addEventListener("resize",u)),l(),{update:function(e){var t=e%12,r=n();a.draw(t,Number.isFinite(r)?r:o.initialProgress,s.ready?s.image:null)},setColors:function(e){a.setColors(e)},dispose:function(){c&&c.disconnect(),u&&window.removeEventListener("resize",u),a.dispose(),i.remove(),t.classList.remove("has-webgl-progress")}}}var he=function(e,t,r){return Math.min(Math.max(e,t),r)},fe="undefined"!=typeof CanvasRenderingContext2D&&"filter"in CanvasRenderingContext2D.prototype;function pe(e){var t,r=2166136261,o=a(e);try{for(o.s();!(t=o.n()).done;){r^=t.value.charCodeAt(0),r=Math.imul(r,16777619)}}catch(e){o.e(e)}finally{o.f()}return(r>>>0)/4294967295}function ve(e,t){return e.replace(/\{(\w+)\}/g,function(e,r){return void 0!==t[r]?t[r]:""})}var me={"model-training":{cycles:[.98,3.05,5.45],amplitudes:[11.2,11,5.2],speeds:[.31,-.53,.78],bulgeAmplitude:8.2,timeScale:1,glowWidth:5.8,haloWidth:20,whiteAlpha:.72,whiteWidth:1.15,cloudWidth:.17,autoRange:[25,66]},"agent-migration":{cycles:[.62,1.55,2.95],amplitudes:[16,7.8,2.3],speeds:[.25,-.4,.6],bulgeAmplitude:8.4,timeScale:.82,glowWidth:6.3,haloWidth:21,whiteAlpha:.18,whiteWidth:.45,cloudWidth:.18,autoRange:[24,62]},"visual-training":{cycles:[.88,2.45,4.35],amplitudes:[12.8,10.2,4.3],speeds:[.28,-.47,.69],bulgeAmplitude:7.3,timeScale:.91,glowWidth:6,haloWidth:21,whiteAlpha:.3,whiteWidth:.55,cloudWidth:.175,autoRange:[20,75]},tide:{cycles:[.72,1.9,4.2],amplitudes:[19,6.5,1.5],speeds:[.42,-.5,.66],bulgeAmplitude:9.5,timeScale:.85,glowWidth:6.2,haloWidth:21,whiteAlpha:.5,whiteWidth:1,cloudWidth:.18,autoRange:[18,70],surge:.55}},ge=function(){return i(function e(t){var r,n,i,a=this,s=t.root,l=t.canvas,c=t.valueElement,u=t.preset,d=t.emitter,h=t.options,f=t.copy;o(this,e),this.root=s,this.canvas=l,this.valueElement=c,this.preset=u,this.emitter=d,this.options=h,this.copy=f,this.profile="tide"===u.edgeStyle?me.tide:me[u.id]||me["visual-training"],this.min=null!==(r=h.min)&&void 0!==r?r:0,this.max=null!==(n=h.max)&&void 0!==n?n:100,this.dprCap=b(h.quality),this.ctx=l.getContext("2d"),this.value=he(null!==(i=h.value)&&void 0!==i?i:u.initialProgress,this.min,this.max),this.dragging=!1,this.webglActive=!1,this.flowTime=31*pe(u.id),this.seed=pe("".concat(u.id,"-reference"))*Math.PI*2,this.randomState=Math.floor(2147483647*pe("".concat(u.id,"-auto")))||1,this.dpr=1,this.width=0,this.height=0,this.handlers={},this.resizeObserver="undefined"!=typeof ResizeObserver?new ResizeObserver(function(){return a.resizeCanvas()}):null,this.resizeObserver?this.resizeObserver.observe(this.root):window.addEventListener("resize",this.resizeCanvas),this.suppressEvents=!0,this.setProgress(this.value,"init"),this.suppressEvents=!1,this.bindEvents(),this.resizeCanvas()},[{key:"random",value:function(){return this.randomState=Math.imul(this.randomState,1664525)+1013904223>>>0,this.randomState/4294967296}},{key:"setProgress",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"auto";this.value=he(e,this.min,this.max);var r=Math.round(this.value);this.root.style.setProperty("--progress",this.value.toFixed(2)),this.root.setAttribute("aria-valuenow",String(r)),this.root.setAttribute("aria-valuetext","".concat(r).concat(this.copy.valueSuffix)),this.valueElement.textContent="".concat(r).concat(this.copy.valueSuffix),this.suppressEvents||this.emitter.emit("change",{value:this.value,source:t})}},{key:"resizeCanvas",value:function(){var e=this.root.getBoundingClientRect();this.dpr=Math.min(window.devicePixelRatio||1,this.dprCap),this.width=Math.max(1,e.width),this.height=Math.max(1,e.height),this.canvas.width=Math.round(this.width*this.dpr),this.canvas.height=Math.round(this.height*this.dpr),this.canvas.style.width="".concat(this.width,"px"),this.canvas.style.height="".concat(this.height,"px"),this.ctx.setTransform(this.dpr,0,0,this.dpr,0,0)}},{key:"edgeEnvelope",value:function(e){var t=Math.sin(Math.PI*he(e,0,1));return Math.pow(Math.max(t,0),.48)}},{key:"localBulge",value:function(e,t,r){var o=0===r?1:-1,n=.28+.4*r+.13*Math.sin(t*(.19+.035*r)+this.seed*(1.1+r)),i=.075+.016*r+.012*Math.sin(.13*t+2.1*this.seed),a=(e-n)/Math.max(i,.035);return Math.exp(-.5*a*a)*Math.sin(t*(.71+.09*r)+this.seed*(2.7+r))*this.profile.bulgeAmplitude*o}},{key:"edgeOffset",value:function(e,t){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,n=this.height>0?e/this.height:0,i=this.edgeEnvelope(n),a=t*this.profile.timeScale,s=this.profile.surge?a+this.profile.surge*Math.sin(2*a):a,l=0,c=0;c<this.profile.cycles.length;c+=1){var u=this.profile.cycles[c],d=this.profile.amplitudes[c],h=this.profile.speeds[c],f=.74+.26*Math.sin(s*(.17+.045*c)+this.seed*(c+2.4));l+=Math.sin(n*Math.PI*2*u+s*h*Math.PI*2+this.seed*(c+1)+r)*d*f}return l+=this.localBulge(n,s+r,0),(l+=this.localBulge(n,s-.7*r,1))*i*o}},{key:"createEdgePath",value:function(e,t,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,i=Math.max(1.8,this.height/92);e.beginPath();for(var a=0;a<=this.height+i;a+=i){var s=t+this.edgeOffset(a,r,o,n);0===a?e.moveTo(s,a):e.lineTo(s,a)}}},{key:"createFillPath",value:function(e,t,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,i=Math.max(1.8,this.height/92);e.beginPath(),e.moveTo(0,0),e.lineTo(t+this.edgeOffset(0,r,o,n),0);for(var a=i;a<=this.height+i;a+=i)e.lineTo(t+this.edgeOffset(a,r,o,n),a);e.lineTo(0,this.height),e.closePath()}},{key:"drawEllipticalGlow",value:function(e,t,r,o,n,i){var a=this.ctx;a.save(),a.translate(e,t),a.scale(1,o/r);var s=a.createRadialGradient(0,0,0,0,0,r);s.addColorStop(0,D(n,i)),s.addColorStop(.42,D(n,.48*i)),s.addColorStop(1,D(n,0)),a.globalCompositeOperation="screen",a.fillStyle=s,a.fillRect(-r,-r,2*r,2*r),a.restore()}},{key:"drawDarkEllipticalShadow",value:function(e,t,r,o,n){var i=this.ctx;i.save(),i.translate(e,t),i.scale(1,o/r);var a=i.createRadialGradient(0,0,0,0,0,r);a.addColorStop(0,"rgba(6, 6, 11, ".concat(n,")")),a.addColorStop(.54,"rgba(8, 8, 14, ".concat(.62*n,")")),a.addColorStop(1,"rgba(8, 8, 14, 0)"),i.globalCompositeOperation="source-over",i.fillStyle=a,i.fillRect(-r,-r,2*r,2*r),i.restore()}},{key:"drawColorClouds",value:function(e,t,r,o,n){this.ctx;var i=this.width,a=this.height,s=this.profile.cloudWidth,l=t*this.profile.timeScale,c=a*(.28+.13*Math.sin(.24*l+this.seed)),u=a*(.7+.12*Math.cos(.21*l+1.7*this.seed)),d=a*(.49+.15*Math.sin(.31*l+2.3*this.seed)),h=e-.095*i,f=Math.max(52,i*s),p=.42*a;this.drawEllipticalGlow(h,c,f,p,r,.38),this.drawDarkEllipticalShadow(h+.16*f,c,.58*f,.66*p,.74);var v=e-.072*i,m=Math.max(44,i*s*.82),g=.36*a;this.drawEllipticalGlow(v,u,m,g,o,.31),this.drawDarkEllipticalShadow(v+.14*m,u,.54*m,.62*g,.64),this.drawEllipticalGlow(e-.034*i,d,Math.max(30,i*s*.48),.27*a,n,.2)}},{key:"drawPathBand",value:function(e){var t=e.baseX,r=e.time,o=e.phase,n=e.amplitudeScale,i=e.color,a=e.alpha,s=e.blur,l=e.width,c=e.composite,u=void 0===c?"screen":c,d=this.ctx;this.createEdgePath(d,t,r,o,n),d.save(),d.globalCompositeOperation=u,d.globalAlpha=a,fe&&(d.filter="blur(".concat(s,"px)")),d.strokeStyle=i,d.lineWidth=l,d.stroke(),d.restore()}},{key:"setRange",value:function(e,t){this.min=e,this.max=t;var r=he(this.value,this.min,this.max);r!==this.value&&this.setProgress(r,"prop")}},{key:"drawReferenceFlow",value:function(){var e=this.ctx,t=this.width,r=this.height;if(!(!e||t<=0||r<=0)){var o=t*(this.value/100),n=this.flowTime,i=u(this.preset.colors,4),a=i[0],s=i[1],l=i[2],c=i[3];e.clearRect(0,0,t,r),e.fillStyle="#202126",e.fillRect(0,0,t,r),this.createFillPath(e,o,n,0,1);var d=e.createLinearGradient(0,0,Math.max(o,1),0);d.addColorStop(0,a),d.addColorStop(.74,a),d.addColorStop(.89,D(a,.99)),d.addColorStop(.955,D(s,.09)),d.addColorStop(.992,D(l,.54)),d.addColorStop(1,D(c,.78)),e.fillStyle=d,e.fill(),this.drawColorClouds(o,n,s,l,c),this.drawPathBand({baseX:o-.105*t,time:n,phase:1.42,amplitudeScale:1.18,color:s,alpha:.22,blur:21,width:54}),this.drawPathBand({baseX:o-.073*t,time:n,phase:-.92,amplitudeScale:1.06,color:l,alpha:.3,blur:15,width:42}),this.drawPathBand({baseX:o-.047*t,time:n,phase:.42,amplitudeScale:.94,color:"rgba(5, 5, 10, 0.92)",alpha:.72,blur:12,width:34,composite:"source-over"}),this.drawPathBand({baseX:o-.025*t,time:n,phase:-.28,amplitudeScale:.96,color:l,alpha:.66,blur:8,width:28}),e.save(),this.createFillPath(e,o,n,0,1),e.clip(),this.createEdgePath(e,o,n,0,1),e.save(),e.globalCompositeOperation="screen",e.strokeStyle=D(s,.2),e.lineWidth=this.profile.haloWidth,e.shadowColor=s,e.shadowBlur=.72*this.profile.haloWidth,e.stroke(),e.restore(),e.save(),e.globalCompositeOperation="screen",e.strokeStyle=D(l,.78),e.lineWidth=this.profile.glowWidth+4.2,e.shadowColor=l,e.shadowBlur=8,e.stroke(),e.restore(),e.save(),e.globalCompositeOperation="screen",e.strokeStyle=D(c,.88),e.lineWidth=this.profile.glowWidth,e.shadowColor=c,e.shadowBlur=5,e.stroke(),e.restore(),e.restore(),e.save(),e.globalCompositeOperation="screen",e.strokeStyle=D(c,.84),e.lineWidth=2.15,e.shadowColor=c,e.shadowBlur=2.5,this.createEdgePath(e,o,n,0,1),e.stroke(),e.restore(),this.profile.whiteAlpha>.05&&(e.save(),e.globalCompositeOperation="screen",e.strokeStyle="rgba(255,255,245,".concat(this.profile.whiteAlpha,")"),e.lineWidth=this.profile.whiteWidth,this.createEdgePath(e,o,n,0,1),e.stroke(),e.restore())}}},{key:"updateFromPointer",value:function(e){var t=this.root.getBoundingClientRect(),r=t.width>0?(e.clientX-t.left)/t.width:0;this.setProgress(100*r,"drag")}},{key:"beginDrag",value:function(e){if(void 0===e.button||0===e.button){e.preventDefault(),this.dragging=!0,this.root.classList.add("is-dragging");try{var t,r;null===(t=(r=this.root).setPointerCapture)||void 0===t||t.call(r,e.pointerId)}catch(e){}this.emitter.emit("dragstart",{value:this.value}),this.updateFromPointer(e)}}},{key:"moveDrag",value:function(e){this.dragging&&(e.preventDefault(),this.updateFromPointer(e))}},{key:"endDrag",value:function(e){if(this.dragging){this.dragging=!1,this.root.classList.remove("is-dragging");try{var t,r;void 0!==(null==e?void 0:e.pointerId)&&null!==(t=(r=this.root).hasPointerCapture)&&void 0!==t&&t.call(r,e.pointerId)&&this.root.releasePointerCapture(e.pointerId)}catch(e){}this.emitter.emit("dragend",{value:this.value})}}},{key:"bindEvents",value:function(){var e=this;!1!==this.options.draggable&&(this.handlers.pointerdown=function(t){return e.beginDrag(t)},this.handlers.pointermove=function(t){return e.moveDrag(t)},this.handlers.pointerup=function(t){return e.endDrag(t)},this.handlers.pointercancel=function(t){return e.endDrag(t)},this.root.addEventListener("pointerdown",this.handlers.pointerdown),this.root.addEventListener("pointermove",this.handlers.pointermove),this.root.addEventListener("pointerup",this.handlers.pointerup),this.root.addEventListener("pointercancel",this.handlers.pointercancel)),!1!==this.options.keyboard&&(this.handlers.keydown=function(t){var r={ArrowLeft:-2,ArrowDown:-2,ArrowRight:2,ArrowUp:2,PageDown:-10,PageUp:10};if("Home"===t.key)t.preventDefault(),e.setProgress(e.min,"keyboard");else if("End"===t.key)t.preventDefault(),e.setProgress(e.max,"keyboard");else{if(!r[t.key])return;t.preventDefault(),e.setProgress(e.value+r[t.key],"keyboard")}},this.root.addEventListener("keydown",this.handlers.keydown))}},{key:"update",value:function(e,t){t||(this.flowTime+=e)}},{key:"draw",value:function(){this.webglActive||this.drawReferenceFlow()}},{key:"randomize",value:function(){this.flowTime=40*this.random()}},{key:"setColors",value:function(e){Array.isArray(e)&&4===e.length&&(this.preset=c(c({},this.preset),{},{colors:e}))}},{key:"dispose",value:function(){this.resizeObserver?this.resizeObserver.disconnect():window.removeEventListener("resize",this.resizeCanvas);for(var e=0,t=Object.keys(this.handlers);e<t.length;e++){var r=t[e],o=this.handlers[r];this.root.removeEventListener(r,o)}this.handlers={}}}])}();e.ALL_PRESETS=M,e.COPY=F,e.CosmicRenderer=U,e.DEFAULTS=k,e.FallbackRenderer=G,e.PRESETS=T,e.PROGRESS_PRESETS=A,e.ProgressCapsuleController=ge,e.ProgressFlowRenderer=ae,e.QUALITY_TIERS=y,e.createCapsule=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||"function"!=typeof e.appendChild)throw new Error("createCapsule: container element is required");var o=c({},R("capsule",null!==(t=r.preset)&&void 0!==t?t:"初光")),n=w(k.capsule,o,r),i=c(c({},F),n.copy||{}),a=document.createElement("div");a.className="hj-capsule-root hj-capsule-cosmic",a.dataset.group=o.group,a.dataset.mode="nebula",a.dataset.theme=o.theme||"light",a.setAttribute("aria-label",i.capsuleAria.replace("{name}",o.name));var s=!1!==i.enabled&&!1!==n.showCopy,l=function(e,t){var r=i[e];return void 0===r?t:r},u=document.createElement("div");u.className="hj-capsule-copy";var d,h=function(){var e,t,r,n,i;s&&(u.innerHTML=(e=l("code",o.code),t=l("name",o.name),r=l("subtitle",o.subtitle),n=l("state","LIVE COSMIC STUDY"),i="",e&&(i+='<span class="hj-capsule-code">'.concat(e,"</span>")),t&&(i+='<span class="hj-capsule-name">'.concat(t,"</span>")),r&&(i+='<span class="hj-capsule-brand">'.concat(r,"</span>")),n&&(i+='<span class="hj-capsule-state">'.concat(n,"</span>")),i))};h(),i.background&&a.style.setProperty("--hj-copy-bg","string"==typeof(d=i.background)&&/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(d)?"linear-gradient(90deg, ".concat(i.background," 0%, ").concat(i.background," 74%, ").concat(D(i.background,.97)," 84%, ").concat(D(i.background,0)," 100%)"):i.background),i.color&&a.style.setProperty("--hj-copy-color",i.color);var f=document.createElement("canvas");f.className="hj-capsule-canvas",f.setAttribute("aria-hidden","true"),s&&a.appendChild(u),a.appendChild(f),e.appendChild(a);var p,m=v(),y=n.respectReducedMotion&&"undefined"!=typeof matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches;if("canvas2d"!==n.renderer)try{p=new U(f,n,{dprCap:b(n.quality)})}catch(e){p=new G(f,n),m.emit("error",{message:String(e&&e.message?e.message:e)})}else p=new G(f,n);var E=function(){a.style.width=g(n.width),a.style.height=g(n.height);for(var e=n.cssVars||{},t=0,r=Object.keys(e);t<r.length;t++){var o=r[t];a.style.setProperty(o,e[o])}p.resize()};E();var C="undefined"!=typeof ResizeObserver?new ResizeObserver(function(){return p.resize()}):null;C?C.observe(a):window.addEventListener("resize",p.resize);var x=$(a);a.addEventListener("pointerenter",function(){return m.emit("pointerenter",{preset:c({},o)})}),a.addEventListener("pointerleave",function(){return m.emit("pointerleave",{preset:c({},o)})}),a.addEventListener("click",function(e){m.emit("click",{event:e,preset:c({},o)})}),a.addEventListener("pointerdown",function(e){return m.emit("pointerdown",{event:e,preset:c({},o)})}),a.addEventListener("pointerup",function(e){return m.emit("pointerup",{event:e,preset:c({},o)})}),a.addEventListener("dblclick",function(e){return m.emit("dblclick",{event:e,preset:c({},o)})});var S=0,_=K(function(e){S+=e,x.isVisible()&&p.draw(S)},function(){return y});return m.emit("ready",{preset:c({},o)}),{element:a,canvas:f,preset:o,on:m.on,off:m.off,setPreset:function(e){var t=R("capsule",e);return Object.assign(o,t),p.setPreset(t),a.dataset.mode="nebula",a.dataset.theme=o.theme||"light",h(),p.resize(),m.emit("presetchange",{preset:c({},t)}),this},setColors:function(e){return Array.isArray(e)&&4===e.length?(o.colors=e,p.setPreset(c(c({},o),{},{colors:e})),this):this},setSeed:function(e){var t=Number(e);return Number.isFinite(t)?(o.seed=t,p.setPreset(c({},o)),this):this},setSpeed:function(e){var t=Number(e);return Number.isFinite(t)?(o.speed=t,p.setPreset(c({},o)),this):this},setSize:function(e,t){return void 0!==e&&(n.width=e),void 0!==t&&(n.height=t),E(),this},randomize:function(){return p.randomize(),this},pause:function(){return y=!0,this},resume:function(){return y=!1,this},setQuality:function(e){return n.quality=e,"function"==typeof p.setDprCap&&p.setDprCap(b(e)),this},dispose:function(){_(),x.dispose(),C?C.disconnect():window.removeEventListener("resize",p.resize),p.dispose(),a.remove()}}},e.createColorBackground=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||"function"!=typeof e.appendChild)throw new Error("createColorBackground: host element is required");var o=c({},R("capsule",null!==(t=r.preset)&&void 0!==t?t:"初光")),n=w({quality:k.capsule.quality,renderer:k.capsule.renderer,respectReducedMotion:k.capsule.respectReducedMotion,mouseColor:!0,opacity:1,fallbackColor:!0},o,r),i=getComputedStyle(e);"static"!==i.position&&""!==i.position||(e.style.position="relative"),e.style.isolation="isolate";var a=document.createElement("div");a.className="dlc-color-layer";var s=function(){a.style.setProperty("--dlc-color-opacity",String(n.opacity));var e=!1===n.fallbackColor||null==n.fallbackColor?"transparent":"string"==typeof n.fallbackColor?n.fallbackColor:o.colors[0];a.style.setProperty("--dlc-color-bg",e)};s();var l=document.createElement("canvas");l.className="dlc-color-canvas",l.setAttribute("aria-hidden","true"),a.appendChild(l),e.appendChild(a);var u,d=v(),h=n.respectReducedMotion&&"undefined"!=typeof matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches;if("canvas2d"!==n.renderer)try{u=new U(l,n,{dprCap:b(n.quality),mouseColor:!1!==n.mouseColor,eventTarget:e})}catch(e){u=new G(l,n),d.emit("error",{message:String(e&&e.message?e.message:e)})}else u=new G(l,n);var f="undefined"!=typeof ResizeObserver?new ResizeObserver(function(){return u.resize()}):null;f?f.observe(e):window.addEventListener("resize",u.resize);var p=$(a),m=0,g=K(function(e){m+=e,p.isVisible()&&u.draw(m)},function(){return h});return d.emit("ready",{preset:c({},o)}),{element:e,layer:a,canvas:l,preset:o,on:d.on,off:d.off,setPreset:function(e){var t=R("capsule",e);return Object.assign(o,t),u.setPreset(t),u.resize(),s(),d.emit("presetchange",{preset:c({},t)}),this},setColors:function(e){return Array.isArray(e)&&4===e.length?(o.colors=e,u.setPreset(c(c({},o),{},{colors:e})),s(),this):this},setQuality:function(e){return n.quality=e,"function"==typeof u.setDprCap&&u.setDprCap(b(e)),this},setOpacity:function(e){var t=Number(e);return Number.isFinite(t)?(n.opacity=Math.min(1,Math.max(0,t)),a.style.setProperty("--dlc-color-opacity",String(n.opacity)),this):this},randomize:function(){return u.randomize(),this},pause:function(){return h=!0,this},resume:function(){return h=!1,this},dispose:function(){g(),p.dispose(),f?f.disconnect():window.removeEventListener("resize",u.resize),u.dispose(),a.remove()}}},e.createProgressCapsule=function(e){var t,r,o,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||"function"!=typeof e.appendChild)throw new Error("createProgressCapsule: container element is required");var i=c({},R("progress",null!==(t=n.preset)&&void 0!==t?t:"星火")),a=w(k.progress,i,n),s=c(c({},F),a.copy||{}),l=document.createElement("div");l.className="hj-capsule-root hj-progress-root",l.setAttribute("role","slider"),l.setAttribute("tabindex","0"),l.setAttribute("data-draggable",String(!1!==a.draggable)),l.setAttribute("aria-valuemin",String(null!==(r=a.min)&&void 0!==r?r:0)),l.setAttribute("aria-valuemax",String(null!==(o=a.max)&&void 0!==o?o:100)),l.setAttribute("aria-valuenow",String(i.initialProgress)),l.setAttribute("aria-label",ve(s.progressAria,{brand:s.brandName,code:i.code,name:i.name})),!1===a.keyboard&&l.setAttribute("tabindex","-1");var u=document.createElement("canvas");u.className="hj-progress-canvas",u.setAttribute("aria-hidden","true");var d=!1!==s.enabled&&!1!==a.showCopy;function h(){var e,t,r,o="",n=s.brandName||"",a=(e="subtitle",t=i.subtitle,void 0===(r=s[e])?t:r);return n&&(o+='<span class="hj-progress-name">'.concat(n,"</span>")),a&&(o+='<span class="hj-progress-subtitle">'.concat(a,"</span>")),o}var f=document.createElement("div");f.className="hj-progress-copy";var p=function(){d&&(f.innerHTML=h())};p(),s.background&&(l.style.setProperty("--hj-progress-copy-bg",s.background),l.style.setProperty("--hj-progress-copy-pad","6px 12px")),s.color&&l.style.setProperty("--hj-progress-copy-color",s.color);var m=document.createElement("div");m.className="hj-progress-value",m.setAttribute("aria-hidden","true");var y=document.createElement("span");y.className="hj-progress-drag-label",y.setAttribute("aria-hidden","true"),y.textContent=s.dragLabel,l.appendChild(u),d&&l.appendChild(f),l.appendChild(m),l.appendChild(y),e.appendChild(l);var E=v(),C=a.respectReducedMotion&&"undefined"!=typeof matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches,x=function(){l.style.width=g(a.width),l.style.height=g(a.height);for(var e=a.cssVars||{},t=0,r=Object.keys(e);t<r.length;t++){var o=r[t];l.style.setProperty(o,e[o])}};x();var S=new ge({root:l,canvas:u,valueElement:m,preset:i,emitter:E,options:a,copy:s}),_=null;"canvas2d"!==a.renderer&&(_=de({root:l,canvas:u,preset:i,getProgress:function(){return S.value}})),_&&(S.webglActive=!0);var P=$(l),A=0,T=K(function(e,t){A+=e,S.update(e,!1),P.isVisible()&&(S.draw(),_&&_.update(A))},function(){return C});return E.emit("ready",{preset:c({},i)}),{element:l,canvas:u,preset:i,on:E.on,off:E.off,setValue:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"prop";return S.setProgress(e,t),this},getValue:function(){return S.value},setRange:function(e,t){return S.setRange(e,t),this},setPreset:function(e){var t=R("progress",e);return Object.assign(i,t),S.preset=t,S.profile="tide"===t.edgeStyle?me.tide:me[t.id]||me["visual-training"],S.flowTime=31*pe(t.id),S.seed=pe("".concat(t.id,"-reference"))*Math.PI*2,l.setAttribute("aria-label",ve(s.progressAria,{brand:s.brandName,code:i.code,name:i.name})),p(),_&&(_.dispose(),_=de({root:l,canvas:u,preset:t,getProgress:function(){return S.value}})),S.webglActive=Boolean(_),S.resizeCanvas(),E.emit("presetchange",{preset:c({},t)}),this},setEdgeStyle:function(e){var t=String(e||"").toLowerCase();return"flow"!==t&&"tide"!==t||(i.edgeStyle=t,S.profile="tide"===t?me.tide:me[i.id]||me["visual-training"],_&&(_.dispose(),_=de({root:l,canvas:u,preset:i,getProgress:function(){return S.value}})),S.webglActive=Boolean(_),S.resizeCanvas()),this},setColors:function(e){return Array.isArray(e)&&4===e.length?(S.setColors(e),_&&_.setColors(e),S.resizeCanvas(),this):this},setSize:function(e,t){return void 0!==e&&(a.width=e),void 0!==t&&(a.height=t),x(),S.resizeCanvas(),this},randomize:function(){return S.randomize(),this},pause:function(){return C=!0,this},resume:function(){return C=!1,this},setQuality:function(e){return a.quality=e,S.dprCap=b(e),S.resizeCanvas(),this},dispose:function(){T(),P.dispose(),_&&_.dispose(),S.dispose(),l.remove()}}},e.dprCapFor=b,e.getPreset=R,e.hexToRgb01=L,e.hexToRgba=D,e.parseSize=g,e.pauseAll=function(){q=!0},e.resumeAll=function(){q=!1},e.validateColors=function(e){return Array.isArray(e)&&4===e.length&&e.every(function(e){return"string"==typeof e&&/^#[0-9a-f]{6}$/i.test(e)})}});
|