@5even7/dlc-ui 0.2.17 → 0.2.18
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 +21 -0
- package/README.md +27 -5
- package/THIRD_PARTY_NOTICES.md +40 -0
- package/dist/capsule.cjs +4 -2
- package/dist/capsule.mjs +2 -2
- package/dist/emo.cjs +1308 -398
- package/dist/emo.mjs +1186 -382
- package/dist/index.cjs +980 -190
- package/dist/index.mjs +1075 -386
- package/dist/index.umd.js +980 -190
- package/dist/index.umd.min.js +1 -1
- package/dist/vue2.cjs +888 -191
- package/dist/vue2.mjs +978 -377
- package/dist/vue3.cjs +888 -191
- package/dist/vue3.mjs +978 -377
- package/package.json +3 -2
- package/styles/emo.css +58 -2
- package/types/emo.d.ts +24 -1
- package/types/index.d.ts +157 -20
- package/types/vue3.d.ts +9 -7
package/dist/index.cjs
CHANGED
|
@@ -1440,13 +1440,15 @@ function createCapsule(container) {
|
|
|
1440
1440
|
var isMotionPaused = function isMotionPaused() {
|
|
1441
1441
|
return manuallyPaused || reducedPaused || staticMode || contextLost;
|
|
1442
1442
|
};
|
|
1443
|
-
root.addEventListener('pointerenter', function () {
|
|
1443
|
+
root.addEventListener('pointerenter', function (event) {
|
|
1444
1444
|
return emitter.emit('pointerenter', {
|
|
1445
|
+
event: event,
|
|
1445
1446
|
preset: _objectSpread2({}, preset)
|
|
1446
1447
|
});
|
|
1447
1448
|
});
|
|
1448
|
-
root.addEventListener('pointerleave', function () {
|
|
1449
|
+
root.addEventListener('pointerleave', function (event) {
|
|
1449
1450
|
return emitter.emit('pointerleave', {
|
|
1451
|
+
event: event,
|
|
1450
1452
|
preset: _objectSpread2({}, preset)
|
|
1451
1453
|
});
|
|
1452
1454
|
});
|
|
@@ -2195,7 +2197,7 @@ function progressRatio(value, min, max) {
|
|
|
2195
2197
|
return Math.min(Math.max((value - min) / range, 0), 1);
|
|
2196
2198
|
}
|
|
2197
2199
|
|
|
2198
|
-
var clamp = function clamp(value, min, max) {
|
|
2200
|
+
var clamp$1 = function clamp(value, min, max) {
|
|
2199
2201
|
return Math.min(Math.max(value, min), max);
|
|
2200
2202
|
};
|
|
2201
2203
|
var SUPPORTS_CTX_FILTER = typeof CanvasRenderingContext2D !== 'undefined' && 'filter' in CanvasRenderingContext2D.prototype;
|
|
@@ -2307,13 +2309,13 @@ var ProgressCapsuleController = /*#__PURE__*/function () {
|
|
|
2307
2309
|
this.min = _normalizeRange2[0];
|
|
2308
2310
|
this.max = _normalizeRange2[1];
|
|
2309
2311
|
this.step = normalizeProgressStep(options.step);
|
|
2310
|
-
this.precision = Number.isInteger(Number(options.precision)) ? clamp(Number(options.precision), 0, 20) : 0;
|
|
2312
|
+
this.precision = Number.isInteger(Number(options.precision)) ? clamp$1(Number(options.precision), 0, 20) : 0;
|
|
2311
2313
|
this.formatValue = typeof options.formatValue === 'function' ? options.formatValue : null;
|
|
2312
2314
|
this.direction = options.direction === 'rtl' ? 'rtl' : 'ltr';
|
|
2313
2315
|
this.dprCap = effectiveDprCap(options.quality, options.renderScale);
|
|
2314
2316
|
this.ctx = canvas.getContext('2d');
|
|
2315
2317
|
this.value = snapProgressValue((_options$value = options.value) !== null && _options$value !== void 0 ? _options$value : preset.initialProgress, this.min, this.max, this.step);
|
|
2316
|
-
if (this.value === null) this.value = clamp(preset.initialProgress, this.min, this.max);
|
|
2318
|
+
if (this.value === null) this.value = clamp$1(preset.initialProgress, this.min, this.max);
|
|
2317
2319
|
this.dragging = false;
|
|
2318
2320
|
this.webglActive = false;
|
|
2319
2321
|
this.flowTime = stringSeed(preset.id) * 31;
|
|
@@ -2450,7 +2452,7 @@ var ProgressCapsuleController = /*#__PURE__*/function () {
|
|
|
2450
2452
|
}, {
|
|
2451
2453
|
key: "edgeEnvelope",
|
|
2452
2454
|
value: function edgeEnvelope(yRatio) {
|
|
2453
|
-
var edge = Math.sin(Math.PI * clamp(yRatio, 0, 1));
|
|
2455
|
+
var edge = Math.sin(Math.PI * clamp$1(yRatio, 0, 1));
|
|
2454
2456
|
return Math.pow(Math.max(edge, 0), 0.48);
|
|
2455
2457
|
}
|
|
2456
2458
|
}, {
|
|
@@ -29869,6 +29871,240 @@ var MIAO_ANIMATIONS = {
|
|
|
29869
29871
|
}
|
|
29870
29872
|
};
|
|
29871
29873
|
|
|
29874
|
+
// Generated from zhulin025/LaoA-GrokBot (https://github.com/zhulin025/LaoA-GrokBot), MIT License.
|
|
29875
|
+
// See THIRD_PARTY_NOTICES.md. Do not edit by hand.
|
|
29876
|
+
|
|
29877
|
+
var GROK_EXPRESSIONS = [[[[130.36, 45.98], [132.71, 46.19], [134.98, 46.81], [137.11, 47.83], [138.97, 49.28], [140.47, 51.09], [141.68, 53.12], [142.73, 55.23], [143.76, 57.36], [144.78, 59.49], [145.79, 61.62], [146.79, 63.76], [147.76, 65.91], [148.71, 68.07], [149.63, 70.25], [150.52, 72.43], [151.37, 74.63], [151.99, 76.91], [152.1, 79.26], [151.64, 81.57], [150.59, 83.68], [149.04, 85.45], [147.1, 86.78], [144.9, 87.62], [142.56, 87.93], [140.22, 87.71], [137.98, 86.99], [135.93, 85.82], [134.17, 84.24], [132.78, 82.34], [131.69, 80.25], [130.77, 78.08], [129.87, 75.89], [128.94, 73.72], [128, 71.56], [127.03, 69.4], [126.05, 67.26], [125.05, 65.12], [124.03, 62.99], [122.93, 60.9], [121.87, 58.79], [121.03, 56.59], [120.72, 54.26], [121.1, 51.93], [122.15, 49.83], [123.75, 48.1], [125.76, 46.89], [128.01, 46.19]], [[176.61, 37.08], [178.72, 37.59], [180.7, 38.48], [182.52, 39.65], [184.2, 41.03], [185.71, 42.59], [187.03, 44.31], [188.2, 46.14], [189.26, 48.03], [190.27, 49.96], [191.26, 51.89], [192.23, 53.84], [193.16, 55.8], [194.05, 57.78], [194.92, 59.77], [195.74, 61.78], [196.53, 63.8], [197.27, 65.84], [197.97, 67.9], [198.47, 70.01], [198.63, 72.18], [198.4, 74.33], [197.58, 76.33], [195.95, 77.72], [193.83, 78.08], [191.71, 77.65], [189.76, 76.69], [188.03, 75.38], [186.53, 73.82], [185.28, 72.05], [184.25, 70.13], [183.4, 68.14], [182.63, 66.11], [181.87, 64.07], [181.07, 62.05], [180.25, 60.04], [179.39, 58.05], [178.49, 56.07], [177.57, 54.1], [176.61, 52.15], [175.62, 50.22], [174.59, 48.31], [173.53, 46.41], [172.54, 44.48], [171.86, 42.42], [171.76, 40.26], [172.62, 38.3], [174.45, 37.19]]], [[[86.14, 124.79], [89.16, 124.92], [92.06, 125.76], [94.68, 127.27], [96.86, 129.36], [98.48, 131.92], [99.51, 134.76], [100.12, 137.73], [100.56, 140.72], [101.01, 143.72], [101.52, 146.71], [102.06, 149.69], [102.62, 152.67], [103.2, 155.64], [103.81, 158.61], [104.44, 161.57], [105.11, 164.52], [105.81, 167.47], [106.49, 170.42], [106.72, 173.44], [106.01, 176.37], [104.37, 178.9], [102.03, 180.81], [99.26, 181.99], [96.27, 182.46], [93.25, 182.25], [90.34, 181.43], [87.65, 180.04], [85.32, 178.11], [83.51, 175.7], [82.37, 172.9], [81.66, 169.96], [80.98, 167], [80.32, 164.05], [79.69, 161.08], [79.08, 158.12], [78.5, 155.14], [77.94, 152.16], [77.4, 149.18], [76.89, 146.2], [76.4, 143.21], [75.93, 140.21], [75.56, 137.21], [75.7, 134.19], [76.6, 131.3], [78.22, 128.76], [80.47, 126.74], [83.18, 125.4]], [[147.23, 112.87], [150.24, 113.13], [153.07, 114.19], [155.53, 115.94], [157.46, 118.26], [158.73, 121.01], [159.53, 123.93], [160.21, 126.88], [160.88, 129.84], [161.52, 132.8], [162.15, 135.76], [162.74, 138.73], [163.32, 141.71], [163.87, 144.69], [164.39, 147.67], [164.9, 150.66], [165.39, 153.65], [165.8, 156.65], [165.76, 159.67], [164.98, 162.59], [163.56, 165.26], [161.61, 167.58], [159.23, 169.45], [156.52, 170.77], [153.57, 171.46], [150.55, 171.4], [147.67, 170.52], [145.19, 168.79], [143.45, 166.33], [142.57, 163.44], [142.08, 160.45], [141.61, 157.46], [141.11, 154.47], [140.59, 151.48], [140.04, 148.5], [139.47, 145.53], [138.87, 142.56], [138.25, 139.59], [137.6, 136.63], [136.94, 133.68], [136.25, 130.72], [135.59, 127.77], [135.47, 124.75], [136.07, 121.78], [137.34, 119.04], [139.19, 116.65], [141.53, 114.74], [144.26, 113.44]]], [[[104.84, 104.08], [109.39, 104.89], [113.63, 106.73], [117.32, 109.5], [120.25, 113.08], [122.22, 117.25], [123.15, 121.77], [122.92, 126.39], [121.86, 130.89], [120.61, 135.35], [119.37, 139.81], [118.15, 144.27], [116.94, 148.74], [115.74, 153.21], [114.56, 157.69], [113.39, 162.17], [112.24, 166.65], [111.13, 171.15], [110.04, 175.65], [108.89, 180.13], [106.98, 184.33], [103.8, 187.67], [99.75, 189.87], [95.25, 190.93], [90.63, 190.93], [86.11, 189.97], [81.86, 188.16], [78.05, 185.54], [74.89, 182.18], [72.62, 178.16], [71.54, 173.67], [71.94, 169.08], [73.01, 164.57], [74.13, 160.08], [75.26, 155.59], [76.42, 151.11], [77.59, 146.63], [78.77, 142.15], [79.97, 137.68], [81.18, 133.22], [82.41, 128.75], [83.65, 124.29], [84.87, 119.83], [86.33, 115.43], [88.67, 111.46], [91.9, 108.15], [95.83, 105.72], [100.23, 104.35]], [[174.26, 115.55], [178.59, 116.54], [182.37, 118.86], [185.31, 122.2], [187.23, 126.21], [188.12, 130.57], [188.06, 135.02], [187.52, 139.44], [186.86, 143.85], [186.11, 148.25], [185.25, 152.62], [184.3, 156.98], [183.24, 161.31], [182.07, 165.61], [180.79, 169.88], [179.39, 174.12], [177.89, 178.31], [176.27, 182.47], [174.47, 186.55], [172.17, 190.35], [169.21, 193.68], [165.73, 196.46], [161.84, 198.64], [157.66, 200.16], [153.27, 200.91], [148.83, 200.69], [144.65, 199.19], [141.47, 196.14], [140.18, 191.91], [140.82, 187.53], [142.46, 183.38], [144.16, 179.26], [145.73, 175.09], [147.18, 170.87], [148.51, 166.62], [149.73, 162.33], [150.84, 158.01], [151.84, 153.67], [152.74, 149.3], [153.54, 144.91], [154.24, 140.51], [154.85, 136.1], [155.58, 131.7], [156.93, 127.46], [159.15, 123.6], [162.12, 120.29], [165.73, 117.68], [169.84, 116]]], [[[44.72, 103.35], [47.95, 103.93], [51.04, 105.05], [53.93, 106.62], [56.58, 108.57], [58.97, 110.83], [61.09, 113.35], [62.93, 116.07], [64.5, 118.97], [65.79, 121.99], [66.8, 125.13], [67.52, 128.34], [67.94, 131.6], [68.08, 134.89], [67.9, 138.17], [67.4, 141.42], [66.56, 144.6], [65.33, 147.66], [63.71, 150.52], [61.69, 153.11], [59.3, 155.36], [56.54, 157.16], [53.51, 158.42], [50.29, 159.07], [47, 159.09], [43.76, 158.5], [40.67, 157.39], [37.78, 155.82], [35.13, 153.87], [32.75, 151.6], [30.63, 149.09], [28.78, 146.36], [27.21, 143.47], [25.92, 140.44], [24.92, 137.31], [24.2, 134.1], [23.77, 130.84], [23.64, 127.55], [23.81, 124.27], [24.31, 121.01], [25.16, 117.84], [26.38, 114.78], [28, 111.92], [30.02, 109.33], [32.42, 107.08], [35.17, 105.28], [38.21, 104.02], [41.43, 103.37]], [[114.62, 83.64], [118.31, 83.88], [121.94, 84.6], [125.44, 85.77], [128.77, 87.38], [131.86, 89.4], [134.67, 91.81], [137.13, 94.56], [139.2, 97.62], [140.85, 100.93], [142.05, 104.42], [142.79, 108.05], [143.05, 111.73], [142.83, 115.42], [142.13, 119.05], [140.95, 122.55], [139.34, 125.88], [137.3, 128.96], [134.88, 131.75], [132.11, 134.2], [129.05, 136.27], [125.75, 137.93], [122.25, 139.13], [118.63, 139.86], [114.94, 140.1], [111.25, 139.86], [107.63, 139.14], [104.12, 137.97], [100.8, 136.36], [97.7, 134.34], [94.9, 131.93], [92.44, 129.18], [90.36, 126.12], [88.72, 122.81], [87.51, 119.31], [86.78, 115.69], [86.52, 112.01], [86.74, 108.32], [87.44, 104.69], [88.61, 101.18], [90.23, 97.86], [92.27, 94.78], [94.69, 91.99], [97.45, 89.54], [100.51, 87.47], [103.82, 85.81], [107.31, 84.61], [110.94, 83.88]]], [[[90.44, 99.25], [93.11, 99.26], [95.74, 99.79], [98.37, 100.3], [101, 100.82], [103.64, 101.33], [106.27, 101.85], [108.9, 102.37], [111.53, 102.89], [114.16, 103.41], [116.79, 103.94], [119.42, 104.47], [122.06, 105], [124.69, 105.53], [127.32, 106.06], [129.94, 106.6], [132.57, 107.14], [135.2, 107.68], [137.65, 108.73], [139.5, 110.65], [140.44, 113.14], [140.36, 115.81], [139.35, 118.28], [137.48, 120.18], [135, 121.14], [132.32, 121.11], [129.7, 120.56], [127.08, 120], [124.45, 119.46], [121.82, 118.93], [119.19, 118.4], [116.56, 117.87], [113.93, 117.35], [111.29, 116.83], [108.66, 116.32], [106.02, 115.82], [103.39, 115.31], [100.76, 114.79], [98.12, 114.28], [95.49, 113.75], [92.86, 113.22], [90.23, 112.68], [87.77, 111.66], [85.93, 109.74], [85.01, 107.24], [85.06, 104.57], [86.07, 102.1], [87.96, 100.22]], [[156.6, 112.56], [158.91, 112.66], [161.18, 113.15], [163.45, 113.64], [165.72, 114.13], [167.99, 114.62], [170.26, 115.12], [172.53, 115.62], [174.8, 116.12], [177.07, 116.62], [179.34, 117.13], [181.6, 117.64], [183.87, 118.15], [186.14, 118.67], [188.4, 119.18], [190.67, 119.7], [192.94, 120.2], [195.12, 120.96], [196.7, 122.63], [197.45, 124.82], [197.53, 127.14], [197.07, 129.41], [196.08, 131.51], [194.49, 133.18], [192.33, 133.97], [190.04, 133.68], [187.79, 133.09], [185.52, 132.57], [183.26, 132.05], [180.99, 131.54], [178.72, 131.03], [176.45, 130.53], [174.18, 130.03], [171.91, 129.54], [169.64, 129.05], [167.37, 128.56], [165.1, 128.07], [162.83, 127.58], [160.56, 127.08], [158.29, 126.57], [156.02, 126.05], [153.9, 125.14], [152.26, 123.51], [151.32, 121.4], [151.08, 119.1], [151.53, 116.82], [152.65, 114.8], [154.41, 113.31]]], [[[79.94, 130.44], [83.08, 130.57], [86.11, 131.41], [88.89, 132.89], [91.27, 134.94], [93.15, 137.46], [94.39, 140.35], [95.11, 143.42], [95.65, 146.52], [96.2, 149.62], [96.78, 152.72], [97.39, 155.81], [98.04, 158.89], [98.72, 161.97], [99.43, 165.04], [100.18, 168.1], [100.97, 171.15], [101.81, 174.18], [102.64, 177.22], [103.01, 180.34], [102.35, 183.4], [100.66, 186.04], [98.19, 187.98], [95.28, 189.16], [92.17, 189.6], [89.03, 189.37], [85.99, 188.56], [83.16, 187.2], [80.63, 185.33], [78.55, 182.97], [77.05, 180.21], [76.1, 177.21], [75.28, 174.17], [74.5, 171.11], [73.74, 168.06], [73.02, 164.99], [72.33, 161.92], [71.68, 158.83], [71.06, 155.75], [70.47, 152.65], [69.91, 149.55], [69.37, 146.45], [68.97, 143.32], [69.12, 140.18], [70.04, 137.18], [71.7, 134.51], [74.03, 132.41], [76.86, 131.04]], [[168.95, 136.28], [171.31, 136.97], [172.99, 138.76], [173.66, 141.13], [173.36, 143.58], [172.24, 145.79], [170.45, 147.49], [168.22, 148.58], [165.89, 149.43], [163.57, 150.31], [161.24, 151.18], [158.9, 152.02], [156.56, 152.85], [154.21, 153.65], [151.85, 154.44], [149.48, 155.2], [147.11, 155.94], [144.73, 156.65], [142.34, 157.34], [139.95, 158.01], [137.55, 158.66], [135.14, 159.27], [132.73, 159.86], [130.31, 160.43], [127.84, 160.54], [125.53, 159.69], [123.77, 157.96], [122.89, 155.66], [123.09, 153.21], [124.36, 151.09], [126.34, 149.61], [128.69, 148.83], [131.1, 148.24], [133.51, 147.62], [135.91, 146.98], [138.31, 146.32], [140.7, 145.65], [143.08, 144.95], [145.46, 144.23], [147.83, 143.49], [150.2, 142.73], [152.56, 141.95], [154.91, 141.15], [157.25, 140.32], [159.59, 139.48], [161.92, 138.61], [164.24, 137.72], [166.54, 136.78]]], [[[119.79, 105.35], [121.94, 105.42], [124.03, 105.87], [126, 106.72], [127.77, 107.93], [129.27, 109.47], [130.45, 111.26], [131.29, 113.23], [131.73, 115.33], [131.79, 117.47], [131.53, 119.6], [131.11, 121.71], [130.66, 123.81], [130.27, 125.92], [129.88, 128.03], [129.49, 130.14], [129.07, 132.25], [128.62, 134.35], [127.96, 136.39], [126.96, 138.29], [125.62, 139.96], [123.99, 141.36], [122.13, 142.43], [120.11, 143.15], [118, 143.5], [115.85, 143.45], [113.75, 143], [111.79, 142.15], [110.03, 140.93], [108.54, 139.38], [107.36, 137.59], [106.53, 135.61], [106.1, 133.51], [106.07, 131.37], [106.35, 129.24], [106.77, 127.14], [107.22, 125.04], [107.64, 122.93], [108.05, 120.82], [108.45, 118.71], [108.84, 116.6], [109.25, 114.49], [109.86, 112.44], [110.83, 110.52], [112.16, 108.84], [113.78, 107.44], [115.65, 106.38], [117.67, 105.68]], [[174.73, 114.1], [176.71, 114.59], [178.5, 115.55], [180.04, 116.88], [181.27, 118.5], [182.17, 120.33], [182.71, 122.29], [182.9, 124.32], [182.82, 126.36], [182.56, 128.38], [182.23, 130.39], [181.89, 132.4], [181.53, 134.41], [181.16, 136.41], [180.75, 138.41], [180.3, 140.4], [179.82, 142.38], [179.18, 144.31], [178.28, 146.15], [177.14, 147.83], [175.74, 149.31], [174.11, 150.53], [172.29, 151.44], [170.32, 151.97], [168.29, 152.07], [166.29, 151.69], [164.45, 150.83], [162.87, 149.54], [161.66, 147.91], [160.83, 146.06], [160.38, 144.07], [160.29, 142.04], [160.53, 140.01], [160.98, 138.02], [161.43, 136.03], [161.84, 134.04], [162.24, 132.04], [162.62, 130.03], [162.93, 128.02], [163.24, 126], [163.6, 124], [164.11, 122.03], [164.91, 120.15], [165.99, 118.43], [167.35, 116.91], [168.94, 115.64], [170.74, 114.69], [172.7, 114.15]]], [[[105.72, 72.58], [108.82, 72.78], [111.75, 73.82], [114.27, 75.64], [116.39, 77.92], [118.42, 80.29], [120.45, 82.66], [122.47, 85.03], [124.48, 87.41], [126.49, 89.8], [128.48, 92.2], [130.47, 94.6], [132.45, 97.01], [134.43, 99.42], [136.4, 101.83], [138.37, 104.25], [140.3, 106.7], [141.85, 109.39], [142.65, 112.4], [142.63, 115.51], [141.8, 118.5], [140.21, 121.17], [137.95, 123.31], [135.17, 124.7], [132.11, 125.26], [129.02, 124.98], [126.12, 123.86], [123.67, 121.94], [121.61, 119.6], [119.66, 117.17], [117.69, 114.75], [115.73, 112.33], [113.75, 109.92], [111.77, 107.52], [109.77, 105.12], [107.77, 102.73], [105.76, 100.34], [103.75, 97.96], [101.72, 95.59], [99.68, 93.23], [97.63, 90.89], [95.91, 88.3], [94.95, 85.34], [94.92, 82.24], [95.84, 79.27], [97.56, 76.68], [99.9, 74.63], [102.67, 73.22]], [[176.73, 63.75], [179.52, 64.43], [182.02, 65.85], [184.15, 67.78], [185.85, 70.1], [187.08, 72.7], [187.76, 75.5], [187.76, 78.37], [187.23, 81.2], [186.58, 84.01], [185.89, 86.8], [185.16, 89.59], [184.39, 92.36], [183.59, 95.13], [182.76, 97.89], [181.88, 100.64], [180.98, 103.37], [180.02, 106.09], [179.03, 108.79], [177.99, 111.48], [176.9, 114.15], [175.5, 116.66], [173.51, 118.72], [171, 120.11], [168.18, 120.66], [165.34, 120.29], [162.75, 119.04], [160.62, 117.12], [159.02, 114.73], [158, 112.04], [157.63, 109.19], [157.98, 106.34], [158.83, 103.59], [159.86, 100.9], [160.87, 98.2], [161.85, 95.49], [162.79, 92.76], [163.7, 90.03], [164.57, 87.29], [165.41, 84.53], [166.21, 81.76], [166.98, 78.99], [167.7, 76.2], [168.38, 73.4], [169, 70.58], [169.79, 67.82], [171.41, 65.46], [173.88, 64.03]]], [[[64.12, 83.43], [66.69, 84.08], [68.9, 85.53], [70.57, 87.6], [71.56, 90.05], [71.86, 92.69], [71.53, 95.32], [70.55, 97.78], [69.06, 99.99], [67.36, 102.03], [65.64, 104.06], [63.95, 106.11], [62.28, 108.18], [60.63, 110.27], [59, 112.38], [57.41, 114.5], [55.84, 116.65], [54.29, 118.82], [52.78, 121], [51.31, 123.22], [49.86, 125.45], [48.42, 127.69], [46.67, 129.68], [44.36, 130.96], [41.73, 131.22], [39.22, 130.38], [37.16, 128.72], [35.64, 126.55], [34.65, 124.08], [34.2, 121.46], [34.29, 118.81], [34.94, 116.24], [36.12, 113.86], [37.54, 111.61], [39.04, 109.41], [40.54, 107.21], [42.06, 105.03], [43.61, 102.87], [45.18, 100.73], [46.79, 98.6], [48.41, 96.5], [50.07, 94.42], [51.74, 92.35], [53.45, 90.31], [55.17, 88.28], [56.94, 86.3], [59.04, 84.67], [61.48, 83.65]], [[104.23, 93.09], [106.97, 93.77], [109.4, 95.24], [111.32, 97.31], [112.59, 99.85], [113.4, 102.57], [114.13, 105.32], [114.87, 108.06], [115.62, 110.8], [116.37, 113.54], [117.14, 116.28], [117.9, 119.02], [118.67, 121.75], [119.45, 124.49], [120.23, 127.22], [121.03, 129.95], [121.83, 132.68], [122.6, 135.41], [122.98, 138.22], [122.57, 141.02], [121.34, 143.57], [119.44, 145.67], [117.05, 147.19], [114.34, 148.04], [111.51, 148.14], [108.77, 147.45], [106.33, 146.01], [104.38, 143.96], [103.07, 141.44], [102.21, 138.73], [101.43, 136], [100.65, 133.27], [99.87, 130.53], [99.09, 127.8], [98.32, 125.06], [97.55, 122.33], [96.79, 119.59], [96.04, 116.85], [95.28, 114.11], [94.53, 111.37], [93.79, 108.62], [93.05, 105.88], [92.73, 103.07], [93.18, 100.27], [94.42, 97.72], [96.32, 95.62], [98.7, 94.08], [101.4, 93.21]]], [[[108.14, 135.9], [111.13, 136.06], [114.08, 136.56], [116.95, 137.39], [119.71, 138.55], [122.31, 140.03], [124.71, 141.81], [126.86, 143.89], [128.73, 146.23], [130.27, 148.8], [131.44, 151.55], [132.22, 154.44], [132.56, 157.41], [132.47, 160.4], [131.93, 163.34], [130.96, 166.17], [129.6, 168.83], [127.87, 171.28], [125.83, 173.46], [123.51, 175.35], [120.96, 176.91], [118.23, 178.13], [115.36, 179], [112.42, 179.52], [109.43, 179.7], [106.44, 179.54], [103.49, 179.04], [100.62, 178.21], [97.86, 177.06], [95.26, 175.58], [92.86, 173.79], [90.71, 171.71], [88.84, 169.37], [87.3, 166.81], [86.13, 164.06], [85.35, 161.17], [85.01, 158.2], [85.11, 155.21], [85.64, 152.26], [86.61, 149.43], [87.97, 146.77], [89.7, 144.33], [91.74, 142.14], [94.06, 140.25], [96.61, 138.69], [99.34, 137.47], [102.21, 136.6], [105.15, 136.08]], [[175.67, 128.81], [177.16, 128.85], [178.62, 129.14], [180.01, 129.67], [181.28, 130.44], [182.41, 131.42], [183.36, 132.57], [184.12, 133.85], [184.68, 135.23], [185.05, 136.68], [185.24, 138.15], [185.27, 139.64], [185.13, 141.13], [184.85, 142.59], [184.42, 144.02], [183.85, 145.4], [183.15, 146.72], [182.33, 147.96], [181.38, 149.11], [180.32, 150.16], [179.15, 151.08], [177.88, 151.87], [176.53, 152.49], [175.1, 152.91], [173.62, 153.11], [172.13, 153.07], [170.67, 152.78], [169.28, 152.24], [168.01, 151.47], [166.88, 150.49], [165.93, 149.35], [165.18, 148.06], [164.61, 146.68], [164.24, 145.24], [164.05, 143.76], [164.02, 142.27], [164.16, 140.78], [164.44, 139.32], [164.87, 137.89], [165.44, 136.51], [166.14, 135.2], [166.96, 133.95], [167.91, 132.8], [168.97, 131.75], [170.14, 130.83], [171.4, 130.04], [172.76, 129.43], [174.19, 129.01]]], [[[103.39, 78.25], [106.56, 78.38], [109.59, 79.28], [112.29, 80.94], [114.43, 83.28], [115.86, 86.1], [116.52, 89.2], [116.32, 92.37], [115.62, 95.46], [114.86, 98.55], [114.1, 101.63], [113.36, 104.72], [112.63, 107.81], [111.91, 110.91], [111.2, 114.01], [110.51, 117.1], [109.82, 120.21], [109.16, 123.31], [108.52, 126.42], [107.84, 129.53], [106.8, 132.52], [105.04, 135.16], [102.66, 137.25], [99.81, 138.63], [96.7, 139.2], [93.54, 138.96], [90.53, 137.95], [87.87, 136.24], [85.71, 133.92], [84.21, 131.13], [83.48, 128.05], [83.5, 124.88], [84, 121.74], [84.7, 118.64], [85.4, 115.54], [86.08, 112.44], [86.77, 109.34], [87.48, 106.24], [88.19, 103.15], [88.92, 100.05], [89.66, 96.96], [90.41, 93.88], [91.18, 90.8], [91.95, 87.71], [93.1, 84.76], [94.95, 82.19], [97.4, 80.19], [100.28, 78.86]], [[161.99, 91.57], [165.07, 92], [167.9, 93.28], [170.32, 95.23], [172.22, 97.69], [173.49, 100.53], [174.05, 103.59], [173.93, 106.7], [173.45, 109.78], [172.9, 112.85], [172.33, 115.91], [171.71, 118.97], [171.06, 122.02], [170.38, 125.06], [169.66, 128.09], [168.91, 131.12], [168.13, 134.14], [167.33, 137.15], [166.5, 140.16], [165.58, 143.14], [164.33, 145.98], [162.5, 148.5], [160.15, 150.53], [157.38, 151.95], [154.34, 152.61], [151.24, 152.43], [148.32, 151.38], [145.83, 149.52], [143.99, 147.01], [142.95, 144.08], [142.73, 140.98], [143.25, 137.91], [144.09, 134.91], [144.94, 131.91], [145.76, 128.9], [146.54, 125.89], [147.29, 122.86], [148.01, 119.83], [148.69, 116.79], [149.34, 113.74], [149.95, 110.68], [150.54, 107.62], [151.09, 104.55], [151.6, 101.47], [152.44, 98.48], [154, 95.79], [156.21, 93.6], [158.94, 92.12]]], [[[47.23, 91.05], [51.61, 92.47], [55.26, 95.29], [57.96, 99.03], [59.7, 103.31], [60.56, 107.85], [61.28, 112.42], [62.11, 116.97], [63.06, 121.51], [64.11, 126.01], [65.28, 130.49], [66.56, 134.94], [67.95, 139.35], [69.44, 143.73], [71.05, 148.07], [72.77, 152.37], [74.62, 156.61], [76.52, 160.83], [78.06, 165.19], [78.52, 169.78], [77.62, 174.3], [75.2, 178.22], [71.44, 180.86], [66.96, 181.91], [62.36, 181.55], [57.99, 180.06], [54.03, 177.68], [50.59, 174.58], [47.77, 170.92], [45.62, 166.83], [43.74, 162.6], [41.96, 158.33], [40.29, 154.01], [38.72, 149.66], [37.27, 145.26], [35.93, 140.83], [34.69, 136.37], [33.56, 131.88], [32.55, 127.37], [31.65, 122.83], [30.85, 118.27], [30.2, 113.69], [30.08, 109.07], [30.85, 104.51], [32.49, 100.19], [35.01, 96.32], [38.44, 93.24], [42.64, 91.35]], [[108.93, 73.38], [113.76, 73.6], [118.38, 75.01], [122.49, 77.56], [125.82, 81.07], [128.1, 85.34], [129.65, 89.93], [131.04, 94.58], [132.43, 99.22], [133.82, 103.87], [135.22, 108.51], [136.6, 113.16], [137.99, 117.81], [139.36, 122.46], [140.73, 127.11], [142.13, 131.76], [143.51, 136.41], [144.82, 141.08], [145.51, 145.86], [144.91, 150.66], [143.09, 155.14], [140.17, 158.99], [136.38, 162.01], [132, 164.05], [127.26, 165.03], [122.42, 164.86], [117.79, 163.48], [113.67, 160.95], [110.36, 157.43], [108.17, 153.11], [106.72, 148.49], [105.36, 143.83], [103.99, 139.18], [102.62, 134.53], [101.24, 129.88], [99.87, 125.23], [98.48, 120.58], [97.09, 115.93], [95.7, 111.29], [94.29, 106.64], [92.89, 102], [91.49, 97.36], [90.81, 92.57], [91.38, 87.77], [93.14, 83.26], [96.02, 79.37], [99.79, 76.34], [104.18, 74.32]]], [[[102.86, 129.56], [106.39, 129.96], [109.85, 130.76], [113.21, 131.94], [116.4, 133.5], [119.39, 135.42], [122.13, 137.69], [124.56, 140.28], [126.64, 143.16], [128.33, 146.29], [129.59, 149.61], [130.37, 153.08], [130.66, 156.62], [130.43, 160.16], [129.68, 163.63], [128.42, 166.96], [126.7, 170.07], [124.54, 172.89], [122.02, 175.39], [119.18, 177.52], [116.07, 179.25], [112.76, 180.54], [109.31, 181.4], [105.78, 181.82], [102.23, 181.83], [98.7, 181.42], [95.24, 180.62], [91.88, 179.44], [88.69, 177.88], [85.7, 175.96], [82.96, 173.69], [80.53, 171.1], [78.45, 168.22], [76.76, 165.1], [75.5, 161.77], [74.72, 158.31], [74.44, 154.77], [74.67, 151.22], [75.41, 147.75], [76.67, 144.42], [78.39, 141.32], [80.55, 138.49], [83.07, 135.99], [85.91, 133.86], [89.02, 132.14], [92.33, 130.84], [95.78, 129.99], [99.31, 129.56]], [[180.44, 141.06], [183.61, 141.1], [186.72, 141.68], [189.66, 142.86], [192.28, 144.63], [194.43, 146.96], [196, 149.71], [197, 152.72], [197.48, 155.86], [197.51, 159.03], [197.15, 162.18], [196.43, 165.27], [195.38, 168.26], [194.07, 171.15], [192.52, 173.92], [190.74, 176.55], [188.77, 179.03], [186.6, 181.35], [184.25, 183.48], [181.74, 185.41], [179.06, 187.12], [176.23, 188.56], [173.28, 189.71], [170.21, 190.52], [167.07, 190.95], [163.9, 190.91], [160.78, 190.33], [157.84, 189.15], [155.22, 187.37], [153.08, 185.04], [151.51, 182.29], [150.51, 179.28], [150.03, 176.15], [150, 172.98], [150.36, 169.83], [151.07, 166.74], [152.12, 163.74], [153.43, 160.85], [154.99, 158.09], [156.76, 155.46], [158.74, 152.98], [160.91, 150.66], [163.25, 148.53], [165.77, 146.59], [168.45, 144.89], [171.27, 143.45], [174.23, 142.3], [177.29, 141.48]]], [[[86.02, 131.33], [88.42, 131.69], [90.54, 132.87], [92.12, 134.71], [93.03, 136.97], [93.17, 139.39], [92.41, 141.69], [90.78, 143.48], [88.59, 144.52], [86.19, 144.97], [83.78, 145.34], [81.37, 145.72], [78.96, 146.09], [76.54, 146.45], [74.13, 146.81], [71.72, 147.16], [69.3, 147.5], [66.88, 147.84], [64.47, 148.16], [62.05, 148.47], [59.62, 148.76], [57.2, 149.03], [54.77, 149.27], [52.34, 149.49], [49.91, 149.68], [47.53, 149.28], [45.52, 147.92], [44.04, 145.99], [43.12, 143.74], [42.85, 141.32], [43.44, 138.97], [45.04, 137.17], [47.33, 136.4], [49.76, 136.2], [52.19, 135.96], [54.62, 135.7], [57.04, 135.43], [59.46, 135.15], [61.89, 134.85], [64.31, 134.54], [66.72, 134.22], [69.14, 133.89], [71.56, 133.54], [73.97, 133.19], [76.38, 132.83], [78.79, 132.45], [81.2, 132.06], [83.61, 131.67]], [[153.42, 116.84], [155.92, 117.69], [157.78, 119.56], [158.72, 122.03], [158.73, 124.68], [157.84, 127.18], [156.08, 129.15], [153.71, 130.33], [151.13, 131], [148.55, 131.65], [145.98, 132.32], [143.4, 132.98], [140.82, 133.63], [138.23, 134.27], [135.65, 134.9], [133.06, 135.53], [130.47, 136.15], [127.88, 136.76], [125.29, 137.36], [122.69, 137.94], [120.09, 138.51], [117.49, 139.06], [114.88, 139.59], [112.27, 140.1], [109.62, 140.12], [107.17, 139.14], [105.28, 137.29], [104.18, 134.88], [104.06, 132.23], [105.03, 129.78], [106.92, 127.93], [109.35, 126.87], [111.96, 126.34], [114.57, 125.8], [117.17, 125.24], [119.77, 124.67], [122.37, 124.09], [124.96, 123.5], [127.56, 122.9], [130.15, 122.29], [132.74, 121.68], [135.32, 121.05], [137.91, 120.41], [140.49, 119.76], [143.07, 119.11], [145.65, 118.44], [148.22, 117.76], [150.78, 117.03]]], [[[83.36, 65.84], [86.61, 66.42], [89.57, 67.88], [92, 70.12], [93.67, 72.97], [94.46, 76.17], [94.31, 79.47], [93.61, 82.71], [92.8, 85.92], [92.02, 89.14], [91.27, 92.36], [90.56, 95.6], [89.88, 98.84], [89.23, 102.09], [88.62, 105.34], [88.03, 108.61], [87.51, 111.88], [87.01, 115.15], [86.5, 118.42], [85.65, 121.62], [84.11, 124.54], [81.9, 126.99], [79.13, 128.79], [75.98, 129.8], [72.68, 129.91], [69.47, 129.13], [66.6, 127.49], [64.24, 125.18], [62.49, 122.38], [61.42, 119.25], [61.08, 115.97], [61.36, 112.67], [61.87, 109.4], [62.45, 106.13], [63.01, 102.87], [63.61, 99.61], [64.24, 96.36], [64.9, 93.11], [65.6, 89.87], [66.33, 86.64], [67.09, 83.42], [67.89, 80.2], [68.73, 77], [69.89, 73.9], [71.7, 71.14], [74.1, 68.86], [76.93, 67.16], [80.07, 66.12]], [[119.49, 99.16], [121.99, 99.28], [124.44, 99.82], [126.9, 100.34], [129.36, 100.86], [131.81, 101.38], [134.27, 101.91], [136.72, 102.44], [139.17, 102.98], [141.62, 103.52], [144.08, 104.07], [146.52, 104.62], [148.97, 105.18], [151.42, 105.74], [153.86, 106.31], [156.31, 106.89], [158.75, 107.47], [161.2, 108.02], [163.49, 109.03], [165.16, 110.87], [165.95, 113.24], [165.87, 115.74], [164.94, 118.05], [163.17, 119.8], [160.79, 120.55], [158.31, 120.29], [155.88, 119.65], [153.44, 119.06], [150.99, 118.49], [148.55, 117.92], [146.1, 117.36], [143.65, 116.81], [141.2, 116.26], [138.75, 115.73], [136.29, 115.2], [133.84, 114.67], [131.38, 114.15], [128.93, 113.62], [126.47, 113.1], [124.02, 112.57], [121.56, 112.04], [119.11, 111.5], [116.81, 110.53], [115.08, 108.73], [114.22, 106.39], [114.29, 103.9], [115.28, 101.61], [117.12, 99.93]]], [[[168.71, 85.67], [170.73, 86], [172.64, 86.75], [174.37, 87.85], [175.88, 89.24], [177.11, 90.88], [178.04, 92.71], [178.71, 94.65], [179.21, 96.64], [179.64, 98.65], [180.05, 100.66], [180.45, 102.67], [180.83, 104.69], [181.18, 106.71], [181.5, 108.74], [181.77, 110.78], [181.88, 112.82], [181.71, 114.87], [181.22, 116.86], [180.41, 118.74], [179.27, 120.45], [177.83, 121.91], [176.12, 123.03], [174.2, 123.74], [172.16, 123.99], [170.13, 123.75], [168.21, 123.04], [166.49, 121.93], [165.03, 120.48], [163.88, 118.79], [163.02, 116.93], [162.49, 114.95], [162.17, 112.92], [161.85, 110.89], [161.51, 108.87], [161.14, 106.84], [160.77, 104.83], [160.37, 102.81], [159.96, 100.8], [159.52, 98.79], [159.24, 96.76], [159.3, 94.71], [159.71, 92.7], [160.48, 90.8], [161.58, 89.08], [163.01, 87.61], [164.73, 86.49], [166.67, 85.83]], [[206.57, 78.24], [208.3, 78.8], [209.77, 79.87], [210.99, 81.22], [212.01, 82.73], [212.85, 84.34], [213.53, 86.03], [214.08, 87.77], [214.54, 89.54], [214.95, 91.31], [215.34, 93.09], [215.7, 94.88], [216.04, 96.67], [216.36, 98.46], [216.64, 100.26], [216.89, 102.07], [217.11, 103.88], [217.25, 105.7], [217.26, 107.52], [217.1, 109.33], [216.75, 111.12], [216.16, 112.84], [215.3, 114.44], [214.04, 115.75], [212.34, 116.35], [210.58, 115.96], [209.11, 114.89], [207.97, 113.48], [207.1, 111.88], [206.44, 110.18], [205.97, 108.42], [205.62, 106.63], [205.35, 104.83], [205.11, 103.02], [204.85, 101.22], [204.55, 99.42], [204.22, 97.63], [203.87, 95.84], [203.49, 94.05], [203.09, 92.28], [202.67, 90.5], [202.32, 88.71], [202.1, 86.91], [202.1, 85.08], [202.32, 83.28], [202.77, 81.51], [203.54, 79.86], [204.82, 78.59]]], [[[39.78, 104.3], [42.64, 105.01], [45.03, 106.74], [46.73, 109.15], [47.75, 111.93], [48.35, 114.83], [48.81, 117.76], [49.31, 120.68], [49.87, 123.6], [50.48, 126.5], [51.15, 129.39], [51.86, 132.27], [52.63, 135.13], [53.44, 137.98], [54.3, 140.82], [55.19, 143.65], [56.13, 146.46], [57.1, 149.26], [58.1, 152.05], [58.86, 154.92], [58.96, 157.87], [58.18, 160.72], [56.43, 163.09], [53.84, 164.48], [50.9, 164.62], [48.08, 163.75], [45.58, 162.16], [43.51, 160.05], [41.89, 157.57], [40.67, 154.87], [39.67, 152.08], [38.73, 149.26], [37.81, 146.44], [36.94, 143.61], [36.11, 140.76], [35.34, 137.9], [34.61, 135.03], [33.92, 132.14], [33.28, 129.24], [32.7, 126.34], [32.16, 123.42], [31.67, 120.5], [31.23, 117.57], [31.14, 114.61], [31.65, 111.69], [32.74, 108.94], [34.47, 106.54], [36.89, 104.86]], [[108.97, 125.73], [111.9, 126.2], [114.63, 127.37], [117, 129.16], [118.84, 131.49], [119.99, 134.23], [120.32, 137.18], [119.85, 140.11], [118.59, 142.8], [116.78, 145.16], [114.84, 147.42], [112.89, 149.67], [110.93, 151.92], [108.97, 154.16], [107.01, 156.39], [105.03, 158.62], [103.05, 160.85], [101.07, 163.06], [99.07, 165.28], [97.09, 167.5], [95.09, 169.71], [93.05, 171.88], [90.69, 173.67], [87.89, 174.66], [84.93, 174.81], [82.02, 174.22], [79.31, 173], [76.92, 171.24], [74.99, 168.98], [73.7, 166.3], [73.26, 163.37], [73.74, 160.45], [75.2, 157.86], [77.17, 155.63], [79.18, 153.43], [81.18, 151.23], [83.17, 149.02], [85.16, 146.8], [87.14, 144.58], [89.11, 142.35], [91.08, 140.11], [93.04, 137.87], [95, 135.63], [96.95, 133.38], [98.89, 131.12], [100.87, 128.89], [103.25, 127.12], [106.02, 126.04]]], [[[115.43, 87.59], [118.19, 88.24], [120.69, 89.59], [122.69, 91.59], [124.03, 94.09], [124.63, 96.87], [124.41, 99.7], [123.7, 102.45], [122.9, 105.18], [122.12, 107.92], [121.34, 110.65], [120.57, 113.39], [119.79, 116.13], [119.02, 118.87], [118.25, 121.61], [117.48, 124.35], [116.72, 127.09], [115.97, 129.83], [115.23, 132.58], [114.45, 135.32], [113.3, 137.91], [111.49, 140.09], [109.13, 141.65], [106.41, 142.48], [103.58, 142.56], [100.82, 141.91], [98.33, 140.54], [96.33, 138.53], [94.99, 136.03], [94.38, 133.26], [94.57, 130.43], [95.25, 127.67], [96.02, 124.93], [96.79, 122.19], [97.55, 119.45], [98.31, 116.7], [99.08, 113.96], [99.85, 111.22], [100.62, 108.49], [101.4, 105.75], [102.18, 103.01], [102.95, 100.27], [103.74, 97.54], [104.51, 94.8], [105.68, 92.21], [107.5, 90.04], [109.88, 88.5], [112.59, 87.67]], [[155.37, 78.64], [158.04, 79.15], [160.48, 80.37], [162.53, 82.16], [164.33, 84.22], [166.1, 86.3], [167.85, 88.4], [169.58, 90.51], [171.29, 92.64], [172.98, 94.78], [174.65, 96.94], [176.3, 99.12], [177.92, 101.32], [179.51, 103.54], [181.06, 105.79], [182.57, 108.07], [184.03, 110.37], [185.2, 112.83], [185.77, 115.5], [185.73, 118.23], [185.07, 120.87], [183.8, 123.28], [181.94, 125.26], [179.57, 126.6], [176.89, 127.03], [174.24, 126.43], [171.99, 124.92], [170.26, 122.8], [168.75, 120.53], [167.22, 118.27], [165.66, 116.03], [164.07, 113.81], [162.45, 111.6], [160.82, 109.41], [159.16, 107.25], [157.47, 105.1], [155.76, 102.97], [154.03, 100.85], [152.28, 98.76], [150.51, 96.68], [148.74, 94.6], [147.29, 92.29], [146.49, 89.69], [146.36, 86.97], [146.94, 84.31], [148.23, 81.91], [150.19, 80.02], [152.66, 78.89]]], [[[92.71, 76.24], [95.76, 76.59], [98.73, 77.35], [101.56, 78.53], [104.21, 80.08], [106.63, 81.96], [108.78, 84.16], [110.61, 86.62], [112.09, 89.31], [113.19, 92.17], [113.91, 95.15], [114.24, 98.2], [114.18, 101.27], [113.73, 104.31], [112.9, 107.26], [111.7, 110.09], [110.15, 112.73], [108.28, 115.17], [106.12, 117.35], [103.71, 119.24], [101.08, 120.83], [98.27, 122.07], [95.33, 122.95], [92.3, 123.44], [89.23, 123.51], [86.18, 123.17], [83.21, 122.41], [80.38, 121.23], [77.73, 119.69], [75.31, 117.8], [73.16, 115.61], [71.33, 113.14], [69.86, 110.45], [68.75, 107.59], [68.02, 104.61], [67.7, 101.56], [67.76, 98.49], [68.22, 95.46], [69.05, 92.5], [70.25, 89.68], [71.8, 87.03], [73.67, 84.59], [75.83, 82.41], [78.24, 80.52], [80.87, 78.93], [83.67, 77.69], [86.61, 76.81], [89.64, 76.32]], [[157.73, 102.08], [159.31, 102.13], [160.86, 102.42], [162.35, 102.95], [163.74, 103.69], [165.01, 104.62], [166.15, 105.72], [167.13, 106.95], [167.96, 108.29], [168.63, 109.72], [169.13, 111.22], [169.45, 112.76], [169.59, 114.34], [169.55, 115.91], [169.31, 117.47], [168.88, 118.99], [168.28, 120.45], [167.52, 121.83], [166.58, 123.1], [165.48, 124.23], [164.25, 125.22], [162.89, 126.02], [161.43, 126.63], [159.91, 127.02], [158.34, 127.2], [156.76, 127.14], [155.21, 126.85], [153.73, 126.33], [152.33, 125.59], [151.06, 124.65], [149.93, 123.56], [148.94, 122.33], [148.11, 120.99], [147.44, 119.56], [146.95, 118.06], [146.62, 116.51], [146.48, 114.94], [146.52, 113.37], [146.76, 111.8], [147.18, 110.28], [147.78, 108.83], [148.56, 107.45], [149.5, 106.18], [150.59, 105.05], [151.83, 104.07], [153.18, 103.26], [154.64, 102.65], [156.17, 102.26]]], [[[57.98, 112.03], [61.01, 112.26], [63.82, 113.41], [66.22, 115.27], [68.09, 117.67], [69.36, 120.44], [70.14, 123.39], [70.64, 126.39], [71.07, 129.41], [71.58, 132.42], [72.15, 135.41], [72.76, 138.4], [73.4, 141.38], [74.09, 144.35], [74.82, 147.31], [75.59, 150.26], [76.42, 153.2], [77.3, 156.12], [78.16, 159.04], [78.68, 162.04], [78.42, 165.07], [77.28, 167.88], [75.25, 170.13], [72.54, 171.49], [69.52, 171.87], [66.51, 171.44], [63.69, 170.32], [61.16, 168.61], [59.03, 166.44], [57.38, 163.89], [56.23, 161.06], [55.34, 158.15], [54.53, 155.21], [53.73, 152.27], [52.97, 149.31], [52.25, 146.35], [51.57, 143.38], [50.93, 140.4], [50.34, 137.41], [49.78, 134.41], [49.26, 131.4], [48.78, 128.39], [48.37, 125.37], [48.37, 122.33], [49.06, 119.36], [50.44, 116.65], [52.47, 114.39], [55.04, 112.78]], [[117.45, 101.46], [120.57, 101.84], [123.48, 103.02], [125.99, 104.91], [127.97, 107.35], [129.25, 110.23], [130.05, 113.27], [130.76, 116.34], [131.46, 119.41], [132.15, 122.49], [132.85, 125.56], [133.55, 128.63], [134.24, 131.71], [134.93, 134.78], [135.61, 137.86], [136.32, 140.93], [137.01, 144], [137.66, 147.09], [137.87, 150.22], [137.25, 153.3], [135.83, 156.1], [133.73, 158.45], [131.15, 160.23], [128.22, 161.38], [125.11, 161.83], [121.98, 161.5], [119.05, 160.37], [116.52, 158.51], [114.57, 156.05], [113.37, 153.14], [112.64, 150.08], [111.95, 147], [111.27, 143.93], [110.58, 140.85], [109.89, 137.78], [109.2, 134.7], [108.51, 131.63], [107.81, 128.56], [107.12, 125.48], [106.42, 122.41], [105.71, 119.34], [105.02, 116.27], [104.83, 113.13], [105.42, 110.04], [106.79, 107.22], [108.84, 104.83], [111.41, 103.02], [114.33, 101.87]]], [[[113.75, 120.08], [118.16, 120.78], [122.31, 122.43], [125.98, 124.96], [128.94, 128.29], [131.02, 132.23], [132.12, 136.56], [132.1, 141.02], [131.16, 145.38], [129.94, 149.68], [128.69, 153.98], [127.44, 158.27], [126.19, 162.56], [124.92, 166.85], [123.64, 171.14], [122.35, 175.42], [121.05, 179.69], [119.76, 183.97], [118.46, 188.25], [117.05, 192.49], [114.84, 196.36], [111.47, 199.27], [107.42, 201.12], [103.04, 201.99], [98.58, 201.97], [94.18, 201.19], [89.97, 199.7], [86.1, 197.48], [82.8, 194.48], [80.41, 190.72], [79.31, 186.41], [79.87, 182], [81.24, 177.74], [82.57, 173.47], [83.88, 169.2], [85.19, 164.92], [86.48, 160.64], [87.75, 156.36], [89.02, 152.07], [90.28, 147.78], [91.53, 143.49], [92.77, 139.19], [93.97, 134.88], [95.5, 130.69], [97.93, 126.95], [101.16, 123.87], [105.02, 121.64], [109.3, 120.36]], [[181.19, 127.71], [185.4, 128.03], [189.23, 129.79], [192.19, 132.8], [194.06, 136.59], [194.87, 140.74], [194.76, 144.98], [194.21, 149.18], [193.55, 153.37], [192.79, 157.55], [191.91, 161.69], [190.91, 165.82], [189.8, 169.91], [188.57, 173.97], [187.22, 177.99], [185.72, 181.96], [184.07, 185.87], [182.26, 189.7], [180.26, 193.44], [177.85, 196.92], [174.93, 199.99], [171.62, 202.64], [168, 204.85], [164.13, 206.59], [160.07, 207.78], [155.86, 208.24], [151.69, 207.6], [148.31, 205.16], [147.33, 201.11], [148.48, 197.06], [150.4, 193.28], [152.24, 189.46], [153.93, 185.56], [155.48, 181.61], [156.89, 177.62], [158.17, 173.57], [159.32, 169.49], [160.35, 165.38], [161.26, 161.23], [162.06, 157.07], [162.7, 152.87], [163.29, 148.67], [164.12, 144.52], [165.46, 140.5], [167.49, 136.78], [170.16, 133.49], [173.37, 130.73], [177.08, 128.7]]], [[[52.43, 111.88], [55.76, 112.3], [59, 113.21], [62.08, 114.57], [64.96, 116.3], [67.61, 118.36], [70.01, 120.71], [72.16, 123.3], [74.02, 126.1], [75.61, 129.06], [76.9, 132.17], [77.89, 135.38], [78.56, 138.68], [78.89, 142.02], [78.86, 145.39], [78.45, 148.72], [77.63, 151.98], [76.39, 155.11], [74.74, 158.03], [72.67, 160.68], [70.2, 162.96], [67.38, 164.79], [64.28, 166.08], [61, 166.78], [57.64, 166.91], [54.3, 166.49], [51.07, 165.57], [47.99, 164.22], [45.11, 162.49], [42.46, 160.42], [40.05, 158.07], [37.91, 155.48], [36.04, 152.68], [34.46, 149.72], [33.16, 146.62], [32.17, 143.4], [31.51, 140.11], [31.18, 136.76], [31.21, 133.4], [31.62, 130.06], [32.44, 126.8], [33.67, 123.68], [35.33, 120.75], [37.4, 118.1], [39.86, 115.82], [42.68, 114], [45.79, 112.71], [49.07, 112.01]], [[126.89, 95.19], [130.56, 95.44], [134.16, 96.17], [137.64, 97.36], [140.94, 98.99], [143.98, 101.06], [146.73, 103.5], [149.13, 106.29], [151.14, 109.37], [152.72, 112.69], [153.86, 116.19], [154.54, 119.8], [154.74, 123.47], [154.45, 127.14], [153.67, 130.74], [152.43, 134.2], [150.76, 137.48], [148.69, 140.51], [146.25, 143.27], [143.48, 145.69], [140.43, 147.75], [137.14, 149.39], [133.66, 150.59], [130.06, 151.32], [126.39, 151.56], [122.72, 151.31], [119.11, 150.59], [115.63, 149.4], [112.34, 147.76], [109.29, 145.7], [106.54, 143.26], [104.14, 140.47], [102.13, 137.39], [100.55, 134.07], [99.41, 130.57], [98.73, 126.96], [98.53, 123.28], [98.83, 119.62], [99.6, 116.02], [100.84, 112.56], [102.51, 109.28], [104.59, 106.25], [107.03, 103.49], [109.79, 101.07], [112.84, 99.01], [116.13, 97.36], [119.61, 96.16], [123.22, 95.43]]], [[[72.34, 79.33], [74.93, 79.64], [77.52, 79.94], [80.12, 80.25], [82.71, 80.57], [85.3, 80.91], [87.88, 81.26], [90.47, 81.63], [93.05, 82], [95.63, 82.39], [98.21, 82.79], [100.79, 83.21], [103.37, 83.63], [105.94, 84.07], [108.51, 84.52], [111.09, 84.92], [113.65, 85.44], [115.99, 86.56], [117.75, 88.47], [118.68, 90.89], [118.57, 93.48], [117.47, 95.83], [115.57, 97.6], [113.16, 98.56], [110.56, 98.58], [108, 98.1], [105.43, 97.64], [102.85, 97.19], [100.28, 96.76], [97.7, 96.33], [95.12, 95.93], [92.54, 95.53], [89.96, 95.14], [87.38, 94.77], [84.79, 94.4], [82.2, 94.06], [79.62, 93.72], [77.02, 93.41], [74.43, 93.11], [71.84, 92.81], [69.24, 92.5], [66.78, 91.69], [64.99, 89.83], [64.25, 87.35], [64.5, 84.76], [65.58, 82.39], [67.38, 80.53], [69.74, 79.45]], [[136.83, 90.25], [139.33, 90.71], [141.8, 91.34], [144.28, 91.93], [146.75, 92.53], [149.22, 93.14], [151.69, 93.77], [154.15, 94.4], [156.62, 95.05], [159.08, 95.71], [161.53, 96.38], [163.98, 97.07], [166.43, 97.76], [168.88, 98.47], [171.32, 99.2], [173.75, 99.94], [176.19, 100.67], [178.49, 101.74], [180.18, 103.62], [181.12, 105.98], [181.31, 108.51], [180.69, 110.96], [179.21, 113.01], [176.98, 114.19], [174.46, 114.13], [172.02, 113.41], [169.58, 112.66], [167.14, 111.93], [164.7, 111.22], [162.25, 110.52], [159.8, 109.84], [157.34, 109.17], [154.88, 108.52], [152.42, 107.88], [149.95, 107.26], [147.48, 106.64], [145.01, 106.03], [142.54, 105.42], [140.06, 104.81], [137.59, 104.21], [135.12, 103.61], [132.78, 102.62], [130.96, 100.86], [129.93, 98.55], [129.77, 96.02], [130.49, 93.59], [132.06, 91.61], [134.31, 90.46]]], [[[107.05, 116.19], [110.26, 116.71], [113.26, 118], [115.85, 119.97], [117.92, 122.49], [119.29, 125.45], [120.04, 128.63], [120.54, 131.86], [121.04, 135.09], [121.54, 138.31], [122.06, 141.54], [122.59, 144.77], [123.12, 147.99], [123.67, 151.21], [124.22, 154.43], [124.8, 157.65], [125.4, 160.86], [125.95, 164.08], [126.04, 167.34], [125.2, 170.49], [123.53, 173.28], [121.14, 175.49], [118.26, 177.02], [115.11, 177.87], [111.85, 178.04], [108.63, 177.56], [105.58, 176.41], [102.87, 174.58], [100.72, 172.14], [99.35, 169.18], [98.61, 166], [98.04, 162.78], [97.47, 159.57], [96.91, 156.35], [96.36, 153.13], [95.83, 149.9], [95.3, 146.68], [94.78, 143.45], [94.27, 140.22], [93.76, 137], [93.26, 133.77], [92.82, 130.53], [92.96, 127.27], [93.87, 124.15], [95.55, 121.35], [97.88, 119.07], [100.68, 117.41], [103.79, 116.44]], [[189.21, 121.96], [191.36, 122.71], [192.8, 124.5], [193.41, 126.73], [193.32, 129.04], [192.59, 131.23], [191.22, 133.09], [189.28, 134.34], [187.12, 135.19], [184.95, 136], [182.78, 136.83], [180.61, 137.63], [178.43, 138.43], [176.24, 139.2], [174.05, 139.95], [171.85, 140.69], [169.64, 141.4], [167.43, 142.09], [165.21, 142.76], [162.98, 143.42], [160.75, 144.05], [158.51, 144.66], [156.27, 145.25], [154.02, 145.81], [151.72, 145.98], [149.57, 145.18], [148.01, 143.49], [147.25, 141.31], [147.31, 139], [148.16, 136.86], [149.7, 135.14], [151.74, 134.05], [153.97, 133.43], [156.21, 132.84], [158.45, 132.22], [160.68, 131.59], [162.91, 130.93], [165.13, 130.26], [167.34, 129.58], [169.55, 128.87], [171.76, 128.15], [173.95, 127.41], [176.15, 126.65], [178.33, 125.87], [180.51, 125.08], [182.68, 124.26], [184.84, 123.41], [186.98, 122.53]]], [[[98.62, 121.53], [100.72, 121.6], [102.78, 122.03], [104.72, 122.83], [106.49, 123.97], [108.01, 125.42], [109.24, 127.12], [110.15, 129.02], [110.66, 131.05], [110.78, 133.15], [110.62, 135.25], [110.34, 137.33], [110.04, 139.42], [109.76, 141.5], [109.49, 143.59], [109.21, 145.68], [108.92, 147.76], [108.6, 149.84], [108.08, 151.88], [107.18, 153.78], [105.92, 155.45], [104.34, 156.83], [102.51, 157.86], [100.51, 158.52], [98.43, 158.81], [96.33, 158.72], [94.28, 158.27], [92.33, 157.47], [90.57, 156.33], [89.03, 154.89], [87.78, 153.21], [86.85, 151.32], [86.29, 149.3], [86.13, 147.2], [86.28, 145.11], [86.57, 143.02], [86.9, 140.94], [87.2, 138.86], [87.49, 136.78], [87.79, 134.69], [88.08, 132.61], [88.4, 130.53], [88.96, 128.5], [89.88, 126.61], [91.15, 124.94], [92.73, 123.56], [94.56, 122.52], [96.54, 121.84]], [[155.31, 127.29], [157.36, 127.43], [159.33, 127.99], [161.14, 128.96], [162.7, 130.29], [163.95, 131.92], [164.84, 133.77], [165.35, 135.75], [165.49, 137.8], [165.35, 139.85], [165.07, 141.89], [164.79, 143.92], [164.53, 145.96], [164.26, 148], [163.97, 150.04], [163.65, 152.06], [163.27, 154.09], [162.7, 156.06], [161.83, 157.92], [160.68, 159.62], [159.29, 161.13], [157.69, 162.41], [155.9, 163.42], [153.97, 164.1], [151.94, 164.41], [149.89, 164.32], [147.9, 163.82], [146.06, 162.92], [144.47, 161.62], [143.24, 159.98], [142.41, 158.1], [142, 156.09], [142.01, 154.04], [142.32, 152.01], [142.64, 149.98], [142.96, 147.95], [143.25, 145.92], [143.51, 143.88], [143.73, 141.83], [143.97, 139.79], [144.27, 137.76], [144.74, 135.76], [145.53, 133.87], [146.62, 132.13], [147.98, 130.59], [149.57, 129.28], [151.35, 128.27], [153.28, 127.58]]]];
|
|
29878
|
+
var GROK_GROUPS = [{
|
|
29879
|
+
"key": "lifecycle",
|
|
29880
|
+
"label": "生命周期",
|
|
29881
|
+
"states": ["sleeping", "idle", "listening", "thinking", "searching", "working"]
|
|
29882
|
+
}, {
|
|
29883
|
+
"key": "emotion",
|
|
29884
|
+
"label": "情绪反应",
|
|
29885
|
+
"states": ["surprised", "angry", "happy", "confused", "sad"]
|
|
29886
|
+
}, {
|
|
29887
|
+
"key": "product",
|
|
29888
|
+
"label": "产品流程",
|
|
29889
|
+
"states": ["loading", "receiving"]
|
|
29890
|
+
}];
|
|
29891
|
+
var GROK_STATE_LABELS = {
|
|
29892
|
+
"sleeping": "睡觉",
|
|
29893
|
+
"idle": "平静",
|
|
29894
|
+
"listening": "聆听",
|
|
29895
|
+
"thinking": "思考",
|
|
29896
|
+
"searching": "寻找",
|
|
29897
|
+
"working": "专注",
|
|
29898
|
+
"surprised": "惊讶",
|
|
29899
|
+
"angry": "生气",
|
|
29900
|
+
"happy": "开心",
|
|
29901
|
+
"confused": "疑惑",
|
|
29902
|
+
"sad": "难过",
|
|
29903
|
+
"loading": "缓冲中",
|
|
29904
|
+
"receiving": "接收"
|
|
29905
|
+
};
|
|
29906
|
+
var GROK_POOLS = {
|
|
29907
|
+
"sleeping": [13, 22, 4],
|
|
29908
|
+
"idle": [0, 8],
|
|
29909
|
+
"listening": [10, 1, 19],
|
|
29910
|
+
"thinking": [8, 16, 14, 17, 5],
|
|
29911
|
+
"searching": [15, 9, 3, 20, 12, 18],
|
|
29912
|
+
"working": [7, 16, 11, 10],
|
|
29913
|
+
"surprised": [3, 21],
|
|
29914
|
+
"angry": [7, 16],
|
|
29915
|
+
"happy": [2, 11, 17, 19],
|
|
29916
|
+
"confused": [14, 5, 8],
|
|
29917
|
+
"sad": [4, 13, 22],
|
|
29918
|
+
"loading": [0, 8],
|
|
29919
|
+
"receiving": [19, 0, 8]
|
|
29920
|
+
};
|
|
29921
|
+
var GROK_EXPR_CADENCE = {
|
|
29922
|
+
"sleeping": [6000, 10000],
|
|
29923
|
+
"idle": [9000, 16000],
|
|
29924
|
+
"listening": [2800, 5000],
|
|
29925
|
+
"thinking": [2000, 3600],
|
|
29926
|
+
"searching": [1000, 1800],
|
|
29927
|
+
"working": [1800, 3200],
|
|
29928
|
+
"surprised": [2500, 4000],
|
|
29929
|
+
"angry": [2200, 3800],
|
|
29930
|
+
"happy": [2500, 4500],
|
|
29931
|
+
"confused": [2200, 3800],
|
|
29932
|
+
"sad": [4000, 7000],
|
|
29933
|
+
"loading": [6000, 10000],
|
|
29934
|
+
"receiving": [4000, 8000]
|
|
29935
|
+
};
|
|
29936
|
+
var GROK_BLINK = {
|
|
29937
|
+
"sleeping": null,
|
|
29938
|
+
"idle": [6000, 14000],
|
|
29939
|
+
"listening": [3000, 7000],
|
|
29940
|
+
"thinking": [3500, 7000],
|
|
29941
|
+
"searching": [1600, 4000],
|
|
29942
|
+
"working": [2800, 5500],
|
|
29943
|
+
"surprised": [1800, 3500],
|
|
29944
|
+
"angry": [3500, 7000],
|
|
29945
|
+
"happy": [2500, 5000],
|
|
29946
|
+
"confused": [2800, 5500],
|
|
29947
|
+
"sad": [4000, 8000],
|
|
29948
|
+
"loading": null,
|
|
29949
|
+
"receiving": null
|
|
29950
|
+
};
|
|
29951
|
+
var GROK_SHAPES = {
|
|
29952
|
+
"blob": {
|
|
29953
|
+
label: "原始形态",
|
|
29954
|
+
d: "M228.541 114.228C228.541 130.133 225.184 145.994 218.738 160.534C212.674 174.217 203.904 186.669 193.065 196.988C155.933 232.34 99.497 238.596 55.5255 212.24C45.097 205.99 35.6851 198.072 27.7451 188.866C19.1926 178.953 12.3686 167.569 7.65781 155.351C2.60712 142.264 0 128.257 0 114.228C0 98.3219 3.35751 82.4611 9.80315 67.9215C15.8672 54.2382 24.6377 41.7862 35.4767 31.4668C72.6081 -3.88483 129.044 -10.1413 173.016 16.2153C183.444 22.4653 192.856 30.3829 200.796 39.5896C209.349 49.5018 216.173 60.8859 220.883 73.1037C225.934 86.1906 228.541 100.198 228.541 114.228Z"
|
|
29955
|
+
},
|
|
29956
|
+
"pebble": {
|
|
29957
|
+
label: "鹅卵石",
|
|
29958
|
+
d: "M114 8C177 8 217 45 217 109C217 178 181 219 112 219C43 219 12 181 12 113C12 48 51 8 114 8Z"
|
|
29959
|
+
},
|
|
29960
|
+
"squircle": {
|
|
29961
|
+
label: "圆角方",
|
|
29962
|
+
d: "M55 10H174Q219 10 219 55V174Q219 219 174 219H55Q10 219 10 174V55Q10 10 55 10Z"
|
|
29963
|
+
},
|
|
29964
|
+
"capsule": {
|
|
29965
|
+
label: "胶囊",
|
|
29966
|
+
d: "M61 31H168C202 31 220 65 220 114C220 163 202 197 168 197H61C27 197 9 163 9 114C9 65 27 31 61 31Z"
|
|
29967
|
+
},
|
|
29968
|
+
"triangle": {
|
|
29969
|
+
label: "三角体",
|
|
29970
|
+
d: "M114 9Q122 9 128 21L220 194Q227 210 207 210H21Q1 210 9 194L101 21Q106 9 114 9Z"
|
|
29971
|
+
},
|
|
29972
|
+
"hex": {
|
|
29973
|
+
label: "六边体",
|
|
29974
|
+
d: "M114 5L207 58Q218 64 218 78V153Q218 167 207 173L128 218Q114 226 100 218L21 173Q10 167 10 153V78Q10 64 21 58L100 12Q114 5 114 5Z"
|
|
29975
|
+
},
|
|
29976
|
+
"cloud": {
|
|
29977
|
+
label: "云朵",
|
|
29978
|
+
d: "M55 188C21 188 6 169 12 142C-1 113 20 86 51 84C61 48 96 35 124 55C151 28 195 46 195 82C226 91 235 128 213 149C214 174 193 190 165 188Z"
|
|
29979
|
+
},
|
|
29980
|
+
"drop": {
|
|
29981
|
+
label: "水滴",
|
|
29982
|
+
d: "M114 5C137 42 202 103 202 151C202 196 165 222 114 222C63 222 26 196 26 151C26 103 91 42 114 5Z"
|
|
29983
|
+
}
|
|
29984
|
+
};
|
|
29985
|
+
|
|
29986
|
+
var GROK_CATEGORIES = [{
|
|
29987
|
+
key: 'emotion',
|
|
29988
|
+
label: '情绪'
|
|
29989
|
+
}, {
|
|
29990
|
+
key: 'agent',
|
|
29991
|
+
label: 'Agent 状态'
|
|
29992
|
+
}, {
|
|
29993
|
+
key: 'lifecycle',
|
|
29994
|
+
label: '生命周期'
|
|
29995
|
+
}];
|
|
29996
|
+
|
|
29997
|
+
/** All 13 public grok state names, in upstream group order. */
|
|
29998
|
+
var GROK_NAMES = GROK_GROUPS.flatMap(function (group) {
|
|
29999
|
+
return group.states;
|
|
30000
|
+
});
|
|
30001
|
+
var GROK_STATE_META = {
|
|
30002
|
+
// emotion
|
|
30003
|
+
idle: {
|
|
30004
|
+
category: 'emotion',
|
|
30005
|
+
description: '中性平和的眼神,自然眨眼,不抢戏的默认姿态',
|
|
30006
|
+
source: 'upstream'
|
|
30007
|
+
},
|
|
30008
|
+
surprised: {
|
|
30009
|
+
category: 'emotion',
|
|
30010
|
+
description: '眼睛瞪得又大又圆,猝不及防',
|
|
30011
|
+
source: 'upstream'
|
|
30012
|
+
},
|
|
30013
|
+
angry: {
|
|
30014
|
+
category: 'emotion',
|
|
30015
|
+
description: '眉头下压、眼神凌厉,一脸不爽',
|
|
30016
|
+
source: 'upstream'
|
|
30017
|
+
},
|
|
30018
|
+
happy: {
|
|
30019
|
+
category: 'emotion',
|
|
30020
|
+
description: '眼睛弯成月牙,眉开眼笑',
|
|
30021
|
+
source: 'upstream'
|
|
30022
|
+
},
|
|
30023
|
+
confused: {
|
|
30024
|
+
category: 'emotion',
|
|
30025
|
+
description: '一眯眼一瞪眼、眼神歪斜,满脸问号',
|
|
30026
|
+
source: 'upstream'
|
|
30027
|
+
},
|
|
30028
|
+
sad: {
|
|
30029
|
+
category: 'emotion',
|
|
30030
|
+
description: '双眼低垂闭合,垂头丧气',
|
|
30031
|
+
source: 'upstream'
|
|
30032
|
+
},
|
|
30033
|
+
// agent
|
|
30034
|
+
listening: {
|
|
30035
|
+
category: 'agent',
|
|
30036
|
+
description: '温和注视、微微凝神,认真听对方说话',
|
|
30037
|
+
source: 'upstream'
|
|
30038
|
+
},
|
|
30039
|
+
thinking: {
|
|
30040
|
+
category: 'agent',
|
|
30041
|
+
description: '眼神左顾右盼、时眯时睁,像在琢磨问题',
|
|
30042
|
+
source: 'upstream'
|
|
30043
|
+
},
|
|
30044
|
+
searching: {
|
|
30045
|
+
category: 'agent',
|
|
30046
|
+
description: '目光快速扫动、不时瞪圆,像在搜寻目标',
|
|
30047
|
+
source: 'upstream'
|
|
30048
|
+
},
|
|
30049
|
+
working: {
|
|
30050
|
+
category: 'agent',
|
|
30051
|
+
description: '时绷紧眼神、时睁大,全神贯注在做事',
|
|
30052
|
+
source: 'upstream'
|
|
30053
|
+
},
|
|
30054
|
+
loading: {
|
|
30055
|
+
category: 'agent',
|
|
30056
|
+
description: '平静眼神配缓慢起伏的节奏,等待加载完成',
|
|
30057
|
+
source: 'upstream'
|
|
30058
|
+
},
|
|
30059
|
+
receiving: {
|
|
30060
|
+
category: 'agent',
|
|
30061
|
+
description: '平和注视、安静等待,像在接收新内容',
|
|
30062
|
+
source: 'upstream'
|
|
30063
|
+
},
|
|
30064
|
+
// lifecycle
|
|
30065
|
+
sleeping: {
|
|
30066
|
+
category: 'lifecycle',
|
|
30067
|
+
description: '双眼紧闭、呼吸般一起一伏,睡得正香',
|
|
30068
|
+
source: 'upstream'
|
|
30069
|
+
}
|
|
30070
|
+
};
|
|
30071
|
+
var _iterator = _createForOfIteratorHelper(GROK_NAMES),
|
|
30072
|
+
_step;
|
|
30073
|
+
try {
|
|
30074
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
30075
|
+
var name = _step.value;
|
|
30076
|
+
GROK_STATE_META[name].label = GROK_STATE_LABELS[name] || name;
|
|
30077
|
+
}
|
|
30078
|
+
|
|
30079
|
+
/**
|
|
30080
|
+
* Resolve the display name list for a docs tab: category key | 'all'.
|
|
30081
|
+
* Unknown tabs fall back to the full list.
|
|
30082
|
+
*/
|
|
30083
|
+
} catch (err) {
|
|
30084
|
+
_iterator.e(err);
|
|
30085
|
+
} finally {
|
|
30086
|
+
_iterator.f();
|
|
30087
|
+
}
|
|
30088
|
+
function getGrokNamesFor(tab) {
|
|
30089
|
+
if (tab === 'all') return _toConsumableArray(GROK_NAMES);
|
|
30090
|
+
if (GROK_CATEGORIES.some(function (category) {
|
|
30091
|
+
return category.key === tab;
|
|
30092
|
+
})) {
|
|
30093
|
+
return GROK_NAMES.filter(function (name) {
|
|
30094
|
+
return GROK_STATE_META[name].category === tab;
|
|
30095
|
+
});
|
|
30096
|
+
}
|
|
30097
|
+
return _toConsumableArray(GROK_NAMES);
|
|
30098
|
+
}
|
|
30099
|
+
|
|
30100
|
+
/** Get a single state's metadata (label included). Throws on unknown names. */
|
|
30101
|
+
function getGrokStateMeta(name) {
|
|
30102
|
+
var normalized = String(name || '').trim().toLowerCase();
|
|
30103
|
+
var meta = GROK_STATE_META[normalized];
|
|
30104
|
+
if (!meta) throw new Error("Unknown grok state: ".concat(normalized));
|
|
30105
|
+
return _objectSpread2({}, meta);
|
|
30106
|
+
}
|
|
30107
|
+
|
|
29872
30108
|
var MIAO_META = [['angry', '生气', 'negative'], ['cry', '哭泣', 'negative'], ['sad', '难过', 'negative'], ['sigh', '叹气', 'negative'], ['investigate', '观察', 'thinking'], ['mute', '安静', 'thinking'], ['ponder', '沉思', 'thinking'], ['question', '疑问', 'thinking'], ['static', '平静', 'thinking'], ['asleep', '睡着', 'physical'], ['yawn', '哈欠', 'physical'], ['badminton', '羽毛球', 'positive'], ['confident', '自信', 'positive'], ['laugh', '大笑', 'positive'], ['leisure', '悠闲', 'positive'], ['music', '音乐', 'positive'], ['smile', '微笑', 'positive'], ['yummy', '好吃', 'positive'], ['mock', '调侃', 'social'], ['shy', '害羞', 'social'], ['snigger', '偷笑', 'social'], ['panic', '慌张', 'reaction'], ['shocked', '震惊', 'reaction']];
|
|
29873
30109
|
var EMO_CATEGORIES = {
|
|
29874
30110
|
negative: '负面情绪',
|
|
@@ -29876,9 +30112,20 @@ var EMO_CATEGORIES = {
|
|
|
29876
30112
|
physical: '身体与特殊状态',
|
|
29877
30113
|
positive: '正面情绪',
|
|
29878
30114
|
social: '社交情境',
|
|
29879
|
-
reaction: '惊讶与反应'
|
|
30115
|
+
reaction: '惊讶与反应',
|
|
30116
|
+
lifecycle: '生命周期',
|
|
30117
|
+
emotion: '情绪反应',
|
|
30118
|
+
agent: '代理形态',
|
|
30119
|
+
product: '产品流程'
|
|
29880
30120
|
};
|
|
29881
|
-
var
|
|
30121
|
+
var GROK_META = GROK_NAMES.map(function (name) {
|
|
30122
|
+
return {
|
|
30123
|
+
name: name,
|
|
30124
|
+
label: GROK_STATE_META[name].label,
|
|
30125
|
+
category: GROK_STATE_META[name].category
|
|
30126
|
+
};
|
|
30127
|
+
});
|
|
30128
|
+
var EMO_PRESETS = [].concat(_toConsumableArray(MIAO_META.map(function (_ref) {
|
|
29882
30129
|
var _ref2 = _slicedToArray(_ref, 3),
|
|
29883
30130
|
name = _ref2[0],
|
|
29884
30131
|
label = _ref2[1],
|
|
@@ -29890,10 +30137,24 @@ var EMO_PRESETS = MIAO_META.map(function (_ref) {
|
|
|
29890
30137
|
category: category,
|
|
29891
30138
|
width: MIAO_ANIMATIONS[name].w,
|
|
29892
30139
|
height: MIAO_ANIMATIONS[name].h,
|
|
30140
|
+
engine: 'lottie',
|
|
29893
30141
|
frames: MIAO_ANIMATIONS[name].op - MIAO_ANIMATIONS[name].ip,
|
|
29894
30142
|
fps: MIAO_ANIMATIONS[name].fr
|
|
29895
30143
|
};
|
|
29896
|
-
})
|
|
30144
|
+
})), _toConsumableArray(GROK_META.map(function (_ref3) {
|
|
30145
|
+
var name = _ref3.name,
|
|
30146
|
+
label = _ref3.label,
|
|
30147
|
+
category = _ref3.category;
|
|
30148
|
+
return {
|
|
30149
|
+
type: 'grok',
|
|
30150
|
+
name: name,
|
|
30151
|
+
label: label,
|
|
30152
|
+
category: category,
|
|
30153
|
+
width: 229,
|
|
30154
|
+
height: 229,
|
|
30155
|
+
engine: 'grok'
|
|
30156
|
+
};
|
|
30157
|
+
})));
|
|
29897
30158
|
var MIAO_PART_KEYS = Object.values(MIAO_ANIMATIONS).reduce(function (acc, data) {
|
|
29898
30159
|
var metadata = data.miao && data.miao.partColors;
|
|
29899
30160
|
if (metadata) for (var _i = 0, _Object$keys = Object.keys(metadata); _i < _Object$keys.length; _i++) {
|
|
@@ -29902,14 +30163,35 @@ var MIAO_PART_KEYS = Object.values(MIAO_ANIMATIONS).reduce(function (acc, data)
|
|
|
29902
30163
|
}
|
|
29903
30164
|
return acc;
|
|
29904
30165
|
}, new Set());
|
|
30166
|
+
var GROK_SHAPE_KEYS = ['blob', 'pebble', 'squircle', 'capsule', 'triangle', 'hex', 'cloud', 'drop'];
|
|
29905
30167
|
var EMO_TYPES = [{
|
|
29906
30168
|
type: 'miao',
|
|
29907
30169
|
label: '喵',
|
|
29908
|
-
|
|
30170
|
+
defaultName: 'smile',
|
|
30171
|
+
engine: 'lottie',
|
|
30172
|
+
names: EMO_PRESETS.filter(function (item) {
|
|
30173
|
+
return item.type === 'miao';
|
|
30174
|
+
}).map(function (item) {
|
|
29909
30175
|
return item.name;
|
|
29910
30176
|
}),
|
|
29911
30177
|
partColors: _toConsumableArray(MIAO_PART_KEYS).sort()
|
|
30178
|
+
}, {
|
|
30179
|
+
type: 'grok',
|
|
30180
|
+
label: 'Grok',
|
|
30181
|
+
defaultName: 'idle',
|
|
30182
|
+
engine: 'grok',
|
|
30183
|
+
names: GROK_NAMES,
|
|
30184
|
+
partColors: ['body', 'eyes'],
|
|
30185
|
+
shapes: GROK_SHAPE_KEYS
|
|
29912
30186
|
}];
|
|
30187
|
+
function getEmoType(type) {
|
|
30188
|
+
var normalizedType = String(type || '').trim().toLowerCase();
|
|
30189
|
+
var definition = EMO_TYPES.find(function (item) {
|
|
30190
|
+
return item.type === normalizedType;
|
|
30191
|
+
});
|
|
30192
|
+
if (!definition) throw new Error("Unknown emo type: ".concat(normalizedType));
|
|
30193
|
+
return definition;
|
|
30194
|
+
}
|
|
29913
30195
|
function getEmoPreset() {
|
|
29914
30196
|
var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'miao';
|
|
29915
30197
|
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'smile';
|
|
@@ -29929,8 +30211,6 @@ function getEmoAnimation() {
|
|
|
29929
30211
|
throw new Error("Unsupported emo type: ".concat(preset.type));
|
|
29930
30212
|
}
|
|
29931
30213
|
|
|
29932
|
-
var SPEED_MIN = 0.1;
|
|
29933
|
-
var SPEED_MAX = 4;
|
|
29934
30214
|
var defaultPlayerPromises = {};
|
|
29935
30215
|
function loadDefaultPlayer(renderer) {
|
|
29936
30216
|
var key = renderer === 'canvas' ? 'canvas' : 'svg';
|
|
@@ -29945,27 +30225,6 @@ function loadDefaultPlayer(renderer) {
|
|
|
29945
30225
|
function cloneAnimationData(data) {
|
|
29946
30226
|
return JSON.parse(JSON.stringify(data));
|
|
29947
30227
|
}
|
|
29948
|
-
function normalizeSpeed(value) {
|
|
29949
|
-
var number = Number(value);
|
|
29950
|
-
if (!Number.isFinite(number)) return 1;
|
|
29951
|
-
return Math.min(SPEED_MAX, Math.max(SPEED_MIN, number));
|
|
29952
|
-
}
|
|
29953
|
-
function normalizeOpacity(value) {
|
|
29954
|
-
var number = Number(value);
|
|
29955
|
-
if (!Number.isFinite(number)) return 1;
|
|
29956
|
-
return Math.min(1, Math.max(0, number));
|
|
29957
|
-
}
|
|
29958
|
-
function normalizeDirection(value) {
|
|
29959
|
-
return value === -1 || value === 'reverse' ? -1 : 1;
|
|
29960
|
-
}
|
|
29961
|
-
function normalizeRenderer(value) {
|
|
29962
|
-
return value === 'canvas' ? 'canvas' : 'svg';
|
|
29963
|
-
}
|
|
29964
|
-
function normalizeFit(value) {
|
|
29965
|
-
if (value === 'cover') return 'cover';
|
|
29966
|
-
if (value === 'fill' || value === 'stretch' || value === 'none') return 'fill';
|
|
29967
|
-
return 'contain';
|
|
29968
|
-
}
|
|
29969
30228
|
function normalizeSegment(value, preset) {
|
|
29970
30229
|
if (!Array.isArray(value) || value.length !== 2) return null;
|
|
29971
30230
|
var start = Number(value[0]);
|
|
@@ -29978,10 +30237,10 @@ function normalizeSegment(value, preset) {
|
|
|
29978
30237
|
});
|
|
29979
30238
|
}
|
|
29980
30239
|
|
|
29981
|
-
/**
|
|
29982
|
-
* Build a map of `paint.*` layer names → replacement rgb(0..1) tuples from the
|
|
29983
|
-
* partColors option and the animation's embedded `miao.partColors` metadata.
|
|
29984
|
-
* Keys not supported by the current animation are ignored.
|
|
30240
|
+
/**
|
|
30241
|
+
* Build a map of `paint.*` layer names → replacement rgb(0..1) tuples from the
|
|
30242
|
+
* partColors option and the animation's embedded `miao.partColors` metadata.
|
|
30243
|
+
* Keys not supported by the current animation are ignored.
|
|
29985
30244
|
*/
|
|
29986
30245
|
function buildPaintReplacements(animationData, partColors) {
|
|
29987
30246
|
var replacements = {};
|
|
@@ -30023,9 +30282,9 @@ function replacePaintProperty(property, rgb) {
|
|
|
30023
30282
|
}
|
|
30024
30283
|
}
|
|
30025
30284
|
|
|
30026
|
-
/**
|
|
30027
|
-
* Recursively replace every fill/stroke named `paint.<part>` (top-level layers
|
|
30028
|
-
* and precomp assets alike). Nodes without a matching paint name are untouched.
|
|
30285
|
+
/**
|
|
30286
|
+
* Recursively replace every fill/stroke named `paint.<part>` (top-level layers
|
|
30287
|
+
* and precomp assets alike). Nodes without a matching paint name are untouched.
|
|
30029
30288
|
*/
|
|
30030
30289
|
function applyPartColors(node, replacements) {
|
|
30031
30290
|
if (!node || _typeof(node) !== 'object') return;
|
|
@@ -30041,61 +30300,18 @@ function applyPartColors(node, replacements) {
|
|
|
30041
30300
|
}
|
|
30042
30301
|
}
|
|
30043
30302
|
|
|
30044
|
-
/**
|
|
30045
|
-
|
|
30046
|
-
|
|
30047
|
-
|
|
30048
|
-
|
|
30049
|
-
|
|
30050
|
-
|
|
30051
|
-
var
|
|
30052
|
-
|
|
30053
|
-
|
|
30054
|
-
var height = options.height === undefined ? 160 : options.height;
|
|
30055
|
-
var speed = normalizeSpeed(options.speed);
|
|
30056
|
-
var loop = options.loop !== false;
|
|
30057
|
-
var autoplay = options.autoplay !== false;
|
|
30058
|
-
var direction = normalizeDirection(options.direction);
|
|
30059
|
-
var opacity = normalizeOpacity(options.opacity);
|
|
30060
|
-
var fit = normalizeFit(options.fit);
|
|
30061
|
-
var renderer = normalizeRenderer(options.renderer);
|
|
30062
|
-
var paused = options.paused === true;
|
|
30063
|
-
var reducedMotion = false;
|
|
30064
|
-
var segment = normalizeSegment(options.segment, preset);
|
|
30065
|
-
var partColors = options.partColors && _typeof(options.partColors) === 'object' ? _objectSpread2({}, options.partColors) : {};
|
|
30066
|
-
var background = options.background == null ? 'transparent' : String(options.background);
|
|
30067
|
-
var label = typeof options.label === 'string' && options.label ? options.label : null;
|
|
30068
|
-
var disposed = false;
|
|
30303
|
+
/**
|
|
30304
|
+
* @param {object} env
|
|
30305
|
+
* @param {HTMLElement} env.stage lottie container
|
|
30306
|
+
* @param {object} env.s live facade state (preset/speed/loop/autoplay/...)
|
|
30307
|
+
* @param {object} env.emitter event bus
|
|
30308
|
+
*/
|
|
30309
|
+
function createMiaoRenderer(_ref) {
|
|
30310
|
+
var stage = _ref.stage,
|
|
30311
|
+
s = _ref.s,
|
|
30312
|
+
emitter = _ref.emitter;
|
|
30069
30313
|
var animation = null;
|
|
30070
|
-
var
|
|
30071
|
-
var emitter = createEmitter();
|
|
30072
|
-
var motionPreference = createReducedMotionPreference(options.respectReducedMotion !== false, function (matches) {
|
|
30073
|
-
reducedMotion = matches;
|
|
30074
|
-
if (disposed) return;
|
|
30075
|
-
updateRoot();
|
|
30076
|
-
if (!animation) return;
|
|
30077
|
-
if (paused || reducedMotion || !autoplay) animation.pause();else animation.play();
|
|
30078
|
-
});
|
|
30079
|
-
reducedMotion = motionPreference.matches();
|
|
30080
|
-
var root = document.createElement('div');
|
|
30081
|
-
root.className = 'dlc-emo-root';
|
|
30082
|
-
root.setAttribute('role', 'img');
|
|
30083
|
-
var stage = document.createElement('div');
|
|
30084
|
-
stage.className = 'dlc-emo-stage';
|
|
30085
|
-
root.appendChild(stage);
|
|
30086
|
-
container.appendChild(root);
|
|
30087
|
-
var updateRoot = function updateRoot() {
|
|
30088
|
-
root.style.width = parseSize(width);
|
|
30089
|
-
root.style.height = parseSize(height);
|
|
30090
|
-
root.style.setProperty('--dlc-emo-opacity', String(opacity));
|
|
30091
|
-
root.style.setProperty('--dlc-emo-background', background);
|
|
30092
|
-
root.dataset.type = preset.type;
|
|
30093
|
-
root.dataset.name = preset.name;
|
|
30094
|
-
root.dataset.fit = fit;
|
|
30095
|
-
root.dataset.renderer = renderer;
|
|
30096
|
-
root.dataset.paused = String(paused || reducedMotion);
|
|
30097
|
-
root.setAttribute('aria-label', label || "".concat(preset.label, "\u8868\u60C5\u52A8\u753B"));
|
|
30098
|
-
};
|
|
30314
|
+
var disposed = false;
|
|
30099
30315
|
var removeAnimationEvents = function removeAnimationEvents() {
|
|
30100
30316
|
if (!animation || !animation.__dlcHandlers) return;
|
|
30101
30317
|
var _iterator2 = _createForOfIteratorHelper(animation.__dlcHandlers),
|
|
@@ -30114,15 +30330,14 @@ function createEmo(container) {
|
|
|
30114
30330
|
}
|
|
30115
30331
|
animation.__dlcHandlers = null;
|
|
30116
30332
|
};
|
|
30117
|
-
var
|
|
30333
|
+
var destroy = function destroy() {
|
|
30118
30334
|
if (!animation) return;
|
|
30119
30335
|
removeAnimationEvents();
|
|
30120
30336
|
animation.destroy();
|
|
30121
30337
|
animation = null;
|
|
30122
|
-
stage.innerHTML = '';
|
|
30123
30338
|
};
|
|
30124
|
-
var attachAnimation = function attachAnimation(player, animationData
|
|
30125
|
-
if (disposed
|
|
30339
|
+
var attachAnimation = function attachAnimation(player, animationData) {
|
|
30340
|
+
if (disposed) return;
|
|
30126
30341
|
if (!player || typeof player.loadAnimation !== 'function') {
|
|
30127
30342
|
emitter.emit('error', {
|
|
30128
30343
|
message: 'createEmo: lottie-web player is unavailable'
|
|
@@ -30132,49 +30347,49 @@ function createEmo(container) {
|
|
|
30132
30347
|
try {
|
|
30133
30348
|
animation = player.loadAnimation({
|
|
30134
30349
|
container: stage,
|
|
30135
|
-
renderer: renderer,
|
|
30136
|
-
loop: loop,
|
|
30350
|
+
renderer: s.renderer,
|
|
30351
|
+
loop: s.loop,
|
|
30137
30352
|
autoplay: false,
|
|
30138
|
-
name:
|
|
30353
|
+
name: s.instanceName || "dlc-emo-".concat(s.preset.type, "-").concat(s.preset.name),
|
|
30139
30354
|
animationData: animationData,
|
|
30140
30355
|
rendererSettings: {
|
|
30141
|
-
preserveAspectRatio: fit === 'cover' ? 'xMidYMid slice' : fit === 'fill' ? 'none' : 'xMidYMid meet',
|
|
30356
|
+
preserveAspectRatio: s.fit === 'cover' ? 'xMidYMid slice' : s.fit === 'fill' ? 'none' : 'xMidYMid meet',
|
|
30142
30357
|
progressiveLoad: false,
|
|
30143
30358
|
runExpressions: false,
|
|
30144
|
-
title: label || "".concat(preset.label, "\u8868\u60C5\u52A8\u753B"),
|
|
30145
|
-
description: "".concat(preset.type, "/").concat(preset.name)
|
|
30359
|
+
title: s.label || "".concat(s.preset.label, "\u8868\u60C5\u52A8\u753B"),
|
|
30360
|
+
description: "".concat(s.preset.type, "/").concat(s.preset.name)
|
|
30146
30361
|
}
|
|
30147
30362
|
});
|
|
30148
30363
|
var handlers = [['DOMLoaded', function () {
|
|
30149
|
-
if (disposed
|
|
30364
|
+
if (disposed) return;
|
|
30150
30365
|
applyPlayback();
|
|
30151
30366
|
emitter.emit('ready', {
|
|
30152
|
-
preset: _objectSpread2({}, preset),
|
|
30367
|
+
preset: _objectSpread2({}, s.preset),
|
|
30153
30368
|
duration: animation.getDuration(false),
|
|
30154
|
-
frames: preset.frames
|
|
30369
|
+
frames: s.preset.frames
|
|
30155
30370
|
});
|
|
30156
30371
|
}], ['complete', function () {
|
|
30157
30372
|
return emitter.emit('complete', {
|
|
30158
|
-
preset: _objectSpread2({}, preset)
|
|
30373
|
+
preset: _objectSpread2({}, s.preset)
|
|
30159
30374
|
});
|
|
30160
30375
|
}], ['loopComplete', function () {
|
|
30161
30376
|
return emitter.emit('loopComplete', {
|
|
30162
|
-
preset: _objectSpread2({}, preset)
|
|
30377
|
+
preset: _objectSpread2({}, s.preset)
|
|
30163
30378
|
});
|
|
30164
30379
|
}], ['segmentStart', function () {
|
|
30165
30380
|
return emitter.emit('segmentStart', {
|
|
30166
|
-
segment: segment ? _toConsumableArray(segment) : null
|
|
30381
|
+
segment: s.segment ? _toConsumableArray(s.segment) : null
|
|
30167
30382
|
});
|
|
30168
30383
|
}], ['data_failed', function () {
|
|
30169
30384
|
return emitter.emit('error', {
|
|
30170
|
-
message: "Failed to load emo: ".concat(preset.type, "/").concat(preset.name)
|
|
30385
|
+
message: "Failed to load emo: ".concat(s.preset.type, "/").concat(s.preset.name)
|
|
30171
30386
|
});
|
|
30172
30387
|
}]];
|
|
30173
30388
|
animation.__dlcHandlers = handlers;
|
|
30174
|
-
handlers.forEach(function (
|
|
30175
|
-
var
|
|
30176
|
-
event =
|
|
30177
|
-
handler =
|
|
30389
|
+
handlers.forEach(function (_ref2) {
|
|
30390
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
30391
|
+
event = _ref3[0],
|
|
30392
|
+
handler = _ref3[1];
|
|
30178
30393
|
return animation.addEventListener(event, handler);
|
|
30179
30394
|
});
|
|
30180
30395
|
} catch (error) {
|
|
@@ -30185,191 +30400,758 @@ function createEmo(container) {
|
|
|
30185
30400
|
};
|
|
30186
30401
|
var applyPlayback = function applyPlayback() {
|
|
30187
30402
|
if (!animation) return;
|
|
30188
|
-
animation.setSpeed(speed);
|
|
30189
|
-
animation.setDirection(direction);
|
|
30190
|
-
if (segment) {
|
|
30191
|
-
animation.playSegments(segment, true);
|
|
30192
|
-
if (direction < 0) animation.goToAndStop(segment[1], true);else animation.goToAndStop(segment[0], true);
|
|
30193
|
-
} else if (direction < 0) {
|
|
30194
|
-
animation.goToAndStop(Math.max(0, preset.frames - 1), true);
|
|
30403
|
+
animation.setSpeed(s.speed);
|
|
30404
|
+
animation.setDirection(s.direction);
|
|
30405
|
+
if (s.segment) {
|
|
30406
|
+
animation.playSegments(s.segment, true);
|
|
30407
|
+
if (s.direction < 0) animation.goToAndStop(s.segment[1], true);else animation.goToAndStop(s.segment[0], true);
|
|
30408
|
+
} else if (s.direction < 0) {
|
|
30409
|
+
animation.goToAndStop(Math.max(0, s.preset.frames - 1), true);
|
|
30195
30410
|
}
|
|
30196
|
-
if (paused || reducedMotion || !autoplay) animation.pause();else animation.play();
|
|
30411
|
+
if (s.paused || s.reducedMotion || !s.autoplay) animation.pause();else animation.play();
|
|
30197
30412
|
};
|
|
30198
|
-
|
|
30199
|
-
|
|
30200
|
-
|
|
30201
|
-
|
|
30202
|
-
|
|
30203
|
-
|
|
30204
|
-
|
|
30205
|
-
|
|
30206
|
-
|
|
30207
|
-
|
|
30208
|
-
|
|
30209
|
-
|
|
30210
|
-
|
|
30211
|
-
message: String(error && error.message ? error.message : error)
|
|
30413
|
+
return {
|
|
30414
|
+
get animation() {
|
|
30415
|
+
return animation;
|
|
30416
|
+
},
|
|
30417
|
+
mount: function mount() {
|
|
30418
|
+
var animationData = cloneAnimationData(getEmoAnimation(s.preset.type, s.preset.name));
|
|
30419
|
+
applyPartColors(animationData, buildPaintReplacements(animationData, s.partColors));
|
|
30420
|
+
if (s.player) attachAnimation(s.player, animationData);else loadDefaultPlayer(s.renderer).then(function (player) {
|
|
30421
|
+
return attachAnimation(player, animationData);
|
|
30422
|
+
}).catch(function (error) {
|
|
30423
|
+
return emitter.emit('error', {
|
|
30424
|
+
message: String(error && error.message ? error.message : error)
|
|
30425
|
+
});
|
|
30212
30426
|
});
|
|
30427
|
+
},
|
|
30428
|
+
play: function play() {
|
|
30429
|
+
if (animation && !s.reducedMotion) animation.play();
|
|
30430
|
+
},
|
|
30431
|
+
pause: function pause() {
|
|
30432
|
+
if (animation) animation.pause();
|
|
30433
|
+
},
|
|
30434
|
+
stop: function stop() {
|
|
30435
|
+
if (animation) animation.stop();
|
|
30436
|
+
},
|
|
30437
|
+
setPaused: function setPaused(value) {
|
|
30438
|
+
return value ? this.pause() : this.play();
|
|
30439
|
+
},
|
|
30440
|
+
setSpeed: function setSpeed(value) {
|
|
30441
|
+
if (animation) animation.setSpeed(value);
|
|
30442
|
+
},
|
|
30443
|
+
setDirection: function setDirection(value) {
|
|
30444
|
+
if (!animation) return;
|
|
30445
|
+
animation.setDirection(value);
|
|
30446
|
+
if (value < 0 && animation.currentFrame <= 0) {
|
|
30447
|
+
animation.goToAndStop(s.segment ? s.segment[1] : s.preset.frames - 1, true);
|
|
30448
|
+
}
|
|
30449
|
+
},
|
|
30450
|
+
setSegment: function setSegment(value) {
|
|
30451
|
+
applyPlayback();
|
|
30452
|
+
},
|
|
30453
|
+
setShape: function setShape() {},
|
|
30454
|
+
setInteractive: function setInteractive() {},
|
|
30455
|
+
dispose: function dispose() {
|
|
30456
|
+
if (disposed) return;
|
|
30457
|
+
disposed = true;
|
|
30458
|
+
destroy();
|
|
30459
|
+
stage.innerHTML = '';
|
|
30460
|
+
}
|
|
30461
|
+
};
|
|
30462
|
+
}
|
|
30463
|
+
|
|
30464
|
+
var SVG_NS = 'http://www.w3.org/2000/svg';
|
|
30465
|
+
var EYE_CX = 114.2705;
|
|
30466
|
+
var EYE_R = 105;
|
|
30467
|
+
var BLINK_MS = 320;
|
|
30468
|
+
var MOTION_MS = 1100;
|
|
30469
|
+
var SPRING_STIFFNESS = 49;
|
|
30470
|
+
var DEFAULT_BODY = '#2f86ed';
|
|
30471
|
+
var DEFAULT_EYES = '#fffdf7';
|
|
30472
|
+
var clipCounter = 0;
|
|
30473
|
+
var MOTION_GROUPS = {
|
|
30474
|
+
bounce: ['happy'],
|
|
30475
|
+
tilt: ['listening', 'thinking', 'confused'],
|
|
30476
|
+
scan: ['searching', 'working'],
|
|
30477
|
+
turn: ['receiving'],
|
|
30478
|
+
pulse: ['sleeping', 'loading']
|
|
30479
|
+
};
|
|
30480
|
+
var MOTION_DURATIONS = {
|
|
30481
|
+
bounce: 0.85,
|
|
30482
|
+
tilt: 0.8,
|
|
30483
|
+
scan: 0.8,
|
|
30484
|
+
turn: 0.9,
|
|
30485
|
+
pulse: 0.9,
|
|
30486
|
+
glitch: 0.55
|
|
30487
|
+
};
|
|
30488
|
+
var MOTION_CLASSES = [].concat(_toConsumableArray(Object.keys(MOTION_GROUPS)), ['glitch']).map(function (name) {
|
|
30489
|
+
return "act-".concat(name);
|
|
30490
|
+
});
|
|
30491
|
+
function clamp(value, min, max) {
|
|
30492
|
+
return Math.max(min, Math.min(max, value));
|
|
30493
|
+
}
|
|
30494
|
+
function pathFromRing(ring) {
|
|
30495
|
+
return 'M' + ring.map(function (point) {
|
|
30496
|
+
return "".concat(point[0].toFixed(2), " ").concat(point[1].toFixed(2));
|
|
30497
|
+
}).join('L') + 'Z';
|
|
30498
|
+
}
|
|
30499
|
+
function ringCentroid(ring) {
|
|
30500
|
+
return ring.reduce(function (acc, point) {
|
|
30501
|
+
return [acc[0] + point[0] / ring.length, acc[1] + point[1] / ring.length];
|
|
30502
|
+
}, [0, 0]);
|
|
30503
|
+
}
|
|
30504
|
+
function randomBetween(range) {
|
|
30505
|
+
return range[0] + Math.random() * (range[1] - range[0]);
|
|
30506
|
+
}
|
|
30507
|
+
|
|
30508
|
+
/**
|
|
30509
|
+
* @param {object} env
|
|
30510
|
+
* @param {HTMLElement} env.stage SVG container
|
|
30511
|
+
* @param {object} env.s live facade state (preset/name/shape/interactive/speed/...)
|
|
30512
|
+
* @param {object} env.emitter event bus
|
|
30513
|
+
*/
|
|
30514
|
+
function createGrokRenderer(_ref) {
|
|
30515
|
+
var stage = _ref.stage,
|
|
30516
|
+
s = _ref.s,
|
|
30517
|
+
emitter = _ref.emitter;
|
|
30518
|
+
var disposed = false;
|
|
30519
|
+
var unsubscribe = null;
|
|
30520
|
+
var visibility = null;
|
|
30521
|
+
var _detachPointer = null;
|
|
30522
|
+
var svg = document.createElementNS(SVG_NS, 'svg');
|
|
30523
|
+
svg.setAttribute('class', 'dlc-grok');
|
|
30524
|
+
svg.setAttribute('viewBox', '-28 -28 285 285');
|
|
30525
|
+
svg.setAttribute('role', 'img');
|
|
30526
|
+
svg.setAttribute('preserveAspectRatio', s.fit === 'cover' ? 'xMidYMid slice' : s.fit === 'fill' ? 'none' : 'xMidYMid meet');
|
|
30527
|
+
var body = document.createElementNS(SVG_NS, 'path');
|
|
30528
|
+
body.setAttribute('class', 'dlc-grok__body');
|
|
30529
|
+
var defs = document.createElementNS(SVG_NS, 'defs');
|
|
30530
|
+
var clipPath = document.createElementNS(SVG_NS, 'clipPath');
|
|
30531
|
+
var clipId = "dlc-grok-clip-".concat(clipCounter++);
|
|
30532
|
+
clipPath.setAttribute('id', clipId);
|
|
30533
|
+
var clipShape = document.createElementNS(SVG_NS, 'path');
|
|
30534
|
+
clipPath.appendChild(clipShape);
|
|
30535
|
+
defs.appendChild(clipPath);
|
|
30536
|
+
var eyesGroup = document.createElementNS(SVG_NS, 'g');
|
|
30537
|
+
eyesGroup.setAttribute('class', 'dlc-grok__eyes');
|
|
30538
|
+
eyesGroup.setAttribute('clip-path', "url(#".concat(clipId, ")"));
|
|
30539
|
+
var eyes = [0, 1].map(function () {
|
|
30540
|
+
var path = document.createElementNS(SVG_NS, 'path');
|
|
30541
|
+
path.setAttribute('class', 'dlc-grok__eye');
|
|
30542
|
+
eyesGroup.appendChild(path);
|
|
30543
|
+
return path;
|
|
30544
|
+
});
|
|
30545
|
+
svg.appendChild(defs);
|
|
30546
|
+
svg.appendChild(body);
|
|
30547
|
+
svg.appendChild(eyesGroup);
|
|
30548
|
+
stage.appendChild(svg);
|
|
30549
|
+
var current = GROK_EXPRESSIONS[0].map(function (ring) {
|
|
30550
|
+
return ring.map(function (point) {
|
|
30551
|
+
return _toConsumableArray(point);
|
|
30552
|
+
});
|
|
30553
|
+
});
|
|
30554
|
+
var target = GROK_EXPRESSIONS[0];
|
|
30555
|
+
var expression = 0;
|
|
30556
|
+
var morph = 1;
|
|
30557
|
+
var velocity = 0;
|
|
30558
|
+
var blinkStart = 0;
|
|
30559
|
+
var blinkTimer = 0;
|
|
30560
|
+
var exprTimer = 0;
|
|
30561
|
+
var gazeX = 0;
|
|
30562
|
+
var gazeY = 0;
|
|
30563
|
+
var motionUntil = 0;
|
|
30564
|
+
var motionClass = null;
|
|
30565
|
+
var applyBodyShape = function applyBodyShape() {
|
|
30566
|
+
var shape = GROK_SHAPES[s.shape] || GROK_SHAPES.blob;
|
|
30567
|
+
body.setAttribute('d', shape.d);
|
|
30568
|
+
clipShape.setAttribute('d', shape.d);
|
|
30569
|
+
};
|
|
30570
|
+
var applyColors = function applyColors() {
|
|
30571
|
+
var resolve = function resolve(value, fallback) {
|
|
30572
|
+
var hex = normalizeColor(value);
|
|
30573
|
+
return hex || fallback;
|
|
30574
|
+
};
|
|
30575
|
+
// 用 inline style 而不是 presentation attribute:emo.css 里
|
|
30576
|
+
// .dlc-grok__body / .dlc-grok__eye 的 fill 规则优先级更高,attribute 会被覆盖。
|
|
30577
|
+
body.style.fill = resolve(s.partColors.body, DEFAULT_BODY);
|
|
30578
|
+
eyes.forEach(function (path) {
|
|
30579
|
+
path.style.fill = resolve(s.partColors.eyes, DEFAULT_EYES);
|
|
30580
|
+
});
|
|
30581
|
+
};
|
|
30582
|
+
var rings = function rings() {
|
|
30583
|
+
return current.map(function (ring, eye) {
|
|
30584
|
+
return ring.map(function (point, i) {
|
|
30585
|
+
return [point[0] + (target[eye][i][0] - point[0]) * clamp(morph, 0, 1), point[1] + (target[eye][i][1] - point[1]) * clamp(morph, 0, 1)];
|
|
30586
|
+
});
|
|
30587
|
+
});
|
|
30588
|
+
};
|
|
30589
|
+
var chooseExpression = function chooseExpression(index) {
|
|
30590
|
+
current = rings();
|
|
30591
|
+
target = GROK_EXPRESSIONS[index];
|
|
30592
|
+
expression = index;
|
|
30593
|
+
morph = 0;
|
|
30594
|
+
velocity = 0;
|
|
30595
|
+
};
|
|
30596
|
+
var setExpression = function setExpression(index) {
|
|
30597
|
+
current = GROK_EXPRESSIONS[index].map(function (ring) {
|
|
30598
|
+
return ring.map(function (point) {
|
|
30599
|
+
return _toConsumableArray(point);
|
|
30600
|
+
});
|
|
30601
|
+
});
|
|
30602
|
+
target = GROK_EXPRESSIONS[index];
|
|
30603
|
+
expression = index;
|
|
30604
|
+
morph = 1;
|
|
30605
|
+
velocity = 0;
|
|
30606
|
+
};
|
|
30607
|
+
var blinkScale = function blinkScale(now) {
|
|
30608
|
+
if (!blinkStart) return 1;
|
|
30609
|
+
var t = (now - blinkStart) / (BLINK_MS / s.speed);
|
|
30610
|
+
if (t >= 1) {
|
|
30611
|
+
blinkStart = 0;
|
|
30612
|
+
return 1;
|
|
30613
|
+
}
|
|
30614
|
+
return Math.max(t < 0.42 ? 1 - t / 0.42 : (t - 0.42) / 0.58, 0.04);
|
|
30615
|
+
};
|
|
30616
|
+
var renderEyes = function renderEyes(now) {
|
|
30617
|
+
var shown = rings();
|
|
30618
|
+
var blink = blinkScale(now);
|
|
30619
|
+
shown.forEach(function (ring, i) {
|
|
30620
|
+
var center = ringCentroid(ring);
|
|
30621
|
+
var base = Math.asin(clamp((center[0] - EYE_CX) / EYE_R, -1, 1));
|
|
30622
|
+
var depth = Math.cos(base);
|
|
30623
|
+
var perspective = Math.max(depth, 0.02) / Math.max(Math.cos(base), 0.02);
|
|
30624
|
+
var x = EYE_CX + EYE_R * Math.sin(base) + gazeX;
|
|
30625
|
+
var y = center[1] + gazeY;
|
|
30626
|
+
eyes[i].setAttribute('d', pathFromRing(ring));
|
|
30627
|
+
eyes[i].setAttribute('transform', "translate(".concat(x, " ").concat(y, ") scale(").concat(clamp(perspective, 0.02, 2.4), " ").concat(blink, ") translate(").concat(-center[0], " ").concat(-center[1], ")"));
|
|
30628
|
+
eyes[i].style.opacity = depth > 0.02 ? '1' : '0';
|
|
30629
|
+
});
|
|
30630
|
+
};
|
|
30631
|
+
var motionClassFor = function motionClassFor(name) {
|
|
30632
|
+
for (var _i = 0, _Object$entries = Object.entries(MOTION_GROUPS); _i < _Object$entries.length; _i++) {
|
|
30633
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
30634
|
+
className = _Object$entries$_i[0],
|
|
30635
|
+
states = _Object$entries$_i[1];
|
|
30636
|
+
if (states.includes(name)) return className;
|
|
30637
|
+
}
|
|
30638
|
+
return 'glitch';
|
|
30639
|
+
};
|
|
30640
|
+
var applyBodyMotion = function applyBodyMotion() {
|
|
30641
|
+
var _svg$classList;
|
|
30642
|
+
var className = motionClassFor(s.preset.name);
|
|
30643
|
+
(_svg$classList = svg.classList).remove.apply(_svg$classList, _toConsumableArray(MOTION_CLASSES));
|
|
30644
|
+
svg.classList.add("act-".concat(className));
|
|
30645
|
+
svg.style.animationDuration = "".concat(MOTION_DURATIONS[className] / s.speed, "s");
|
|
30646
|
+
svg.style.animationPlayState = s.paused || s.reducedMotion || !s.autoplay ? 'paused' : 'running';
|
|
30647
|
+
motionClass = className;
|
|
30648
|
+
motionUntil = 0;
|
|
30649
|
+
};
|
|
30650
|
+
var scheduleExpression = function scheduleExpression() {
|
|
30651
|
+
var cadence = GROK_EXPR_CADENCE[s.preset.name];
|
|
30652
|
+
exprTimer = cadence && s.loop ? randomBetween(cadence) : 0;
|
|
30653
|
+
};
|
|
30654
|
+
var scheduleBlink = function scheduleBlink() {
|
|
30655
|
+
var cadence = GROK_BLINK[s.preset.name];
|
|
30656
|
+
blinkTimer = cadence ? randomBetween(cadence) : 0;
|
|
30657
|
+
};
|
|
30658
|
+
var onFrame = function onFrame(delta, now) {
|
|
30659
|
+
if (disposed || s.paused || s.reducedMotion || !s.autoplay) return;
|
|
30660
|
+
if (exprTimer > 0) {
|
|
30661
|
+
exprTimer -= delta * 1000 * s.speed;
|
|
30662
|
+
if (exprTimer <= 0) {
|
|
30663
|
+
var pool = GROK_POOLS[s.preset.name] || [expression];
|
|
30664
|
+
chooseExpression(pool[Math.floor(Math.random() * pool.length)]);
|
|
30665
|
+
scheduleExpression();
|
|
30666
|
+
}
|
|
30667
|
+
}
|
|
30668
|
+
if (blinkTimer > 0) {
|
|
30669
|
+
blinkTimer -= delta * 1000 * s.speed;
|
|
30670
|
+
if (blinkTimer <= 0) {
|
|
30671
|
+
blinkStart = now;
|
|
30672
|
+
scheduleBlink();
|
|
30673
|
+
}
|
|
30674
|
+
}
|
|
30675
|
+
if (motionClass) {
|
|
30676
|
+
if (motionUntil === 0) motionUntil = now + MOTION_MS / s.speed;else if (now >= motionUntil) {
|
|
30677
|
+
svg.classList.remove("act-".concat(motionClass));
|
|
30678
|
+
motionClass = null;
|
|
30679
|
+
}
|
|
30680
|
+
}
|
|
30681
|
+
var step = Math.min(delta * s.speed, 0.1);
|
|
30682
|
+
velocity += (-14 * velocity - SPRING_STIFFNESS * (morph - 1)) * step;
|
|
30683
|
+
morph += velocity * step;
|
|
30684
|
+
if (!Number.isFinite(morph)) {
|
|
30685
|
+
morph = 1;
|
|
30686
|
+
velocity = 0;
|
|
30687
|
+
}
|
|
30688
|
+
renderEyes(now);
|
|
30689
|
+
};
|
|
30690
|
+
var renderInitial = function renderInitial() {
|
|
30691
|
+
var pool = GROK_POOLS[s.preset.name] || [0];
|
|
30692
|
+
setExpression(pool[0]);
|
|
30693
|
+
renderEyes(0);
|
|
30694
|
+
};
|
|
30695
|
+
var onPointerMove = function onPointerMove(event) {
|
|
30696
|
+
var rect = stage.getBoundingClientRect();
|
|
30697
|
+
gazeX = clamp((event.clientX - rect.left) / rect.width * 2 - 1, -0.6, 0.6) * 22;
|
|
30698
|
+
gazeY = clamp((event.clientY - rect.top) / rect.height * 2 - 1, -0.6, 0.6) * 14;
|
|
30699
|
+
};
|
|
30700
|
+
var onPointerLeave = function onPointerLeave() {
|
|
30701
|
+
gazeX = 0;
|
|
30702
|
+
gazeY = 0;
|
|
30703
|
+
};
|
|
30704
|
+
var onPointerDown = function onPointerDown() {
|
|
30705
|
+
blinkStart = performance.now();
|
|
30706
|
+
};
|
|
30707
|
+
var attachPointer = function attachPointer() {
|
|
30708
|
+
if (!s.interactive || disposed) return;
|
|
30709
|
+
stage.addEventListener('pointermove', onPointerMove);
|
|
30710
|
+
stage.addEventListener('pointerleave', onPointerLeave);
|
|
30711
|
+
stage.addEventListener('pointerdown', onPointerDown);
|
|
30712
|
+
_detachPointer = function detachPointer() {
|
|
30713
|
+
stage.removeEventListener('pointermove', onPointerMove);
|
|
30714
|
+
stage.removeEventListener('pointerleave', onPointerLeave);
|
|
30715
|
+
stage.removeEventListener('pointerdown', onPointerDown);
|
|
30716
|
+
_detachPointer = null;
|
|
30717
|
+
};
|
|
30718
|
+
};
|
|
30719
|
+
var setPointerAttached = function setPointerAttached(enabled) {
|
|
30720
|
+
if (enabled && !_detachPointer) attachPointer();else if (!enabled && _detachPointer) _detachPointer();
|
|
30721
|
+
if (!enabled) {
|
|
30722
|
+
gazeX = 0;
|
|
30723
|
+
gazeY = 0;
|
|
30724
|
+
}
|
|
30725
|
+
};
|
|
30726
|
+
return {
|
|
30727
|
+
get animation() {
|
|
30728
|
+
return svg;
|
|
30729
|
+
},
|
|
30730
|
+
mount: function mount() {
|
|
30731
|
+
applyBodyShape();
|
|
30732
|
+
applyColors();
|
|
30733
|
+
renderInitial();
|
|
30734
|
+
applyBodyMotion();
|
|
30735
|
+
scheduleExpression();
|
|
30736
|
+
scheduleBlink();
|
|
30737
|
+
visibility = createVisibilityGuard(stage, wakeScheduler);
|
|
30738
|
+
unsubscribe = subscribeScheduler(onFrame, function () {
|
|
30739
|
+
return s.paused || s.reducedMotion || !s.autoplay || !visibility.isVisible();
|
|
30740
|
+
});
|
|
30741
|
+
setPointerAttached(s.interactive);
|
|
30742
|
+
emitter.emit('ready', {
|
|
30743
|
+
preset: _objectSpread2({}, s.preset),
|
|
30744
|
+
duration: null
|
|
30745
|
+
});
|
|
30746
|
+
},
|
|
30747
|
+
play: function play() {
|
|
30748
|
+
svg.style.animationPlayState = s.reducedMotion ? 'paused' : 'running';
|
|
30749
|
+
wakeScheduler();
|
|
30750
|
+
},
|
|
30751
|
+
pause: function pause() {
|
|
30752
|
+
svg.style.animationPlayState = 'paused';
|
|
30753
|
+
},
|
|
30754
|
+
stop: function stop() {
|
|
30755
|
+
renderInitial();
|
|
30756
|
+
this.pause();
|
|
30757
|
+
},
|
|
30758
|
+
setPaused: function setPaused(value) {
|
|
30759
|
+
return value ? this.pause() : this.play();
|
|
30760
|
+
},
|
|
30761
|
+
setSpeed: function setSpeed() {
|
|
30762
|
+
var className = motionClassFor(s.preset.name);
|
|
30763
|
+
svg.style.animationDuration = "".concat(MOTION_DURATIONS[className] / s.speed, "s");
|
|
30764
|
+
motionUntil = 0;
|
|
30765
|
+
},
|
|
30766
|
+
setDirection: function setDirection() {},
|
|
30767
|
+
setSegment: function setSegment() {},
|
|
30768
|
+
setShape: function setShape() {
|
|
30769
|
+
applyBodyShape();
|
|
30770
|
+
},
|
|
30771
|
+
setInteractive: function setInteractive(value) {
|
|
30772
|
+
setPointerAttached(value === true);
|
|
30773
|
+
},
|
|
30774
|
+
dispose: function dispose() {
|
|
30775
|
+
var _svg$classList2;
|
|
30776
|
+
if (disposed) return;
|
|
30777
|
+
disposed = true;
|
|
30778
|
+
if (unsubscribe) {
|
|
30779
|
+
unsubscribe();
|
|
30780
|
+
unsubscribe = null;
|
|
30781
|
+
}
|
|
30782
|
+
if (visibility) {
|
|
30783
|
+
visibility.dispose();
|
|
30784
|
+
visibility = null;
|
|
30785
|
+
}
|
|
30786
|
+
if (_detachPointer) _detachPointer();
|
|
30787
|
+
(_svg$classList2 = svg.classList).remove.apply(_svg$classList2, _toConsumableArray(MOTION_CLASSES));
|
|
30788
|
+
svg.remove();
|
|
30789
|
+
}
|
|
30790
|
+
};
|
|
30791
|
+
}
|
|
30792
|
+
|
|
30793
|
+
var SPEED_MIN = 0.1;
|
|
30794
|
+
var SPEED_MAX = 4;
|
|
30795
|
+
var RENDERER_FACTORIES = {
|
|
30796
|
+
miao: createMiaoRenderer,
|
|
30797
|
+
grok: createGrokRenderer
|
|
30798
|
+
};
|
|
30799
|
+
function normalizeSpeed(value) {
|
|
30800
|
+
var number = Number(value);
|
|
30801
|
+
if (!Number.isFinite(number)) return 1;
|
|
30802
|
+
return Math.min(SPEED_MAX, Math.max(SPEED_MIN, number));
|
|
30803
|
+
}
|
|
30804
|
+
function normalizeOpacity(value) {
|
|
30805
|
+
var number = Number(value);
|
|
30806
|
+
if (!Number.isFinite(number)) return 1;
|
|
30807
|
+
return Math.min(1, Math.max(0, number));
|
|
30808
|
+
}
|
|
30809
|
+
function normalizeDirection(value) {
|
|
30810
|
+
return value === -1 || value === 'reverse' ? -1 : 1;
|
|
30811
|
+
}
|
|
30812
|
+
function normalizeRenderer(value) {
|
|
30813
|
+
return value === 'canvas' ? 'canvas' : 'svg';
|
|
30814
|
+
}
|
|
30815
|
+
function normalizeFit(value) {
|
|
30816
|
+
if (value === 'cover') return 'cover';
|
|
30817
|
+
if (value === 'fill' || value === 'stretch' || value === 'none') return 'fill';
|
|
30818
|
+
return 'contain';
|
|
30819
|
+
}
|
|
30820
|
+
function normalizeShape(value) {
|
|
30821
|
+
var shapes = getEmoType('grok').shapes;
|
|
30822
|
+
return shapes.includes(value) ? value : 'blob';
|
|
30823
|
+
}
|
|
30824
|
+
|
|
30825
|
+
/** Mount an emo of the given type (miao | grok) into a container. */
|
|
30826
|
+
function createEmo(container) {
|
|
30827
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
30828
|
+
if (!container || typeof container.appendChild !== 'function') {
|
|
30829
|
+
throw new Error('createEmo: container element is required');
|
|
30830
|
+
}
|
|
30831
|
+
var type = getEmoType(options.type || 'miao').type;
|
|
30832
|
+
var name = options.name || getEmoType(type).defaultName;
|
|
30833
|
+
var s = {
|
|
30834
|
+
type: type,
|
|
30835
|
+
name: name,
|
|
30836
|
+
preset: getEmoPreset(type, name),
|
|
30837
|
+
width: options.width === undefined ? 160 : options.width,
|
|
30838
|
+
height: options.height === undefined ? 160 : options.height,
|
|
30839
|
+
speed: normalizeSpeed(options.speed),
|
|
30840
|
+
loop: options.loop !== false,
|
|
30841
|
+
autoplay: options.autoplay !== false,
|
|
30842
|
+
direction: normalizeDirection(options.direction),
|
|
30843
|
+
opacity: normalizeOpacity(options.opacity),
|
|
30844
|
+
fit: normalizeFit(options.fit),
|
|
30845
|
+
renderer: normalizeRenderer(options.renderer),
|
|
30846
|
+
paused: options.paused === true,
|
|
30847
|
+
segment: null,
|
|
30848
|
+
partColors: options.partColors && _typeof(options.partColors) === 'object' ? _objectSpread2({}, options.partColors) : {},
|
|
30849
|
+
shape: normalizeShape(options.shape),
|
|
30850
|
+
interactive: options.interactive === true,
|
|
30851
|
+
background: options.background == null ? 'transparent' : String(options.background),
|
|
30852
|
+
label: typeof options.label === 'string' && options.label ? options.label : null,
|
|
30853
|
+
reducedMotion: false,
|
|
30854
|
+
player: options.player,
|
|
30855
|
+
instanceName: options.instanceName,
|
|
30856
|
+
disposed: false
|
|
30857
|
+
};
|
|
30858
|
+
if (type === 'miao') s.segment = normalizeSegment(options.segment, s.preset);
|
|
30859
|
+
var rendererImpl = null;
|
|
30860
|
+
var emitter = createEmitter();
|
|
30861
|
+
var root = document.createElement('div');
|
|
30862
|
+
root.className = 'dlc-emo-root';
|
|
30863
|
+
root.setAttribute('role', 'img');
|
|
30864
|
+
var stage = document.createElement('div');
|
|
30865
|
+
stage.className = 'dlc-emo-stage';
|
|
30866
|
+
root.appendChild(stage);
|
|
30867
|
+
container.appendChild(root);
|
|
30868
|
+
var updateRoot = function updateRoot() {
|
|
30869
|
+
var effectiveRenderer = s.type === 'grok' ? 'svg' : s.renderer;
|
|
30870
|
+
root.style.width = parseSize(s.width);
|
|
30871
|
+
root.style.height = parseSize(s.height);
|
|
30872
|
+
root.style.setProperty('--dlc-emo-opacity', String(s.opacity));
|
|
30873
|
+
root.style.setProperty('--dlc-emo-background', s.background);
|
|
30874
|
+
root.dataset.type = s.preset.type;
|
|
30875
|
+
root.dataset.name = s.preset.name;
|
|
30876
|
+
root.dataset.fit = s.fit;
|
|
30877
|
+
root.dataset.renderer = effectiveRenderer;
|
|
30878
|
+
root.dataset.paused = String(s.paused || s.reducedMotion);
|
|
30879
|
+
root.setAttribute('aria-label', s.label || "".concat(s.preset.label, "\u8868\u60C5\u52A8\u753B"));
|
|
30880
|
+
};
|
|
30881
|
+
var destroyCurrent = function destroyCurrent() {
|
|
30882
|
+
if (rendererImpl) {
|
|
30883
|
+
rendererImpl.dispose();
|
|
30884
|
+
rendererImpl = null;
|
|
30885
|
+
}
|
|
30886
|
+
};
|
|
30887
|
+
var mount = function mount() {
|
|
30888
|
+
destroyCurrent();
|
|
30889
|
+
if (s.disposed) return;
|
|
30890
|
+
s.preset = getEmoPreset(s.type, s.name);
|
|
30891
|
+
if (s.type === 'miao' && s.segment) s.segment = normalizeSegment(s.segment, s.preset);
|
|
30892
|
+
updateRoot();
|
|
30893
|
+
rendererImpl = RENDERER_FACTORIES[s.type]({
|
|
30894
|
+
stage: stage,
|
|
30895
|
+
s: s,
|
|
30896
|
+
emitter: emitter
|
|
30213
30897
|
});
|
|
30898
|
+
rendererImpl.mount();
|
|
30214
30899
|
};
|
|
30900
|
+
var motionPreference = createReducedMotionPreference(options.respectReducedMotion !== false, function (matches) {
|
|
30901
|
+
s.reducedMotion = matches;
|
|
30902
|
+
if (s.disposed) return;
|
|
30903
|
+
updateRoot();
|
|
30904
|
+
if (!rendererImpl) return;
|
|
30905
|
+
if (s.paused || s.reducedMotion || !s.autoplay) rendererImpl.pause();else rendererImpl.play();
|
|
30906
|
+
});
|
|
30907
|
+
s.reducedMotion = motionPreference.matches();
|
|
30215
30908
|
updateRoot();
|
|
30216
|
-
|
|
30909
|
+
mount();
|
|
30217
30910
|
return {
|
|
30218
30911
|
element: root,
|
|
30219
30912
|
get animation() {
|
|
30220
|
-
return animation;
|
|
30913
|
+
return rendererImpl ? rendererImpl.animation : null;
|
|
30221
30914
|
},
|
|
30222
30915
|
get preset() {
|
|
30223
|
-
return _objectSpread2({}, preset);
|
|
30916
|
+
return _objectSpread2({}, s.preset);
|
|
30224
30917
|
},
|
|
30225
30918
|
on: emitter.on,
|
|
30226
30919
|
off: emitter.off,
|
|
30227
30920
|
play: function play() {
|
|
30228
|
-
paused = false;
|
|
30921
|
+
s.paused = false;
|
|
30229
30922
|
updateRoot();
|
|
30230
|
-
if (
|
|
30923
|
+
if (rendererImpl && !s.reducedMotion) rendererImpl.play();
|
|
30231
30924
|
return this;
|
|
30232
30925
|
},
|
|
30233
30926
|
pause: function pause() {
|
|
30234
|
-
paused = true;
|
|
30927
|
+
s.paused = true;
|
|
30235
30928
|
root.dataset.paused = 'true';
|
|
30236
|
-
if (
|
|
30929
|
+
if (rendererImpl) rendererImpl.pause();
|
|
30237
30930
|
return this;
|
|
30238
30931
|
},
|
|
30239
30932
|
stop: function stop() {
|
|
30240
|
-
paused = true;
|
|
30933
|
+
s.paused = true;
|
|
30241
30934
|
root.dataset.paused = 'true';
|
|
30242
|
-
if (
|
|
30935
|
+
if (rendererImpl) rendererImpl.stop();
|
|
30243
30936
|
return this;
|
|
30244
30937
|
},
|
|
30245
30938
|
setPaused: function setPaused(value) {
|
|
30246
30939
|
return value ? this.pause() : this.play();
|
|
30247
30940
|
},
|
|
30248
30941
|
setSpeed: function setSpeed(value) {
|
|
30249
|
-
speed = normalizeSpeed(value);
|
|
30250
|
-
if (
|
|
30942
|
+
s.speed = normalizeSpeed(value);
|
|
30943
|
+
if (rendererImpl) rendererImpl.setSpeed(s.speed);
|
|
30251
30944
|
return this;
|
|
30252
30945
|
},
|
|
30253
30946
|
setDirection: function setDirection(value) {
|
|
30254
|
-
direction = normalizeDirection(value);
|
|
30255
|
-
if (
|
|
30256
|
-
animation.setDirection(direction);
|
|
30257
|
-
if (direction < 0 && animation.currentFrame <= 0) animation.goToAndStop(segment ? segment[1] : preset.frames - 1, true);
|
|
30258
|
-
}
|
|
30947
|
+
s.direction = normalizeDirection(value);
|
|
30948
|
+
if (rendererImpl) rendererImpl.setDirection(s.direction);
|
|
30259
30949
|
return this;
|
|
30260
30950
|
},
|
|
30261
30951
|
setSegment: function setSegment(value) {
|
|
30262
|
-
|
|
30263
|
-
|
|
30952
|
+
if (s.type !== 'miao') return this;
|
|
30953
|
+
s.segment = normalizeSegment(value, s.preset);
|
|
30954
|
+
if (rendererImpl) rendererImpl.setSegment(s.segment);
|
|
30264
30955
|
return this;
|
|
30265
30956
|
},
|
|
30266
30957
|
setName: function setName(value) {
|
|
30267
|
-
|
|
30268
|
-
|
|
30958
|
+
var nextName = String(value || '').trim().toLowerCase();
|
|
30959
|
+
getEmoPreset(s.type, nextName);
|
|
30960
|
+
s.name = nextName;
|
|
30961
|
+
mount();
|
|
30269
30962
|
emitter.emit('namechange', {
|
|
30270
|
-
preset: _objectSpread2({}, preset)
|
|
30963
|
+
preset: _objectSpread2({}, s.preset)
|
|
30271
30964
|
});
|
|
30272
30965
|
return this;
|
|
30273
30966
|
},
|
|
30274
30967
|
setType: function setType(value) {
|
|
30275
|
-
|
|
30276
|
-
|
|
30968
|
+
var nextType = getEmoType(value).type;
|
|
30969
|
+
s.type = nextType;
|
|
30970
|
+
if (!getEmoType(s.type).names.includes(s.name)) s.name = getEmoType(s.type).defaultName;
|
|
30971
|
+
mount();
|
|
30277
30972
|
emitter.emit('typechange', {
|
|
30278
|
-
preset: _objectSpread2({}, preset)
|
|
30973
|
+
preset: _objectSpread2({}, s.preset)
|
|
30279
30974
|
});
|
|
30280
30975
|
return this;
|
|
30281
30976
|
},
|
|
30282
30977
|
setPartColors: function setPartColors(next) {
|
|
30283
|
-
partColors = next && _typeof(next) === 'object' ? _objectSpread2({}, next) : {};
|
|
30284
|
-
|
|
30978
|
+
s.partColors = next && _typeof(next) === 'object' ? _objectSpread2({}, next) : {};
|
|
30979
|
+
mount();
|
|
30285
30980
|
return this;
|
|
30286
30981
|
},
|
|
30287
30982
|
setOpacity: function setOpacity(value) {
|
|
30288
|
-
opacity = normalizeOpacity(value);
|
|
30983
|
+
s.opacity = normalizeOpacity(value);
|
|
30289
30984
|
updateRoot();
|
|
30290
30985
|
return this;
|
|
30291
30986
|
},
|
|
30292
30987
|
setBackground: function setBackground(value) {
|
|
30293
|
-
background = value == null ? 'transparent' : String(value);
|
|
30988
|
+
s.background = value == null ? 'transparent' : String(value);
|
|
30294
30989
|
updateRoot();
|
|
30295
30990
|
return this;
|
|
30296
30991
|
},
|
|
30297
30992
|
setSize: function setSize(nextWidth, nextHeight) {
|
|
30298
30993
|
if (nextWidth !== undefined) {
|
|
30299
30994
|
parseSize(nextWidth);
|
|
30300
|
-
width = nextWidth;
|
|
30995
|
+
s.width = nextWidth;
|
|
30301
30996
|
}
|
|
30302
30997
|
if (nextHeight !== undefined) {
|
|
30303
30998
|
parseSize(nextHeight);
|
|
30304
|
-
height = nextHeight;
|
|
30999
|
+
s.height = nextHeight;
|
|
30305
31000
|
}
|
|
30306
31001
|
updateRoot();
|
|
30307
31002
|
return this;
|
|
30308
31003
|
},
|
|
30309
31004
|
setFit: function setFit(value) {
|
|
30310
|
-
fit = normalizeFit(value);
|
|
30311
|
-
|
|
31005
|
+
s.fit = normalizeFit(value);
|
|
31006
|
+
mount();
|
|
30312
31007
|
return this;
|
|
30313
31008
|
},
|
|
30314
31009
|
setRenderer: function setRenderer(value) {
|
|
30315
|
-
renderer = normalizeRenderer(value);
|
|
30316
|
-
|
|
31010
|
+
s.renderer = normalizeRenderer(value);
|
|
31011
|
+
if (s.type === 'miao') mount();else updateRoot();
|
|
30317
31012
|
return this;
|
|
30318
31013
|
},
|
|
30319
31014
|
setLoop: function setLoop(value) {
|
|
30320
|
-
loop = value !== false;
|
|
30321
|
-
|
|
31015
|
+
s.loop = value !== false;
|
|
31016
|
+
mount();
|
|
30322
31017
|
return this;
|
|
30323
31018
|
},
|
|
30324
31019
|
setAutoplay: function setAutoplay(value) {
|
|
30325
|
-
autoplay = value !== false;
|
|
30326
|
-
if (autoplay && !paused && !reducedMotion) this.play();else if (
|
|
31020
|
+
s.autoplay = value !== false;
|
|
31021
|
+
if (s.autoplay && !s.paused && !s.reducedMotion) this.play();else if (rendererImpl) rendererImpl.pause();
|
|
31022
|
+
return this;
|
|
31023
|
+
},
|
|
31024
|
+
setShape: function setShape(value) {
|
|
31025
|
+
s.shape = normalizeShape(value);
|
|
31026
|
+
if (rendererImpl) rendererImpl.setShape(s.shape);
|
|
31027
|
+
return this;
|
|
31028
|
+
},
|
|
31029
|
+
setInteractive: function setInteractive(value) {
|
|
31030
|
+
s.interactive = value === true;
|
|
31031
|
+
if (rendererImpl) rendererImpl.setInteractive(s.interactive);
|
|
30327
31032
|
return this;
|
|
30328
31033
|
},
|
|
30329
31034
|
setLabel: function setLabel(value) {
|
|
30330
|
-
label = typeof value === 'string' && value ? value : null;
|
|
31035
|
+
s.label = typeof value === 'string' && value ? value : null;
|
|
30331
31036
|
updateRoot();
|
|
30332
31037
|
return this;
|
|
30333
31038
|
},
|
|
30334
31039
|
dispose: function dispose() {
|
|
30335
|
-
disposed = true;
|
|
30336
|
-
loadToken += 1;
|
|
31040
|
+
s.disposed = true;
|
|
30337
31041
|
motionPreference.dispose();
|
|
30338
|
-
|
|
31042
|
+
destroyCurrent();
|
|
30339
31043
|
root.remove();
|
|
30340
31044
|
},
|
|
30341
31045
|
get speed() {
|
|
30342
|
-
return speed;
|
|
31046
|
+
return s.speed;
|
|
30343
31047
|
},
|
|
30344
31048
|
get loop() {
|
|
30345
|
-
return loop;
|
|
31049
|
+
return s.loop;
|
|
30346
31050
|
},
|
|
30347
31051
|
get autoplay() {
|
|
30348
|
-
return autoplay;
|
|
31052
|
+
return s.autoplay;
|
|
30349
31053
|
},
|
|
30350
31054
|
get direction() {
|
|
30351
|
-
return direction;
|
|
31055
|
+
return s.direction;
|
|
30352
31056
|
},
|
|
30353
31057
|
get opacity() {
|
|
30354
|
-
return opacity;
|
|
31058
|
+
return s.opacity;
|
|
30355
31059
|
},
|
|
30356
31060
|
get fit() {
|
|
30357
|
-
return fit;
|
|
31061
|
+
return s.fit;
|
|
30358
31062
|
},
|
|
30359
31063
|
get renderer() {
|
|
30360
|
-
return renderer;
|
|
31064
|
+
return s.type === 'grok' ? 'svg' : s.renderer;
|
|
30361
31065
|
},
|
|
30362
31066
|
get paused() {
|
|
30363
|
-
return paused;
|
|
31067
|
+
return s.paused;
|
|
30364
31068
|
},
|
|
30365
31069
|
get segment() {
|
|
30366
|
-
return segment ? _toConsumableArray(segment) : null;
|
|
31070
|
+
return s.segment ? _toConsumableArray(s.segment) : null;
|
|
30367
31071
|
},
|
|
30368
31072
|
get partColors() {
|
|
30369
|
-
return _objectSpread2({}, partColors);
|
|
31073
|
+
return _objectSpread2({}, s.partColors);
|
|
31074
|
+
},
|
|
31075
|
+
get shape() {
|
|
31076
|
+
return s.shape;
|
|
31077
|
+
},
|
|
31078
|
+
get interactive() {
|
|
31079
|
+
return s.interactive;
|
|
30370
31080
|
},
|
|
30371
31081
|
get background() {
|
|
30372
|
-
return background;
|
|
31082
|
+
return s.background;
|
|
31083
|
+
}
|
|
31084
|
+
};
|
|
31085
|
+
}
|
|
31086
|
+
|
|
31087
|
+
function createEmoPreviewCard(_ref) {
|
|
31088
|
+
var container = _ref.container,
|
|
31089
|
+
options = _ref.options,
|
|
31090
|
+
_ref$playFor = _ref.playFor,
|
|
31091
|
+
playFor = _ref$playFor === void 0 ? 2800 : _ref$playFor,
|
|
31092
|
+
_ref$respectReducedMo = _ref.respectReducedMotion,
|
|
31093
|
+
respectReducedMotion = _ref$respectReducedMo === void 0 ? true : _ref$respectReducedMo,
|
|
31094
|
+
_ref$trackViewport = _ref.trackViewport,
|
|
31095
|
+
trackViewport = _ref$trackViewport === void 0 ? false : _ref$trackViewport;
|
|
31096
|
+
var controller = createEmo(container, _objectSpread2(_objectSpread2({}, options), {}, {
|
|
31097
|
+
autoplay: false,
|
|
31098
|
+
paused: true
|
|
31099
|
+
}));
|
|
31100
|
+
var motionPreference = createReducedMotionPreference(respectReducedMotion !== false, function (matches) {
|
|
31101
|
+
reduced = matches;
|
|
31102
|
+
if (reduced) stop();
|
|
31103
|
+
});
|
|
31104
|
+
var reduced = motionPreference.matches();
|
|
31105
|
+
var timer = null;
|
|
31106
|
+
var offscreen = false;
|
|
31107
|
+
var observer = null;
|
|
31108
|
+
var stop = function stop() {
|
|
31109
|
+
if (timer) {
|
|
31110
|
+
clearTimeout(timer);
|
|
31111
|
+
timer = null;
|
|
31112
|
+
}
|
|
31113
|
+
controller.pause();
|
|
31114
|
+
};
|
|
31115
|
+
var start = function start() {
|
|
31116
|
+
if (timer) {
|
|
31117
|
+
clearTimeout(timer);
|
|
31118
|
+
timer = null;
|
|
31119
|
+
}
|
|
31120
|
+
if (reduced || offscreen) return;
|
|
31121
|
+
controller.play();
|
|
31122
|
+
timer = setTimeout(function () {
|
|
31123
|
+
return stop();
|
|
31124
|
+
}, playFor);
|
|
31125
|
+
};
|
|
31126
|
+
if (trackViewport && typeof IntersectionObserver !== 'undefined') {
|
|
31127
|
+
observer = new IntersectionObserver(function (entries) {
|
|
31128
|
+
var visible = entries.some(function (entry) {
|
|
31129
|
+
return entry.isIntersecting;
|
|
31130
|
+
});
|
|
31131
|
+
offscreen = !visible;
|
|
31132
|
+
if (offscreen) stop();
|
|
31133
|
+
}, {
|
|
31134
|
+
threshold: 0
|
|
31135
|
+
});
|
|
31136
|
+
observer.observe(container);
|
|
31137
|
+
}
|
|
31138
|
+
return {
|
|
31139
|
+
element: controller.element,
|
|
31140
|
+
controller: controller,
|
|
31141
|
+
start: start,
|
|
31142
|
+
stop: stop,
|
|
31143
|
+
setViewportVisible: function setViewportVisible(visible) {
|
|
31144
|
+
offscreen = !visible;
|
|
31145
|
+
if (offscreen) stop();
|
|
31146
|
+
},
|
|
31147
|
+
dispose: function dispose() {
|
|
31148
|
+
stop();
|
|
31149
|
+
motionPreference.dispose();
|
|
31150
|
+
if (observer) {
|
|
31151
|
+
observer.disconnect();
|
|
31152
|
+
observer = null;
|
|
31153
|
+
}
|
|
31154
|
+
controller.dispose();
|
|
30373
31155
|
}
|
|
30374
31156
|
};
|
|
30375
31157
|
}
|
|
@@ -30382,6 +31164,9 @@ exports.EMO_CATEGORIES = EMO_CATEGORIES;
|
|
|
30382
31164
|
exports.EMO_PRESETS = EMO_PRESETS;
|
|
30383
31165
|
exports.EMO_TYPES = EMO_TYPES;
|
|
30384
31166
|
exports.FallbackRenderer = FallbackRenderer;
|
|
31167
|
+
exports.GROK_CATEGORIES = GROK_CATEGORIES;
|
|
31168
|
+
exports.GROK_NAMES = GROK_NAMES;
|
|
31169
|
+
exports.GROK_STATE_META = GROK_STATE_META;
|
|
30385
31170
|
exports.PRESETS = PRESETS;
|
|
30386
31171
|
exports.PROGRESS_PRESETS = PROGRESS_PRESETS;
|
|
30387
31172
|
exports.ProgressCapsuleController = ProgressCapsuleController;
|
|
@@ -30390,10 +31175,15 @@ exports.QUALITY_TIERS = QUALITY_TIERS;
|
|
|
30390
31175
|
exports.createCapsule = createCapsule;
|
|
30391
31176
|
exports.createColorBackground = createColorBackground;
|
|
30392
31177
|
exports.createEmo = createEmo;
|
|
31178
|
+
exports.createEmoPreviewCard = createEmoPreviewCard;
|
|
30393
31179
|
exports.createProgressCapsule = createProgressCapsule;
|
|
30394
31180
|
exports.dprCapFor = dprCapFor;
|
|
30395
31181
|
exports.effectiveDprCap = effectiveDprCap;
|
|
31182
|
+
exports.getEmoAnimation = getEmoAnimation;
|
|
30396
31183
|
exports.getEmoPreset = getEmoPreset;
|
|
31184
|
+
exports.getEmoType = getEmoType;
|
|
31185
|
+
exports.getGrokNamesFor = getGrokNamesFor;
|
|
31186
|
+
exports.getGrokStateMeta = getGrokStateMeta;
|
|
30397
31187
|
exports.getPreset = getPreset;
|
|
30398
31188
|
exports.hexToRgb01 = hexToRgb01$1;
|
|
30399
31189
|
exports.hexToRgba = hexToRgba;
|