@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.umd.js
CHANGED
|
@@ -1463,13 +1463,15 @@
|
|
|
1463
1463
|
var isMotionPaused = function isMotionPaused() {
|
|
1464
1464
|
return manuallyPaused || reducedPaused || staticMode || contextLost;
|
|
1465
1465
|
};
|
|
1466
|
-
root.addEventListener('pointerenter', function () {
|
|
1466
|
+
root.addEventListener('pointerenter', function (event) {
|
|
1467
1467
|
return emitter.emit('pointerenter', {
|
|
1468
|
+
event: event,
|
|
1468
1469
|
preset: _objectSpread2({}, preset)
|
|
1469
1470
|
});
|
|
1470
1471
|
});
|
|
1471
|
-
root.addEventListener('pointerleave', function () {
|
|
1472
|
+
root.addEventListener('pointerleave', function (event) {
|
|
1472
1473
|
return emitter.emit('pointerleave', {
|
|
1474
|
+
event: event,
|
|
1473
1475
|
preset: _objectSpread2({}, preset)
|
|
1474
1476
|
});
|
|
1475
1477
|
});
|
|
@@ -2218,7 +2220,7 @@
|
|
|
2218
2220
|
return Math.min(Math.max((value - min) / range, 0), 1);
|
|
2219
2221
|
}
|
|
2220
2222
|
|
|
2221
|
-
var clamp = function clamp(value, min, max) {
|
|
2223
|
+
var clamp$1 = function clamp(value, min, max) {
|
|
2222
2224
|
return Math.min(Math.max(value, min), max);
|
|
2223
2225
|
};
|
|
2224
2226
|
var SUPPORTS_CTX_FILTER = typeof CanvasRenderingContext2D !== 'undefined' && 'filter' in CanvasRenderingContext2D.prototype;
|
|
@@ -2330,13 +2332,13 @@
|
|
|
2330
2332
|
this.min = _normalizeRange2[0];
|
|
2331
2333
|
this.max = _normalizeRange2[1];
|
|
2332
2334
|
this.step = normalizeProgressStep(options.step);
|
|
2333
|
-
this.precision = Number.isInteger(Number(options.precision)) ? clamp(Number(options.precision), 0, 20) : 0;
|
|
2335
|
+
this.precision = Number.isInteger(Number(options.precision)) ? clamp$1(Number(options.precision), 0, 20) : 0;
|
|
2334
2336
|
this.formatValue = typeof options.formatValue === 'function' ? options.formatValue : null;
|
|
2335
2337
|
this.direction = options.direction === 'rtl' ? 'rtl' : 'ltr';
|
|
2336
2338
|
this.dprCap = effectiveDprCap(options.quality, options.renderScale);
|
|
2337
2339
|
this.ctx = canvas.getContext('2d');
|
|
2338
2340
|
this.value = snapProgressValue((_options$value = options.value) !== null && _options$value !== void 0 ? _options$value : preset.initialProgress, this.min, this.max, this.step);
|
|
2339
|
-
if (this.value === null) this.value = clamp(preset.initialProgress, this.min, this.max);
|
|
2341
|
+
if (this.value === null) this.value = clamp$1(preset.initialProgress, this.min, this.max);
|
|
2340
2342
|
this.dragging = false;
|
|
2341
2343
|
this.webglActive = false;
|
|
2342
2344
|
this.flowTime = stringSeed(preset.id) * 31;
|
|
@@ -2473,7 +2475,7 @@
|
|
|
2473
2475
|
}, {
|
|
2474
2476
|
key: "edgeEnvelope",
|
|
2475
2477
|
value: function edgeEnvelope(yRatio) {
|
|
2476
|
-
var edge = Math.sin(Math.PI * clamp(yRatio, 0, 1));
|
|
2478
|
+
var edge = Math.sin(Math.PI * clamp$1(yRatio, 0, 1));
|
|
2477
2479
|
return Math.pow(Math.max(edge, 0), 0.48);
|
|
2478
2480
|
}
|
|
2479
2481
|
}, {
|
|
@@ -29892,6 +29894,240 @@
|
|
|
29892
29894
|
}
|
|
29893
29895
|
};
|
|
29894
29896
|
|
|
29897
|
+
// Generated from zhulin025/LaoA-GrokBot (https://github.com/zhulin025/LaoA-GrokBot), MIT License.
|
|
29898
|
+
// See THIRD_PARTY_NOTICES.md. Do not edit by hand.
|
|
29899
|
+
|
|
29900
|
+
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]]]];
|
|
29901
|
+
var GROK_GROUPS = [{
|
|
29902
|
+
"key": "lifecycle",
|
|
29903
|
+
"label": "生命周期",
|
|
29904
|
+
"states": ["sleeping", "idle", "listening", "thinking", "searching", "working"]
|
|
29905
|
+
}, {
|
|
29906
|
+
"key": "emotion",
|
|
29907
|
+
"label": "情绪反应",
|
|
29908
|
+
"states": ["surprised", "angry", "happy", "confused", "sad"]
|
|
29909
|
+
}, {
|
|
29910
|
+
"key": "product",
|
|
29911
|
+
"label": "产品流程",
|
|
29912
|
+
"states": ["loading", "receiving"]
|
|
29913
|
+
}];
|
|
29914
|
+
var GROK_STATE_LABELS = {
|
|
29915
|
+
"sleeping": "睡觉",
|
|
29916
|
+
"idle": "平静",
|
|
29917
|
+
"listening": "聆听",
|
|
29918
|
+
"thinking": "思考",
|
|
29919
|
+
"searching": "寻找",
|
|
29920
|
+
"working": "专注",
|
|
29921
|
+
"surprised": "惊讶",
|
|
29922
|
+
"angry": "生气",
|
|
29923
|
+
"happy": "开心",
|
|
29924
|
+
"confused": "疑惑",
|
|
29925
|
+
"sad": "难过",
|
|
29926
|
+
"loading": "缓冲中",
|
|
29927
|
+
"receiving": "接收"
|
|
29928
|
+
};
|
|
29929
|
+
var GROK_POOLS = {
|
|
29930
|
+
"sleeping": [13, 22, 4],
|
|
29931
|
+
"idle": [0, 8],
|
|
29932
|
+
"listening": [10, 1, 19],
|
|
29933
|
+
"thinking": [8, 16, 14, 17, 5],
|
|
29934
|
+
"searching": [15, 9, 3, 20, 12, 18],
|
|
29935
|
+
"working": [7, 16, 11, 10],
|
|
29936
|
+
"surprised": [3, 21],
|
|
29937
|
+
"angry": [7, 16],
|
|
29938
|
+
"happy": [2, 11, 17, 19],
|
|
29939
|
+
"confused": [14, 5, 8],
|
|
29940
|
+
"sad": [4, 13, 22],
|
|
29941
|
+
"loading": [0, 8],
|
|
29942
|
+
"receiving": [19, 0, 8]
|
|
29943
|
+
};
|
|
29944
|
+
var GROK_EXPR_CADENCE = {
|
|
29945
|
+
"sleeping": [6000, 10000],
|
|
29946
|
+
"idle": [9000, 16000],
|
|
29947
|
+
"listening": [2800, 5000],
|
|
29948
|
+
"thinking": [2000, 3600],
|
|
29949
|
+
"searching": [1000, 1800],
|
|
29950
|
+
"working": [1800, 3200],
|
|
29951
|
+
"surprised": [2500, 4000],
|
|
29952
|
+
"angry": [2200, 3800],
|
|
29953
|
+
"happy": [2500, 4500],
|
|
29954
|
+
"confused": [2200, 3800],
|
|
29955
|
+
"sad": [4000, 7000],
|
|
29956
|
+
"loading": [6000, 10000],
|
|
29957
|
+
"receiving": [4000, 8000]
|
|
29958
|
+
};
|
|
29959
|
+
var GROK_BLINK = {
|
|
29960
|
+
"sleeping": null,
|
|
29961
|
+
"idle": [6000, 14000],
|
|
29962
|
+
"listening": [3000, 7000],
|
|
29963
|
+
"thinking": [3500, 7000],
|
|
29964
|
+
"searching": [1600, 4000],
|
|
29965
|
+
"working": [2800, 5500],
|
|
29966
|
+
"surprised": [1800, 3500],
|
|
29967
|
+
"angry": [3500, 7000],
|
|
29968
|
+
"happy": [2500, 5000],
|
|
29969
|
+
"confused": [2800, 5500],
|
|
29970
|
+
"sad": [4000, 8000],
|
|
29971
|
+
"loading": null,
|
|
29972
|
+
"receiving": null
|
|
29973
|
+
};
|
|
29974
|
+
var GROK_SHAPES = {
|
|
29975
|
+
"blob": {
|
|
29976
|
+
label: "原始形态",
|
|
29977
|
+
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"
|
|
29978
|
+
},
|
|
29979
|
+
"pebble": {
|
|
29980
|
+
label: "鹅卵石",
|
|
29981
|
+
d: "M114 8C177 8 217 45 217 109C217 178 181 219 112 219C43 219 12 181 12 113C12 48 51 8 114 8Z"
|
|
29982
|
+
},
|
|
29983
|
+
"squircle": {
|
|
29984
|
+
label: "圆角方",
|
|
29985
|
+
d: "M55 10H174Q219 10 219 55V174Q219 219 174 219H55Q10 219 10 174V55Q10 10 55 10Z"
|
|
29986
|
+
},
|
|
29987
|
+
"capsule": {
|
|
29988
|
+
label: "胶囊",
|
|
29989
|
+
d: "M61 31H168C202 31 220 65 220 114C220 163 202 197 168 197H61C27 197 9 163 9 114C9 65 27 31 61 31Z"
|
|
29990
|
+
},
|
|
29991
|
+
"triangle": {
|
|
29992
|
+
label: "三角体",
|
|
29993
|
+
d: "M114 9Q122 9 128 21L220 194Q227 210 207 210H21Q1 210 9 194L101 21Q106 9 114 9Z"
|
|
29994
|
+
},
|
|
29995
|
+
"hex": {
|
|
29996
|
+
label: "六边体",
|
|
29997
|
+
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"
|
|
29998
|
+
},
|
|
29999
|
+
"cloud": {
|
|
30000
|
+
label: "云朵",
|
|
30001
|
+
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"
|
|
30002
|
+
},
|
|
30003
|
+
"drop": {
|
|
30004
|
+
label: "水滴",
|
|
30005
|
+
d: "M114 5C137 42 202 103 202 151C202 196 165 222 114 222C63 222 26 196 26 151C26 103 91 42 114 5Z"
|
|
30006
|
+
}
|
|
30007
|
+
};
|
|
30008
|
+
|
|
30009
|
+
var GROK_CATEGORIES = [{
|
|
30010
|
+
key: 'emotion',
|
|
30011
|
+
label: '情绪'
|
|
30012
|
+
}, {
|
|
30013
|
+
key: 'agent',
|
|
30014
|
+
label: 'Agent 状态'
|
|
30015
|
+
}, {
|
|
30016
|
+
key: 'lifecycle',
|
|
30017
|
+
label: '生命周期'
|
|
30018
|
+
}];
|
|
30019
|
+
|
|
30020
|
+
/** All 13 public grok state names, in upstream group order. */
|
|
30021
|
+
var GROK_NAMES = GROK_GROUPS.flatMap(function (group) {
|
|
30022
|
+
return group.states;
|
|
30023
|
+
});
|
|
30024
|
+
var GROK_STATE_META = {
|
|
30025
|
+
// emotion
|
|
30026
|
+
idle: {
|
|
30027
|
+
category: 'emotion',
|
|
30028
|
+
description: '中性平和的眼神,自然眨眼,不抢戏的默认姿态',
|
|
30029
|
+
source: 'upstream'
|
|
30030
|
+
},
|
|
30031
|
+
surprised: {
|
|
30032
|
+
category: 'emotion',
|
|
30033
|
+
description: '眼睛瞪得又大又圆,猝不及防',
|
|
30034
|
+
source: 'upstream'
|
|
30035
|
+
},
|
|
30036
|
+
angry: {
|
|
30037
|
+
category: 'emotion',
|
|
30038
|
+
description: '眉头下压、眼神凌厉,一脸不爽',
|
|
30039
|
+
source: 'upstream'
|
|
30040
|
+
},
|
|
30041
|
+
happy: {
|
|
30042
|
+
category: 'emotion',
|
|
30043
|
+
description: '眼睛弯成月牙,眉开眼笑',
|
|
30044
|
+
source: 'upstream'
|
|
30045
|
+
},
|
|
30046
|
+
confused: {
|
|
30047
|
+
category: 'emotion',
|
|
30048
|
+
description: '一眯眼一瞪眼、眼神歪斜,满脸问号',
|
|
30049
|
+
source: 'upstream'
|
|
30050
|
+
},
|
|
30051
|
+
sad: {
|
|
30052
|
+
category: 'emotion',
|
|
30053
|
+
description: '双眼低垂闭合,垂头丧气',
|
|
30054
|
+
source: 'upstream'
|
|
30055
|
+
},
|
|
30056
|
+
// agent
|
|
30057
|
+
listening: {
|
|
30058
|
+
category: 'agent',
|
|
30059
|
+
description: '温和注视、微微凝神,认真听对方说话',
|
|
30060
|
+
source: 'upstream'
|
|
30061
|
+
},
|
|
30062
|
+
thinking: {
|
|
30063
|
+
category: 'agent',
|
|
30064
|
+
description: '眼神左顾右盼、时眯时睁,像在琢磨问题',
|
|
30065
|
+
source: 'upstream'
|
|
30066
|
+
},
|
|
30067
|
+
searching: {
|
|
30068
|
+
category: 'agent',
|
|
30069
|
+
description: '目光快速扫动、不时瞪圆,像在搜寻目标',
|
|
30070
|
+
source: 'upstream'
|
|
30071
|
+
},
|
|
30072
|
+
working: {
|
|
30073
|
+
category: 'agent',
|
|
30074
|
+
description: '时绷紧眼神、时睁大,全神贯注在做事',
|
|
30075
|
+
source: 'upstream'
|
|
30076
|
+
},
|
|
30077
|
+
loading: {
|
|
30078
|
+
category: 'agent',
|
|
30079
|
+
description: '平静眼神配缓慢起伏的节奏,等待加载完成',
|
|
30080
|
+
source: 'upstream'
|
|
30081
|
+
},
|
|
30082
|
+
receiving: {
|
|
30083
|
+
category: 'agent',
|
|
30084
|
+
description: '平和注视、安静等待,像在接收新内容',
|
|
30085
|
+
source: 'upstream'
|
|
30086
|
+
},
|
|
30087
|
+
// lifecycle
|
|
30088
|
+
sleeping: {
|
|
30089
|
+
category: 'lifecycle',
|
|
30090
|
+
description: '双眼紧闭、呼吸般一起一伏,睡得正香',
|
|
30091
|
+
source: 'upstream'
|
|
30092
|
+
}
|
|
30093
|
+
};
|
|
30094
|
+
var _iterator = _createForOfIteratorHelper(GROK_NAMES),
|
|
30095
|
+
_step;
|
|
30096
|
+
try {
|
|
30097
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
30098
|
+
var name = _step.value;
|
|
30099
|
+
GROK_STATE_META[name].label = GROK_STATE_LABELS[name] || name;
|
|
30100
|
+
}
|
|
30101
|
+
|
|
30102
|
+
/**
|
|
30103
|
+
* Resolve the display name list for a docs tab: category key | 'all'.
|
|
30104
|
+
* Unknown tabs fall back to the full list.
|
|
30105
|
+
*/
|
|
30106
|
+
} catch (err) {
|
|
30107
|
+
_iterator.e(err);
|
|
30108
|
+
} finally {
|
|
30109
|
+
_iterator.f();
|
|
30110
|
+
}
|
|
30111
|
+
function getGrokNamesFor(tab) {
|
|
30112
|
+
if (tab === 'all') return _toConsumableArray(GROK_NAMES);
|
|
30113
|
+
if (GROK_CATEGORIES.some(function (category) {
|
|
30114
|
+
return category.key === tab;
|
|
30115
|
+
})) {
|
|
30116
|
+
return GROK_NAMES.filter(function (name) {
|
|
30117
|
+
return GROK_STATE_META[name].category === tab;
|
|
30118
|
+
});
|
|
30119
|
+
}
|
|
30120
|
+
return _toConsumableArray(GROK_NAMES);
|
|
30121
|
+
}
|
|
30122
|
+
|
|
30123
|
+
/** Get a single state's metadata (label included). Throws on unknown names. */
|
|
30124
|
+
function getGrokStateMeta(name) {
|
|
30125
|
+
var normalized = String(name || '').trim().toLowerCase();
|
|
30126
|
+
var meta = GROK_STATE_META[normalized];
|
|
30127
|
+
if (!meta) throw new Error("Unknown grok state: ".concat(normalized));
|
|
30128
|
+
return _objectSpread2({}, meta);
|
|
30129
|
+
}
|
|
30130
|
+
|
|
29895
30131
|
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']];
|
|
29896
30132
|
var EMO_CATEGORIES = {
|
|
29897
30133
|
negative: '负面情绪',
|
|
@@ -29899,9 +30135,20 @@
|
|
|
29899
30135
|
physical: '身体与特殊状态',
|
|
29900
30136
|
positive: '正面情绪',
|
|
29901
30137
|
social: '社交情境',
|
|
29902
|
-
reaction: '惊讶与反应'
|
|
30138
|
+
reaction: '惊讶与反应',
|
|
30139
|
+
lifecycle: '生命周期',
|
|
30140
|
+
emotion: '情绪反应',
|
|
30141
|
+
agent: '代理形态',
|
|
30142
|
+
product: '产品流程'
|
|
29903
30143
|
};
|
|
29904
|
-
var
|
|
30144
|
+
var GROK_META = GROK_NAMES.map(function (name) {
|
|
30145
|
+
return {
|
|
30146
|
+
name: name,
|
|
30147
|
+
label: GROK_STATE_META[name].label,
|
|
30148
|
+
category: GROK_STATE_META[name].category
|
|
30149
|
+
};
|
|
30150
|
+
});
|
|
30151
|
+
var EMO_PRESETS = [].concat(_toConsumableArray(MIAO_META.map(function (_ref) {
|
|
29905
30152
|
var _ref2 = _slicedToArray(_ref, 3),
|
|
29906
30153
|
name = _ref2[0],
|
|
29907
30154
|
label = _ref2[1],
|
|
@@ -29913,10 +30160,24 @@
|
|
|
29913
30160
|
category: category,
|
|
29914
30161
|
width: MIAO_ANIMATIONS[name].w,
|
|
29915
30162
|
height: MIAO_ANIMATIONS[name].h,
|
|
30163
|
+
engine: 'lottie',
|
|
29916
30164
|
frames: MIAO_ANIMATIONS[name].op - MIAO_ANIMATIONS[name].ip,
|
|
29917
30165
|
fps: MIAO_ANIMATIONS[name].fr
|
|
29918
30166
|
};
|
|
29919
|
-
})
|
|
30167
|
+
})), _toConsumableArray(GROK_META.map(function (_ref3) {
|
|
30168
|
+
var name = _ref3.name,
|
|
30169
|
+
label = _ref3.label,
|
|
30170
|
+
category = _ref3.category;
|
|
30171
|
+
return {
|
|
30172
|
+
type: 'grok',
|
|
30173
|
+
name: name,
|
|
30174
|
+
label: label,
|
|
30175
|
+
category: category,
|
|
30176
|
+
width: 229,
|
|
30177
|
+
height: 229,
|
|
30178
|
+
engine: 'grok'
|
|
30179
|
+
};
|
|
30180
|
+
})));
|
|
29920
30181
|
var MIAO_PART_KEYS = Object.values(MIAO_ANIMATIONS).reduce(function (acc, data) {
|
|
29921
30182
|
var metadata = data.miao && data.miao.partColors;
|
|
29922
30183
|
if (metadata) for (var _i = 0, _Object$keys = Object.keys(metadata); _i < _Object$keys.length; _i++) {
|
|
@@ -29925,14 +30186,35 @@
|
|
|
29925
30186
|
}
|
|
29926
30187
|
return acc;
|
|
29927
30188
|
}, new Set());
|
|
30189
|
+
var GROK_SHAPE_KEYS = ['blob', 'pebble', 'squircle', 'capsule', 'triangle', 'hex', 'cloud', 'drop'];
|
|
29928
30190
|
var EMO_TYPES = [{
|
|
29929
30191
|
type: 'miao',
|
|
29930
30192
|
label: '喵',
|
|
29931
|
-
|
|
30193
|
+
defaultName: 'smile',
|
|
30194
|
+
engine: 'lottie',
|
|
30195
|
+
names: EMO_PRESETS.filter(function (item) {
|
|
30196
|
+
return item.type === 'miao';
|
|
30197
|
+
}).map(function (item) {
|
|
29932
30198
|
return item.name;
|
|
29933
30199
|
}),
|
|
29934
30200
|
partColors: _toConsumableArray(MIAO_PART_KEYS).sort()
|
|
30201
|
+
}, {
|
|
30202
|
+
type: 'grok',
|
|
30203
|
+
label: 'Grok',
|
|
30204
|
+
defaultName: 'idle',
|
|
30205
|
+
engine: 'grok',
|
|
30206
|
+
names: GROK_NAMES,
|
|
30207
|
+
partColors: ['body', 'eyes'],
|
|
30208
|
+
shapes: GROK_SHAPE_KEYS
|
|
29935
30209
|
}];
|
|
30210
|
+
function getEmoType(type) {
|
|
30211
|
+
var normalizedType = String(type || '').trim().toLowerCase();
|
|
30212
|
+
var definition = EMO_TYPES.find(function (item) {
|
|
30213
|
+
return item.type === normalizedType;
|
|
30214
|
+
});
|
|
30215
|
+
if (!definition) throw new Error("Unknown emo type: ".concat(normalizedType));
|
|
30216
|
+
return definition;
|
|
30217
|
+
}
|
|
29936
30218
|
function getEmoPreset() {
|
|
29937
30219
|
var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'miao';
|
|
29938
30220
|
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'smile';
|
|
@@ -29952,8 +30234,6 @@
|
|
|
29952
30234
|
throw new Error("Unsupported emo type: ".concat(preset.type));
|
|
29953
30235
|
}
|
|
29954
30236
|
|
|
29955
|
-
var SPEED_MIN = 0.1;
|
|
29956
|
-
var SPEED_MAX = 4;
|
|
29957
30237
|
var defaultPlayerPromises = {};
|
|
29958
30238
|
function loadDefaultPlayer(renderer) {
|
|
29959
30239
|
var key = renderer === 'canvas' ? 'canvas' : 'svg';
|
|
@@ -29968,27 +30248,6 @@
|
|
|
29968
30248
|
function cloneAnimationData(data) {
|
|
29969
30249
|
return JSON.parse(JSON.stringify(data));
|
|
29970
30250
|
}
|
|
29971
|
-
function normalizeSpeed(value) {
|
|
29972
|
-
var number = Number(value);
|
|
29973
|
-
if (!Number.isFinite(number)) return 1;
|
|
29974
|
-
return Math.min(SPEED_MAX, Math.max(SPEED_MIN, number));
|
|
29975
|
-
}
|
|
29976
|
-
function normalizeOpacity(value) {
|
|
29977
|
-
var number = Number(value);
|
|
29978
|
-
if (!Number.isFinite(number)) return 1;
|
|
29979
|
-
return Math.min(1, Math.max(0, number));
|
|
29980
|
-
}
|
|
29981
|
-
function normalizeDirection(value) {
|
|
29982
|
-
return value === -1 || value === 'reverse' ? -1 : 1;
|
|
29983
|
-
}
|
|
29984
|
-
function normalizeRenderer(value) {
|
|
29985
|
-
return value === 'canvas' ? 'canvas' : 'svg';
|
|
29986
|
-
}
|
|
29987
|
-
function normalizeFit(value) {
|
|
29988
|
-
if (value === 'cover') return 'cover';
|
|
29989
|
-
if (value === 'fill' || value === 'stretch' || value === 'none') return 'fill';
|
|
29990
|
-
return 'contain';
|
|
29991
|
-
}
|
|
29992
30251
|
function normalizeSegment(value, preset) {
|
|
29993
30252
|
if (!Array.isArray(value) || value.length !== 2) return null;
|
|
29994
30253
|
var start = Number(value[0]);
|
|
@@ -30001,10 +30260,10 @@
|
|
|
30001
30260
|
});
|
|
30002
30261
|
}
|
|
30003
30262
|
|
|
30004
|
-
/**
|
|
30005
|
-
* Build a map of `paint.*` layer names → replacement rgb(0..1) tuples from the
|
|
30006
|
-
* partColors option and the animation's embedded `miao.partColors` metadata.
|
|
30007
|
-
* Keys not supported by the current animation are ignored.
|
|
30263
|
+
/**
|
|
30264
|
+
* Build a map of `paint.*` layer names → replacement rgb(0..1) tuples from the
|
|
30265
|
+
* partColors option and the animation's embedded `miao.partColors` metadata.
|
|
30266
|
+
* Keys not supported by the current animation are ignored.
|
|
30008
30267
|
*/
|
|
30009
30268
|
function buildPaintReplacements(animationData, partColors) {
|
|
30010
30269
|
var replacements = {};
|
|
@@ -30046,9 +30305,9 @@
|
|
|
30046
30305
|
}
|
|
30047
30306
|
}
|
|
30048
30307
|
|
|
30049
|
-
/**
|
|
30050
|
-
* Recursively replace every fill/stroke named `paint.<part>` (top-level layers
|
|
30051
|
-
* and precomp assets alike). Nodes without a matching paint name are untouched.
|
|
30308
|
+
/**
|
|
30309
|
+
* Recursively replace every fill/stroke named `paint.<part>` (top-level layers
|
|
30310
|
+
* and precomp assets alike). Nodes without a matching paint name are untouched.
|
|
30052
30311
|
*/
|
|
30053
30312
|
function applyPartColors(node, replacements) {
|
|
30054
30313
|
if (!node || _typeof(node) !== 'object') return;
|
|
@@ -30064,61 +30323,18 @@
|
|
|
30064
30323
|
}
|
|
30065
30324
|
}
|
|
30066
30325
|
|
|
30067
|
-
/**
|
|
30068
|
-
|
|
30069
|
-
|
|
30070
|
-
|
|
30071
|
-
|
|
30072
|
-
|
|
30073
|
-
|
|
30074
|
-
var
|
|
30075
|
-
|
|
30076
|
-
|
|
30077
|
-
var height = options.height === undefined ? 160 : options.height;
|
|
30078
|
-
var speed = normalizeSpeed(options.speed);
|
|
30079
|
-
var loop = options.loop !== false;
|
|
30080
|
-
var autoplay = options.autoplay !== false;
|
|
30081
|
-
var direction = normalizeDirection(options.direction);
|
|
30082
|
-
var opacity = normalizeOpacity(options.opacity);
|
|
30083
|
-
var fit = normalizeFit(options.fit);
|
|
30084
|
-
var renderer = normalizeRenderer(options.renderer);
|
|
30085
|
-
var paused = options.paused === true;
|
|
30086
|
-
var reducedMotion = false;
|
|
30087
|
-
var segment = normalizeSegment(options.segment, preset);
|
|
30088
|
-
var partColors = options.partColors && _typeof(options.partColors) === 'object' ? _objectSpread2({}, options.partColors) : {};
|
|
30089
|
-
var background = options.background == null ? 'transparent' : String(options.background);
|
|
30090
|
-
var label = typeof options.label === 'string' && options.label ? options.label : null;
|
|
30091
|
-
var disposed = false;
|
|
30326
|
+
/**
|
|
30327
|
+
* @param {object} env
|
|
30328
|
+
* @param {HTMLElement} env.stage lottie container
|
|
30329
|
+
* @param {object} env.s live facade state (preset/speed/loop/autoplay/...)
|
|
30330
|
+
* @param {object} env.emitter event bus
|
|
30331
|
+
*/
|
|
30332
|
+
function createMiaoRenderer(_ref) {
|
|
30333
|
+
var stage = _ref.stage,
|
|
30334
|
+
s = _ref.s,
|
|
30335
|
+
emitter = _ref.emitter;
|
|
30092
30336
|
var animation = null;
|
|
30093
|
-
var
|
|
30094
|
-
var emitter = createEmitter();
|
|
30095
|
-
var motionPreference = createReducedMotionPreference(options.respectReducedMotion !== false, function (matches) {
|
|
30096
|
-
reducedMotion = matches;
|
|
30097
|
-
if (disposed) return;
|
|
30098
|
-
updateRoot();
|
|
30099
|
-
if (!animation) return;
|
|
30100
|
-
if (paused || reducedMotion || !autoplay) animation.pause();else animation.play();
|
|
30101
|
-
});
|
|
30102
|
-
reducedMotion = motionPreference.matches();
|
|
30103
|
-
var root = document.createElement('div');
|
|
30104
|
-
root.className = 'dlc-emo-root';
|
|
30105
|
-
root.setAttribute('role', 'img');
|
|
30106
|
-
var stage = document.createElement('div');
|
|
30107
|
-
stage.className = 'dlc-emo-stage';
|
|
30108
|
-
root.appendChild(stage);
|
|
30109
|
-
container.appendChild(root);
|
|
30110
|
-
var updateRoot = function updateRoot() {
|
|
30111
|
-
root.style.width = parseSize(width);
|
|
30112
|
-
root.style.height = parseSize(height);
|
|
30113
|
-
root.style.setProperty('--dlc-emo-opacity', String(opacity));
|
|
30114
|
-
root.style.setProperty('--dlc-emo-background', background);
|
|
30115
|
-
root.dataset.type = preset.type;
|
|
30116
|
-
root.dataset.name = preset.name;
|
|
30117
|
-
root.dataset.fit = fit;
|
|
30118
|
-
root.dataset.renderer = renderer;
|
|
30119
|
-
root.dataset.paused = String(paused || reducedMotion);
|
|
30120
|
-
root.setAttribute('aria-label', label || "".concat(preset.label, "\u8868\u60C5\u52A8\u753B"));
|
|
30121
|
-
};
|
|
30337
|
+
var disposed = false;
|
|
30122
30338
|
var removeAnimationEvents = function removeAnimationEvents() {
|
|
30123
30339
|
if (!animation || !animation.__dlcHandlers) return;
|
|
30124
30340
|
var _iterator2 = _createForOfIteratorHelper(animation.__dlcHandlers),
|
|
@@ -30137,15 +30353,14 @@
|
|
|
30137
30353
|
}
|
|
30138
30354
|
animation.__dlcHandlers = null;
|
|
30139
30355
|
};
|
|
30140
|
-
var
|
|
30356
|
+
var destroy = function destroy() {
|
|
30141
30357
|
if (!animation) return;
|
|
30142
30358
|
removeAnimationEvents();
|
|
30143
30359
|
animation.destroy();
|
|
30144
30360
|
animation = null;
|
|
30145
|
-
stage.innerHTML = '';
|
|
30146
30361
|
};
|
|
30147
|
-
var attachAnimation = function attachAnimation(player, animationData
|
|
30148
|
-
if (disposed
|
|
30362
|
+
var attachAnimation = function attachAnimation(player, animationData) {
|
|
30363
|
+
if (disposed) return;
|
|
30149
30364
|
if (!player || typeof player.loadAnimation !== 'function') {
|
|
30150
30365
|
emitter.emit('error', {
|
|
30151
30366
|
message: 'createEmo: lottie-web player is unavailable'
|
|
@@ -30155,49 +30370,49 @@
|
|
|
30155
30370
|
try {
|
|
30156
30371
|
animation = player.loadAnimation({
|
|
30157
30372
|
container: stage,
|
|
30158
|
-
renderer: renderer,
|
|
30159
|
-
loop: loop,
|
|
30373
|
+
renderer: s.renderer,
|
|
30374
|
+
loop: s.loop,
|
|
30160
30375
|
autoplay: false,
|
|
30161
|
-
name:
|
|
30376
|
+
name: s.instanceName || "dlc-emo-".concat(s.preset.type, "-").concat(s.preset.name),
|
|
30162
30377
|
animationData: animationData,
|
|
30163
30378
|
rendererSettings: {
|
|
30164
|
-
preserveAspectRatio: fit === 'cover' ? 'xMidYMid slice' : fit === 'fill' ? 'none' : 'xMidYMid meet',
|
|
30379
|
+
preserveAspectRatio: s.fit === 'cover' ? 'xMidYMid slice' : s.fit === 'fill' ? 'none' : 'xMidYMid meet',
|
|
30165
30380
|
progressiveLoad: false,
|
|
30166
30381
|
runExpressions: false,
|
|
30167
|
-
title: label || "".concat(preset.label, "\u8868\u60C5\u52A8\u753B"),
|
|
30168
|
-
description: "".concat(preset.type, "/").concat(preset.name)
|
|
30382
|
+
title: s.label || "".concat(s.preset.label, "\u8868\u60C5\u52A8\u753B"),
|
|
30383
|
+
description: "".concat(s.preset.type, "/").concat(s.preset.name)
|
|
30169
30384
|
}
|
|
30170
30385
|
});
|
|
30171
30386
|
var handlers = [['DOMLoaded', function () {
|
|
30172
|
-
if (disposed
|
|
30387
|
+
if (disposed) return;
|
|
30173
30388
|
applyPlayback();
|
|
30174
30389
|
emitter.emit('ready', {
|
|
30175
|
-
preset: _objectSpread2({}, preset),
|
|
30390
|
+
preset: _objectSpread2({}, s.preset),
|
|
30176
30391
|
duration: animation.getDuration(false),
|
|
30177
|
-
frames: preset.frames
|
|
30392
|
+
frames: s.preset.frames
|
|
30178
30393
|
});
|
|
30179
30394
|
}], ['complete', function () {
|
|
30180
30395
|
return emitter.emit('complete', {
|
|
30181
|
-
preset: _objectSpread2({}, preset)
|
|
30396
|
+
preset: _objectSpread2({}, s.preset)
|
|
30182
30397
|
});
|
|
30183
30398
|
}], ['loopComplete', function () {
|
|
30184
30399
|
return emitter.emit('loopComplete', {
|
|
30185
|
-
preset: _objectSpread2({}, preset)
|
|
30400
|
+
preset: _objectSpread2({}, s.preset)
|
|
30186
30401
|
});
|
|
30187
30402
|
}], ['segmentStart', function () {
|
|
30188
30403
|
return emitter.emit('segmentStart', {
|
|
30189
|
-
segment: segment ? _toConsumableArray(segment) : null
|
|
30404
|
+
segment: s.segment ? _toConsumableArray(s.segment) : null
|
|
30190
30405
|
});
|
|
30191
30406
|
}], ['data_failed', function () {
|
|
30192
30407
|
return emitter.emit('error', {
|
|
30193
|
-
message: "Failed to load emo: ".concat(preset.type, "/").concat(preset.name)
|
|
30408
|
+
message: "Failed to load emo: ".concat(s.preset.type, "/").concat(s.preset.name)
|
|
30194
30409
|
});
|
|
30195
30410
|
}]];
|
|
30196
30411
|
animation.__dlcHandlers = handlers;
|
|
30197
|
-
handlers.forEach(function (
|
|
30198
|
-
var
|
|
30199
|
-
event =
|
|
30200
|
-
handler =
|
|
30412
|
+
handlers.forEach(function (_ref2) {
|
|
30413
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
30414
|
+
event = _ref3[0],
|
|
30415
|
+
handler = _ref3[1];
|
|
30201
30416
|
return animation.addEventListener(event, handler);
|
|
30202
30417
|
});
|
|
30203
30418
|
} catch (error) {
|
|
@@ -30208,191 +30423,758 @@
|
|
|
30208
30423
|
};
|
|
30209
30424
|
var applyPlayback = function applyPlayback() {
|
|
30210
30425
|
if (!animation) return;
|
|
30211
|
-
animation.setSpeed(speed);
|
|
30212
|
-
animation.setDirection(direction);
|
|
30213
|
-
if (segment) {
|
|
30214
|
-
animation.playSegments(segment, true);
|
|
30215
|
-
if (direction < 0) animation.goToAndStop(segment[1], true);else animation.goToAndStop(segment[0], true);
|
|
30216
|
-
} else if (direction < 0) {
|
|
30217
|
-
animation.goToAndStop(Math.max(0, preset.frames - 1), true);
|
|
30426
|
+
animation.setSpeed(s.speed);
|
|
30427
|
+
animation.setDirection(s.direction);
|
|
30428
|
+
if (s.segment) {
|
|
30429
|
+
animation.playSegments(s.segment, true);
|
|
30430
|
+
if (s.direction < 0) animation.goToAndStop(s.segment[1], true);else animation.goToAndStop(s.segment[0], true);
|
|
30431
|
+
} else if (s.direction < 0) {
|
|
30432
|
+
animation.goToAndStop(Math.max(0, s.preset.frames - 1), true);
|
|
30218
30433
|
}
|
|
30219
|
-
if (paused || reducedMotion || !autoplay) animation.pause();else animation.play();
|
|
30434
|
+
if (s.paused || s.reducedMotion || !s.autoplay) animation.pause();else animation.play();
|
|
30220
30435
|
};
|
|
30221
|
-
|
|
30222
|
-
|
|
30223
|
-
|
|
30224
|
-
|
|
30225
|
-
|
|
30226
|
-
|
|
30227
|
-
|
|
30228
|
-
|
|
30229
|
-
|
|
30230
|
-
|
|
30231
|
-
|
|
30232
|
-
|
|
30233
|
-
|
|
30234
|
-
message: String(error && error.message ? error.message : error)
|
|
30436
|
+
return {
|
|
30437
|
+
get animation() {
|
|
30438
|
+
return animation;
|
|
30439
|
+
},
|
|
30440
|
+
mount: function mount() {
|
|
30441
|
+
var animationData = cloneAnimationData(getEmoAnimation(s.preset.type, s.preset.name));
|
|
30442
|
+
applyPartColors(animationData, buildPaintReplacements(animationData, s.partColors));
|
|
30443
|
+
if (s.player) attachAnimation(s.player, animationData);else loadDefaultPlayer(s.renderer).then(function (player) {
|
|
30444
|
+
return attachAnimation(player, animationData);
|
|
30445
|
+
}).catch(function (error) {
|
|
30446
|
+
return emitter.emit('error', {
|
|
30447
|
+
message: String(error && error.message ? error.message : error)
|
|
30448
|
+
});
|
|
30235
30449
|
});
|
|
30450
|
+
},
|
|
30451
|
+
play: function play() {
|
|
30452
|
+
if (animation && !s.reducedMotion) animation.play();
|
|
30453
|
+
},
|
|
30454
|
+
pause: function pause() {
|
|
30455
|
+
if (animation) animation.pause();
|
|
30456
|
+
},
|
|
30457
|
+
stop: function stop() {
|
|
30458
|
+
if (animation) animation.stop();
|
|
30459
|
+
},
|
|
30460
|
+
setPaused: function setPaused(value) {
|
|
30461
|
+
return value ? this.pause() : this.play();
|
|
30462
|
+
},
|
|
30463
|
+
setSpeed: function setSpeed(value) {
|
|
30464
|
+
if (animation) animation.setSpeed(value);
|
|
30465
|
+
},
|
|
30466
|
+
setDirection: function setDirection(value) {
|
|
30467
|
+
if (!animation) return;
|
|
30468
|
+
animation.setDirection(value);
|
|
30469
|
+
if (value < 0 && animation.currentFrame <= 0) {
|
|
30470
|
+
animation.goToAndStop(s.segment ? s.segment[1] : s.preset.frames - 1, true);
|
|
30471
|
+
}
|
|
30472
|
+
},
|
|
30473
|
+
setSegment: function setSegment(value) {
|
|
30474
|
+
applyPlayback();
|
|
30475
|
+
},
|
|
30476
|
+
setShape: function setShape() {},
|
|
30477
|
+
setInteractive: function setInteractive() {},
|
|
30478
|
+
dispose: function dispose() {
|
|
30479
|
+
if (disposed) return;
|
|
30480
|
+
disposed = true;
|
|
30481
|
+
destroy();
|
|
30482
|
+
stage.innerHTML = '';
|
|
30483
|
+
}
|
|
30484
|
+
};
|
|
30485
|
+
}
|
|
30486
|
+
|
|
30487
|
+
var SVG_NS = 'http://www.w3.org/2000/svg';
|
|
30488
|
+
var EYE_CX = 114.2705;
|
|
30489
|
+
var EYE_R = 105;
|
|
30490
|
+
var BLINK_MS = 320;
|
|
30491
|
+
var MOTION_MS = 1100;
|
|
30492
|
+
var SPRING_STIFFNESS = 49;
|
|
30493
|
+
var DEFAULT_BODY = '#2f86ed';
|
|
30494
|
+
var DEFAULT_EYES = '#fffdf7';
|
|
30495
|
+
var clipCounter = 0;
|
|
30496
|
+
var MOTION_GROUPS = {
|
|
30497
|
+
bounce: ['happy'],
|
|
30498
|
+
tilt: ['listening', 'thinking', 'confused'],
|
|
30499
|
+
scan: ['searching', 'working'],
|
|
30500
|
+
turn: ['receiving'],
|
|
30501
|
+
pulse: ['sleeping', 'loading']
|
|
30502
|
+
};
|
|
30503
|
+
var MOTION_DURATIONS = {
|
|
30504
|
+
bounce: 0.85,
|
|
30505
|
+
tilt: 0.8,
|
|
30506
|
+
scan: 0.8,
|
|
30507
|
+
turn: 0.9,
|
|
30508
|
+
pulse: 0.9,
|
|
30509
|
+
glitch: 0.55
|
|
30510
|
+
};
|
|
30511
|
+
var MOTION_CLASSES = [].concat(_toConsumableArray(Object.keys(MOTION_GROUPS)), ['glitch']).map(function (name) {
|
|
30512
|
+
return "act-".concat(name);
|
|
30513
|
+
});
|
|
30514
|
+
function clamp(value, min, max) {
|
|
30515
|
+
return Math.max(min, Math.min(max, value));
|
|
30516
|
+
}
|
|
30517
|
+
function pathFromRing(ring) {
|
|
30518
|
+
return 'M' + ring.map(function (point) {
|
|
30519
|
+
return "".concat(point[0].toFixed(2), " ").concat(point[1].toFixed(2));
|
|
30520
|
+
}).join('L') + 'Z';
|
|
30521
|
+
}
|
|
30522
|
+
function ringCentroid(ring) {
|
|
30523
|
+
return ring.reduce(function (acc, point) {
|
|
30524
|
+
return [acc[0] + point[0] / ring.length, acc[1] + point[1] / ring.length];
|
|
30525
|
+
}, [0, 0]);
|
|
30526
|
+
}
|
|
30527
|
+
function randomBetween(range) {
|
|
30528
|
+
return range[0] + Math.random() * (range[1] - range[0]);
|
|
30529
|
+
}
|
|
30530
|
+
|
|
30531
|
+
/**
|
|
30532
|
+
* @param {object} env
|
|
30533
|
+
* @param {HTMLElement} env.stage SVG container
|
|
30534
|
+
* @param {object} env.s live facade state (preset/name/shape/interactive/speed/...)
|
|
30535
|
+
* @param {object} env.emitter event bus
|
|
30536
|
+
*/
|
|
30537
|
+
function createGrokRenderer(_ref) {
|
|
30538
|
+
var stage = _ref.stage,
|
|
30539
|
+
s = _ref.s,
|
|
30540
|
+
emitter = _ref.emitter;
|
|
30541
|
+
var disposed = false;
|
|
30542
|
+
var unsubscribe = null;
|
|
30543
|
+
var visibility = null;
|
|
30544
|
+
var _detachPointer = null;
|
|
30545
|
+
var svg = document.createElementNS(SVG_NS, 'svg');
|
|
30546
|
+
svg.setAttribute('class', 'dlc-grok');
|
|
30547
|
+
svg.setAttribute('viewBox', '-28 -28 285 285');
|
|
30548
|
+
svg.setAttribute('role', 'img');
|
|
30549
|
+
svg.setAttribute('preserveAspectRatio', s.fit === 'cover' ? 'xMidYMid slice' : s.fit === 'fill' ? 'none' : 'xMidYMid meet');
|
|
30550
|
+
var body = document.createElementNS(SVG_NS, 'path');
|
|
30551
|
+
body.setAttribute('class', 'dlc-grok__body');
|
|
30552
|
+
var defs = document.createElementNS(SVG_NS, 'defs');
|
|
30553
|
+
var clipPath = document.createElementNS(SVG_NS, 'clipPath');
|
|
30554
|
+
var clipId = "dlc-grok-clip-".concat(clipCounter++);
|
|
30555
|
+
clipPath.setAttribute('id', clipId);
|
|
30556
|
+
var clipShape = document.createElementNS(SVG_NS, 'path');
|
|
30557
|
+
clipPath.appendChild(clipShape);
|
|
30558
|
+
defs.appendChild(clipPath);
|
|
30559
|
+
var eyesGroup = document.createElementNS(SVG_NS, 'g');
|
|
30560
|
+
eyesGroup.setAttribute('class', 'dlc-grok__eyes');
|
|
30561
|
+
eyesGroup.setAttribute('clip-path', "url(#".concat(clipId, ")"));
|
|
30562
|
+
var eyes = [0, 1].map(function () {
|
|
30563
|
+
var path = document.createElementNS(SVG_NS, 'path');
|
|
30564
|
+
path.setAttribute('class', 'dlc-grok__eye');
|
|
30565
|
+
eyesGroup.appendChild(path);
|
|
30566
|
+
return path;
|
|
30567
|
+
});
|
|
30568
|
+
svg.appendChild(defs);
|
|
30569
|
+
svg.appendChild(body);
|
|
30570
|
+
svg.appendChild(eyesGroup);
|
|
30571
|
+
stage.appendChild(svg);
|
|
30572
|
+
var current = GROK_EXPRESSIONS[0].map(function (ring) {
|
|
30573
|
+
return ring.map(function (point) {
|
|
30574
|
+
return _toConsumableArray(point);
|
|
30575
|
+
});
|
|
30576
|
+
});
|
|
30577
|
+
var target = GROK_EXPRESSIONS[0];
|
|
30578
|
+
var expression = 0;
|
|
30579
|
+
var morph = 1;
|
|
30580
|
+
var velocity = 0;
|
|
30581
|
+
var blinkStart = 0;
|
|
30582
|
+
var blinkTimer = 0;
|
|
30583
|
+
var exprTimer = 0;
|
|
30584
|
+
var gazeX = 0;
|
|
30585
|
+
var gazeY = 0;
|
|
30586
|
+
var motionUntil = 0;
|
|
30587
|
+
var motionClass = null;
|
|
30588
|
+
var applyBodyShape = function applyBodyShape() {
|
|
30589
|
+
var shape = GROK_SHAPES[s.shape] || GROK_SHAPES.blob;
|
|
30590
|
+
body.setAttribute('d', shape.d);
|
|
30591
|
+
clipShape.setAttribute('d', shape.d);
|
|
30592
|
+
};
|
|
30593
|
+
var applyColors = function applyColors() {
|
|
30594
|
+
var resolve = function resolve(value, fallback) {
|
|
30595
|
+
var hex = normalizeColor(value);
|
|
30596
|
+
return hex || fallback;
|
|
30597
|
+
};
|
|
30598
|
+
// 用 inline style 而不是 presentation attribute:emo.css 里
|
|
30599
|
+
// .dlc-grok__body / .dlc-grok__eye 的 fill 规则优先级更高,attribute 会被覆盖。
|
|
30600
|
+
body.style.fill = resolve(s.partColors.body, DEFAULT_BODY);
|
|
30601
|
+
eyes.forEach(function (path) {
|
|
30602
|
+
path.style.fill = resolve(s.partColors.eyes, DEFAULT_EYES);
|
|
30603
|
+
});
|
|
30604
|
+
};
|
|
30605
|
+
var rings = function rings() {
|
|
30606
|
+
return current.map(function (ring, eye) {
|
|
30607
|
+
return ring.map(function (point, i) {
|
|
30608
|
+
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)];
|
|
30609
|
+
});
|
|
30610
|
+
});
|
|
30611
|
+
};
|
|
30612
|
+
var chooseExpression = function chooseExpression(index) {
|
|
30613
|
+
current = rings();
|
|
30614
|
+
target = GROK_EXPRESSIONS[index];
|
|
30615
|
+
expression = index;
|
|
30616
|
+
morph = 0;
|
|
30617
|
+
velocity = 0;
|
|
30618
|
+
};
|
|
30619
|
+
var setExpression = function setExpression(index) {
|
|
30620
|
+
current = GROK_EXPRESSIONS[index].map(function (ring) {
|
|
30621
|
+
return ring.map(function (point) {
|
|
30622
|
+
return _toConsumableArray(point);
|
|
30623
|
+
});
|
|
30624
|
+
});
|
|
30625
|
+
target = GROK_EXPRESSIONS[index];
|
|
30626
|
+
expression = index;
|
|
30627
|
+
morph = 1;
|
|
30628
|
+
velocity = 0;
|
|
30629
|
+
};
|
|
30630
|
+
var blinkScale = function blinkScale(now) {
|
|
30631
|
+
if (!blinkStart) return 1;
|
|
30632
|
+
var t = (now - blinkStart) / (BLINK_MS / s.speed);
|
|
30633
|
+
if (t >= 1) {
|
|
30634
|
+
blinkStart = 0;
|
|
30635
|
+
return 1;
|
|
30636
|
+
}
|
|
30637
|
+
return Math.max(t < 0.42 ? 1 - t / 0.42 : (t - 0.42) / 0.58, 0.04);
|
|
30638
|
+
};
|
|
30639
|
+
var renderEyes = function renderEyes(now) {
|
|
30640
|
+
var shown = rings();
|
|
30641
|
+
var blink = blinkScale(now);
|
|
30642
|
+
shown.forEach(function (ring, i) {
|
|
30643
|
+
var center = ringCentroid(ring);
|
|
30644
|
+
var base = Math.asin(clamp((center[0] - EYE_CX) / EYE_R, -1, 1));
|
|
30645
|
+
var depth = Math.cos(base);
|
|
30646
|
+
var perspective = Math.max(depth, 0.02) / Math.max(Math.cos(base), 0.02);
|
|
30647
|
+
var x = EYE_CX + EYE_R * Math.sin(base) + gazeX;
|
|
30648
|
+
var y = center[1] + gazeY;
|
|
30649
|
+
eyes[i].setAttribute('d', pathFromRing(ring));
|
|
30650
|
+
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], ")"));
|
|
30651
|
+
eyes[i].style.opacity = depth > 0.02 ? '1' : '0';
|
|
30652
|
+
});
|
|
30653
|
+
};
|
|
30654
|
+
var motionClassFor = function motionClassFor(name) {
|
|
30655
|
+
for (var _i = 0, _Object$entries = Object.entries(MOTION_GROUPS); _i < _Object$entries.length; _i++) {
|
|
30656
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
30657
|
+
className = _Object$entries$_i[0],
|
|
30658
|
+
states = _Object$entries$_i[1];
|
|
30659
|
+
if (states.includes(name)) return className;
|
|
30660
|
+
}
|
|
30661
|
+
return 'glitch';
|
|
30662
|
+
};
|
|
30663
|
+
var applyBodyMotion = function applyBodyMotion() {
|
|
30664
|
+
var _svg$classList;
|
|
30665
|
+
var className = motionClassFor(s.preset.name);
|
|
30666
|
+
(_svg$classList = svg.classList).remove.apply(_svg$classList, _toConsumableArray(MOTION_CLASSES));
|
|
30667
|
+
svg.classList.add("act-".concat(className));
|
|
30668
|
+
svg.style.animationDuration = "".concat(MOTION_DURATIONS[className] / s.speed, "s");
|
|
30669
|
+
svg.style.animationPlayState = s.paused || s.reducedMotion || !s.autoplay ? 'paused' : 'running';
|
|
30670
|
+
motionClass = className;
|
|
30671
|
+
motionUntil = 0;
|
|
30672
|
+
};
|
|
30673
|
+
var scheduleExpression = function scheduleExpression() {
|
|
30674
|
+
var cadence = GROK_EXPR_CADENCE[s.preset.name];
|
|
30675
|
+
exprTimer = cadence && s.loop ? randomBetween(cadence) : 0;
|
|
30676
|
+
};
|
|
30677
|
+
var scheduleBlink = function scheduleBlink() {
|
|
30678
|
+
var cadence = GROK_BLINK[s.preset.name];
|
|
30679
|
+
blinkTimer = cadence ? randomBetween(cadence) : 0;
|
|
30680
|
+
};
|
|
30681
|
+
var onFrame = function onFrame(delta, now) {
|
|
30682
|
+
if (disposed || s.paused || s.reducedMotion || !s.autoplay) return;
|
|
30683
|
+
if (exprTimer > 0) {
|
|
30684
|
+
exprTimer -= delta * 1000 * s.speed;
|
|
30685
|
+
if (exprTimer <= 0) {
|
|
30686
|
+
var pool = GROK_POOLS[s.preset.name] || [expression];
|
|
30687
|
+
chooseExpression(pool[Math.floor(Math.random() * pool.length)]);
|
|
30688
|
+
scheduleExpression();
|
|
30689
|
+
}
|
|
30690
|
+
}
|
|
30691
|
+
if (blinkTimer > 0) {
|
|
30692
|
+
blinkTimer -= delta * 1000 * s.speed;
|
|
30693
|
+
if (blinkTimer <= 0) {
|
|
30694
|
+
blinkStart = now;
|
|
30695
|
+
scheduleBlink();
|
|
30696
|
+
}
|
|
30697
|
+
}
|
|
30698
|
+
if (motionClass) {
|
|
30699
|
+
if (motionUntil === 0) motionUntil = now + MOTION_MS / s.speed;else if (now >= motionUntil) {
|
|
30700
|
+
svg.classList.remove("act-".concat(motionClass));
|
|
30701
|
+
motionClass = null;
|
|
30702
|
+
}
|
|
30703
|
+
}
|
|
30704
|
+
var step = Math.min(delta * s.speed, 0.1);
|
|
30705
|
+
velocity += (-14 * velocity - SPRING_STIFFNESS * (morph - 1)) * step;
|
|
30706
|
+
morph += velocity * step;
|
|
30707
|
+
if (!Number.isFinite(morph)) {
|
|
30708
|
+
morph = 1;
|
|
30709
|
+
velocity = 0;
|
|
30710
|
+
}
|
|
30711
|
+
renderEyes(now);
|
|
30712
|
+
};
|
|
30713
|
+
var renderInitial = function renderInitial() {
|
|
30714
|
+
var pool = GROK_POOLS[s.preset.name] || [0];
|
|
30715
|
+
setExpression(pool[0]);
|
|
30716
|
+
renderEyes(0);
|
|
30717
|
+
};
|
|
30718
|
+
var onPointerMove = function onPointerMove(event) {
|
|
30719
|
+
var rect = stage.getBoundingClientRect();
|
|
30720
|
+
gazeX = clamp((event.clientX - rect.left) / rect.width * 2 - 1, -0.6, 0.6) * 22;
|
|
30721
|
+
gazeY = clamp((event.clientY - rect.top) / rect.height * 2 - 1, -0.6, 0.6) * 14;
|
|
30722
|
+
};
|
|
30723
|
+
var onPointerLeave = function onPointerLeave() {
|
|
30724
|
+
gazeX = 0;
|
|
30725
|
+
gazeY = 0;
|
|
30726
|
+
};
|
|
30727
|
+
var onPointerDown = function onPointerDown() {
|
|
30728
|
+
blinkStart = performance.now();
|
|
30729
|
+
};
|
|
30730
|
+
var attachPointer = function attachPointer() {
|
|
30731
|
+
if (!s.interactive || disposed) return;
|
|
30732
|
+
stage.addEventListener('pointermove', onPointerMove);
|
|
30733
|
+
stage.addEventListener('pointerleave', onPointerLeave);
|
|
30734
|
+
stage.addEventListener('pointerdown', onPointerDown);
|
|
30735
|
+
_detachPointer = function detachPointer() {
|
|
30736
|
+
stage.removeEventListener('pointermove', onPointerMove);
|
|
30737
|
+
stage.removeEventListener('pointerleave', onPointerLeave);
|
|
30738
|
+
stage.removeEventListener('pointerdown', onPointerDown);
|
|
30739
|
+
_detachPointer = null;
|
|
30740
|
+
};
|
|
30741
|
+
};
|
|
30742
|
+
var setPointerAttached = function setPointerAttached(enabled) {
|
|
30743
|
+
if (enabled && !_detachPointer) attachPointer();else if (!enabled && _detachPointer) _detachPointer();
|
|
30744
|
+
if (!enabled) {
|
|
30745
|
+
gazeX = 0;
|
|
30746
|
+
gazeY = 0;
|
|
30747
|
+
}
|
|
30748
|
+
};
|
|
30749
|
+
return {
|
|
30750
|
+
get animation() {
|
|
30751
|
+
return svg;
|
|
30752
|
+
},
|
|
30753
|
+
mount: function mount() {
|
|
30754
|
+
applyBodyShape();
|
|
30755
|
+
applyColors();
|
|
30756
|
+
renderInitial();
|
|
30757
|
+
applyBodyMotion();
|
|
30758
|
+
scheduleExpression();
|
|
30759
|
+
scheduleBlink();
|
|
30760
|
+
visibility = createVisibilityGuard(stage, wakeScheduler);
|
|
30761
|
+
unsubscribe = subscribeScheduler(onFrame, function () {
|
|
30762
|
+
return s.paused || s.reducedMotion || !s.autoplay || !visibility.isVisible();
|
|
30763
|
+
});
|
|
30764
|
+
setPointerAttached(s.interactive);
|
|
30765
|
+
emitter.emit('ready', {
|
|
30766
|
+
preset: _objectSpread2({}, s.preset),
|
|
30767
|
+
duration: null
|
|
30768
|
+
});
|
|
30769
|
+
},
|
|
30770
|
+
play: function play() {
|
|
30771
|
+
svg.style.animationPlayState = s.reducedMotion ? 'paused' : 'running';
|
|
30772
|
+
wakeScheduler();
|
|
30773
|
+
},
|
|
30774
|
+
pause: function pause() {
|
|
30775
|
+
svg.style.animationPlayState = 'paused';
|
|
30776
|
+
},
|
|
30777
|
+
stop: function stop() {
|
|
30778
|
+
renderInitial();
|
|
30779
|
+
this.pause();
|
|
30780
|
+
},
|
|
30781
|
+
setPaused: function setPaused(value) {
|
|
30782
|
+
return value ? this.pause() : this.play();
|
|
30783
|
+
},
|
|
30784
|
+
setSpeed: function setSpeed() {
|
|
30785
|
+
var className = motionClassFor(s.preset.name);
|
|
30786
|
+
svg.style.animationDuration = "".concat(MOTION_DURATIONS[className] / s.speed, "s");
|
|
30787
|
+
motionUntil = 0;
|
|
30788
|
+
},
|
|
30789
|
+
setDirection: function setDirection() {},
|
|
30790
|
+
setSegment: function setSegment() {},
|
|
30791
|
+
setShape: function setShape() {
|
|
30792
|
+
applyBodyShape();
|
|
30793
|
+
},
|
|
30794
|
+
setInteractive: function setInteractive(value) {
|
|
30795
|
+
setPointerAttached(value === true);
|
|
30796
|
+
},
|
|
30797
|
+
dispose: function dispose() {
|
|
30798
|
+
var _svg$classList2;
|
|
30799
|
+
if (disposed) return;
|
|
30800
|
+
disposed = true;
|
|
30801
|
+
if (unsubscribe) {
|
|
30802
|
+
unsubscribe();
|
|
30803
|
+
unsubscribe = null;
|
|
30804
|
+
}
|
|
30805
|
+
if (visibility) {
|
|
30806
|
+
visibility.dispose();
|
|
30807
|
+
visibility = null;
|
|
30808
|
+
}
|
|
30809
|
+
if (_detachPointer) _detachPointer();
|
|
30810
|
+
(_svg$classList2 = svg.classList).remove.apply(_svg$classList2, _toConsumableArray(MOTION_CLASSES));
|
|
30811
|
+
svg.remove();
|
|
30812
|
+
}
|
|
30813
|
+
};
|
|
30814
|
+
}
|
|
30815
|
+
|
|
30816
|
+
var SPEED_MIN = 0.1;
|
|
30817
|
+
var SPEED_MAX = 4;
|
|
30818
|
+
var RENDERER_FACTORIES = {
|
|
30819
|
+
miao: createMiaoRenderer,
|
|
30820
|
+
grok: createGrokRenderer
|
|
30821
|
+
};
|
|
30822
|
+
function normalizeSpeed(value) {
|
|
30823
|
+
var number = Number(value);
|
|
30824
|
+
if (!Number.isFinite(number)) return 1;
|
|
30825
|
+
return Math.min(SPEED_MAX, Math.max(SPEED_MIN, number));
|
|
30826
|
+
}
|
|
30827
|
+
function normalizeOpacity(value) {
|
|
30828
|
+
var number = Number(value);
|
|
30829
|
+
if (!Number.isFinite(number)) return 1;
|
|
30830
|
+
return Math.min(1, Math.max(0, number));
|
|
30831
|
+
}
|
|
30832
|
+
function normalizeDirection(value) {
|
|
30833
|
+
return value === -1 || value === 'reverse' ? -1 : 1;
|
|
30834
|
+
}
|
|
30835
|
+
function normalizeRenderer(value) {
|
|
30836
|
+
return value === 'canvas' ? 'canvas' : 'svg';
|
|
30837
|
+
}
|
|
30838
|
+
function normalizeFit(value) {
|
|
30839
|
+
if (value === 'cover') return 'cover';
|
|
30840
|
+
if (value === 'fill' || value === 'stretch' || value === 'none') return 'fill';
|
|
30841
|
+
return 'contain';
|
|
30842
|
+
}
|
|
30843
|
+
function normalizeShape(value) {
|
|
30844
|
+
var shapes = getEmoType('grok').shapes;
|
|
30845
|
+
return shapes.includes(value) ? value : 'blob';
|
|
30846
|
+
}
|
|
30847
|
+
|
|
30848
|
+
/** Mount an emo of the given type (miao | grok) into a container. */
|
|
30849
|
+
function createEmo(container) {
|
|
30850
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
30851
|
+
if (!container || typeof container.appendChild !== 'function') {
|
|
30852
|
+
throw new Error('createEmo: container element is required');
|
|
30853
|
+
}
|
|
30854
|
+
var type = getEmoType(options.type || 'miao').type;
|
|
30855
|
+
var name = options.name || getEmoType(type).defaultName;
|
|
30856
|
+
var s = {
|
|
30857
|
+
type: type,
|
|
30858
|
+
name: name,
|
|
30859
|
+
preset: getEmoPreset(type, name),
|
|
30860
|
+
width: options.width === undefined ? 160 : options.width,
|
|
30861
|
+
height: options.height === undefined ? 160 : options.height,
|
|
30862
|
+
speed: normalizeSpeed(options.speed),
|
|
30863
|
+
loop: options.loop !== false,
|
|
30864
|
+
autoplay: options.autoplay !== false,
|
|
30865
|
+
direction: normalizeDirection(options.direction),
|
|
30866
|
+
opacity: normalizeOpacity(options.opacity),
|
|
30867
|
+
fit: normalizeFit(options.fit),
|
|
30868
|
+
renderer: normalizeRenderer(options.renderer),
|
|
30869
|
+
paused: options.paused === true,
|
|
30870
|
+
segment: null,
|
|
30871
|
+
partColors: options.partColors && _typeof(options.partColors) === 'object' ? _objectSpread2({}, options.partColors) : {},
|
|
30872
|
+
shape: normalizeShape(options.shape),
|
|
30873
|
+
interactive: options.interactive === true,
|
|
30874
|
+
background: options.background == null ? 'transparent' : String(options.background),
|
|
30875
|
+
label: typeof options.label === 'string' && options.label ? options.label : null,
|
|
30876
|
+
reducedMotion: false,
|
|
30877
|
+
player: options.player,
|
|
30878
|
+
instanceName: options.instanceName,
|
|
30879
|
+
disposed: false
|
|
30880
|
+
};
|
|
30881
|
+
if (type === 'miao') s.segment = normalizeSegment(options.segment, s.preset);
|
|
30882
|
+
var rendererImpl = null;
|
|
30883
|
+
var emitter = createEmitter();
|
|
30884
|
+
var root = document.createElement('div');
|
|
30885
|
+
root.className = 'dlc-emo-root';
|
|
30886
|
+
root.setAttribute('role', 'img');
|
|
30887
|
+
var stage = document.createElement('div');
|
|
30888
|
+
stage.className = 'dlc-emo-stage';
|
|
30889
|
+
root.appendChild(stage);
|
|
30890
|
+
container.appendChild(root);
|
|
30891
|
+
var updateRoot = function updateRoot() {
|
|
30892
|
+
var effectiveRenderer = s.type === 'grok' ? 'svg' : s.renderer;
|
|
30893
|
+
root.style.width = parseSize(s.width);
|
|
30894
|
+
root.style.height = parseSize(s.height);
|
|
30895
|
+
root.style.setProperty('--dlc-emo-opacity', String(s.opacity));
|
|
30896
|
+
root.style.setProperty('--dlc-emo-background', s.background);
|
|
30897
|
+
root.dataset.type = s.preset.type;
|
|
30898
|
+
root.dataset.name = s.preset.name;
|
|
30899
|
+
root.dataset.fit = s.fit;
|
|
30900
|
+
root.dataset.renderer = effectiveRenderer;
|
|
30901
|
+
root.dataset.paused = String(s.paused || s.reducedMotion);
|
|
30902
|
+
root.setAttribute('aria-label', s.label || "".concat(s.preset.label, "\u8868\u60C5\u52A8\u753B"));
|
|
30903
|
+
};
|
|
30904
|
+
var destroyCurrent = function destroyCurrent() {
|
|
30905
|
+
if (rendererImpl) {
|
|
30906
|
+
rendererImpl.dispose();
|
|
30907
|
+
rendererImpl = null;
|
|
30908
|
+
}
|
|
30909
|
+
};
|
|
30910
|
+
var mount = function mount() {
|
|
30911
|
+
destroyCurrent();
|
|
30912
|
+
if (s.disposed) return;
|
|
30913
|
+
s.preset = getEmoPreset(s.type, s.name);
|
|
30914
|
+
if (s.type === 'miao' && s.segment) s.segment = normalizeSegment(s.segment, s.preset);
|
|
30915
|
+
updateRoot();
|
|
30916
|
+
rendererImpl = RENDERER_FACTORIES[s.type]({
|
|
30917
|
+
stage: stage,
|
|
30918
|
+
s: s,
|
|
30919
|
+
emitter: emitter
|
|
30236
30920
|
});
|
|
30921
|
+
rendererImpl.mount();
|
|
30237
30922
|
};
|
|
30923
|
+
var motionPreference = createReducedMotionPreference(options.respectReducedMotion !== false, function (matches) {
|
|
30924
|
+
s.reducedMotion = matches;
|
|
30925
|
+
if (s.disposed) return;
|
|
30926
|
+
updateRoot();
|
|
30927
|
+
if (!rendererImpl) return;
|
|
30928
|
+
if (s.paused || s.reducedMotion || !s.autoplay) rendererImpl.pause();else rendererImpl.play();
|
|
30929
|
+
});
|
|
30930
|
+
s.reducedMotion = motionPreference.matches();
|
|
30238
30931
|
updateRoot();
|
|
30239
|
-
|
|
30932
|
+
mount();
|
|
30240
30933
|
return {
|
|
30241
30934
|
element: root,
|
|
30242
30935
|
get animation() {
|
|
30243
|
-
return animation;
|
|
30936
|
+
return rendererImpl ? rendererImpl.animation : null;
|
|
30244
30937
|
},
|
|
30245
30938
|
get preset() {
|
|
30246
|
-
return _objectSpread2({}, preset);
|
|
30939
|
+
return _objectSpread2({}, s.preset);
|
|
30247
30940
|
},
|
|
30248
30941
|
on: emitter.on,
|
|
30249
30942
|
off: emitter.off,
|
|
30250
30943
|
play: function play() {
|
|
30251
|
-
paused = false;
|
|
30944
|
+
s.paused = false;
|
|
30252
30945
|
updateRoot();
|
|
30253
|
-
if (
|
|
30946
|
+
if (rendererImpl && !s.reducedMotion) rendererImpl.play();
|
|
30254
30947
|
return this;
|
|
30255
30948
|
},
|
|
30256
30949
|
pause: function pause() {
|
|
30257
|
-
paused = true;
|
|
30950
|
+
s.paused = true;
|
|
30258
30951
|
root.dataset.paused = 'true';
|
|
30259
|
-
if (
|
|
30952
|
+
if (rendererImpl) rendererImpl.pause();
|
|
30260
30953
|
return this;
|
|
30261
30954
|
},
|
|
30262
30955
|
stop: function stop() {
|
|
30263
|
-
paused = true;
|
|
30956
|
+
s.paused = true;
|
|
30264
30957
|
root.dataset.paused = 'true';
|
|
30265
|
-
if (
|
|
30958
|
+
if (rendererImpl) rendererImpl.stop();
|
|
30266
30959
|
return this;
|
|
30267
30960
|
},
|
|
30268
30961
|
setPaused: function setPaused(value) {
|
|
30269
30962
|
return value ? this.pause() : this.play();
|
|
30270
30963
|
},
|
|
30271
30964
|
setSpeed: function setSpeed(value) {
|
|
30272
|
-
speed = normalizeSpeed(value);
|
|
30273
|
-
if (
|
|
30965
|
+
s.speed = normalizeSpeed(value);
|
|
30966
|
+
if (rendererImpl) rendererImpl.setSpeed(s.speed);
|
|
30274
30967
|
return this;
|
|
30275
30968
|
},
|
|
30276
30969
|
setDirection: function setDirection(value) {
|
|
30277
|
-
direction = normalizeDirection(value);
|
|
30278
|
-
if (
|
|
30279
|
-
animation.setDirection(direction);
|
|
30280
|
-
if (direction < 0 && animation.currentFrame <= 0) animation.goToAndStop(segment ? segment[1] : preset.frames - 1, true);
|
|
30281
|
-
}
|
|
30970
|
+
s.direction = normalizeDirection(value);
|
|
30971
|
+
if (rendererImpl) rendererImpl.setDirection(s.direction);
|
|
30282
30972
|
return this;
|
|
30283
30973
|
},
|
|
30284
30974
|
setSegment: function setSegment(value) {
|
|
30285
|
-
|
|
30286
|
-
|
|
30975
|
+
if (s.type !== 'miao') return this;
|
|
30976
|
+
s.segment = normalizeSegment(value, s.preset);
|
|
30977
|
+
if (rendererImpl) rendererImpl.setSegment(s.segment);
|
|
30287
30978
|
return this;
|
|
30288
30979
|
},
|
|
30289
30980
|
setName: function setName(value) {
|
|
30290
|
-
|
|
30291
|
-
|
|
30981
|
+
var nextName = String(value || '').trim().toLowerCase();
|
|
30982
|
+
getEmoPreset(s.type, nextName);
|
|
30983
|
+
s.name = nextName;
|
|
30984
|
+
mount();
|
|
30292
30985
|
emitter.emit('namechange', {
|
|
30293
|
-
preset: _objectSpread2({}, preset)
|
|
30986
|
+
preset: _objectSpread2({}, s.preset)
|
|
30294
30987
|
});
|
|
30295
30988
|
return this;
|
|
30296
30989
|
},
|
|
30297
30990
|
setType: function setType(value) {
|
|
30298
|
-
|
|
30299
|
-
|
|
30991
|
+
var nextType = getEmoType(value).type;
|
|
30992
|
+
s.type = nextType;
|
|
30993
|
+
if (!getEmoType(s.type).names.includes(s.name)) s.name = getEmoType(s.type).defaultName;
|
|
30994
|
+
mount();
|
|
30300
30995
|
emitter.emit('typechange', {
|
|
30301
|
-
preset: _objectSpread2({}, preset)
|
|
30996
|
+
preset: _objectSpread2({}, s.preset)
|
|
30302
30997
|
});
|
|
30303
30998
|
return this;
|
|
30304
30999
|
},
|
|
30305
31000
|
setPartColors: function setPartColors(next) {
|
|
30306
|
-
partColors = next && _typeof(next) === 'object' ? _objectSpread2({}, next) : {};
|
|
30307
|
-
|
|
31001
|
+
s.partColors = next && _typeof(next) === 'object' ? _objectSpread2({}, next) : {};
|
|
31002
|
+
mount();
|
|
30308
31003
|
return this;
|
|
30309
31004
|
},
|
|
30310
31005
|
setOpacity: function setOpacity(value) {
|
|
30311
|
-
opacity = normalizeOpacity(value);
|
|
31006
|
+
s.opacity = normalizeOpacity(value);
|
|
30312
31007
|
updateRoot();
|
|
30313
31008
|
return this;
|
|
30314
31009
|
},
|
|
30315
31010
|
setBackground: function setBackground(value) {
|
|
30316
|
-
background = value == null ? 'transparent' : String(value);
|
|
31011
|
+
s.background = value == null ? 'transparent' : String(value);
|
|
30317
31012
|
updateRoot();
|
|
30318
31013
|
return this;
|
|
30319
31014
|
},
|
|
30320
31015
|
setSize: function setSize(nextWidth, nextHeight) {
|
|
30321
31016
|
if (nextWidth !== undefined) {
|
|
30322
31017
|
parseSize(nextWidth);
|
|
30323
|
-
width = nextWidth;
|
|
31018
|
+
s.width = nextWidth;
|
|
30324
31019
|
}
|
|
30325
31020
|
if (nextHeight !== undefined) {
|
|
30326
31021
|
parseSize(nextHeight);
|
|
30327
|
-
height = nextHeight;
|
|
31022
|
+
s.height = nextHeight;
|
|
30328
31023
|
}
|
|
30329
31024
|
updateRoot();
|
|
30330
31025
|
return this;
|
|
30331
31026
|
},
|
|
30332
31027
|
setFit: function setFit(value) {
|
|
30333
|
-
fit = normalizeFit(value);
|
|
30334
|
-
|
|
31028
|
+
s.fit = normalizeFit(value);
|
|
31029
|
+
mount();
|
|
30335
31030
|
return this;
|
|
30336
31031
|
},
|
|
30337
31032
|
setRenderer: function setRenderer(value) {
|
|
30338
|
-
renderer = normalizeRenderer(value);
|
|
30339
|
-
|
|
31033
|
+
s.renderer = normalizeRenderer(value);
|
|
31034
|
+
if (s.type === 'miao') mount();else updateRoot();
|
|
30340
31035
|
return this;
|
|
30341
31036
|
},
|
|
30342
31037
|
setLoop: function setLoop(value) {
|
|
30343
|
-
loop = value !== false;
|
|
30344
|
-
|
|
31038
|
+
s.loop = value !== false;
|
|
31039
|
+
mount();
|
|
30345
31040
|
return this;
|
|
30346
31041
|
},
|
|
30347
31042
|
setAutoplay: function setAutoplay(value) {
|
|
30348
|
-
autoplay = value !== false;
|
|
30349
|
-
if (autoplay && !paused && !reducedMotion) this.play();else if (
|
|
31043
|
+
s.autoplay = value !== false;
|
|
31044
|
+
if (s.autoplay && !s.paused && !s.reducedMotion) this.play();else if (rendererImpl) rendererImpl.pause();
|
|
31045
|
+
return this;
|
|
31046
|
+
},
|
|
31047
|
+
setShape: function setShape(value) {
|
|
31048
|
+
s.shape = normalizeShape(value);
|
|
31049
|
+
if (rendererImpl) rendererImpl.setShape(s.shape);
|
|
31050
|
+
return this;
|
|
31051
|
+
},
|
|
31052
|
+
setInteractive: function setInteractive(value) {
|
|
31053
|
+
s.interactive = value === true;
|
|
31054
|
+
if (rendererImpl) rendererImpl.setInteractive(s.interactive);
|
|
30350
31055
|
return this;
|
|
30351
31056
|
},
|
|
30352
31057
|
setLabel: function setLabel(value) {
|
|
30353
|
-
label = typeof value === 'string' && value ? value : null;
|
|
31058
|
+
s.label = typeof value === 'string' && value ? value : null;
|
|
30354
31059
|
updateRoot();
|
|
30355
31060
|
return this;
|
|
30356
31061
|
},
|
|
30357
31062
|
dispose: function dispose() {
|
|
30358
|
-
disposed = true;
|
|
30359
|
-
loadToken += 1;
|
|
31063
|
+
s.disposed = true;
|
|
30360
31064
|
motionPreference.dispose();
|
|
30361
|
-
|
|
31065
|
+
destroyCurrent();
|
|
30362
31066
|
root.remove();
|
|
30363
31067
|
},
|
|
30364
31068
|
get speed() {
|
|
30365
|
-
return speed;
|
|
31069
|
+
return s.speed;
|
|
30366
31070
|
},
|
|
30367
31071
|
get loop() {
|
|
30368
|
-
return loop;
|
|
31072
|
+
return s.loop;
|
|
30369
31073
|
},
|
|
30370
31074
|
get autoplay() {
|
|
30371
|
-
return autoplay;
|
|
31075
|
+
return s.autoplay;
|
|
30372
31076
|
},
|
|
30373
31077
|
get direction() {
|
|
30374
|
-
return direction;
|
|
31078
|
+
return s.direction;
|
|
30375
31079
|
},
|
|
30376
31080
|
get opacity() {
|
|
30377
|
-
return opacity;
|
|
31081
|
+
return s.opacity;
|
|
30378
31082
|
},
|
|
30379
31083
|
get fit() {
|
|
30380
|
-
return fit;
|
|
31084
|
+
return s.fit;
|
|
30381
31085
|
},
|
|
30382
31086
|
get renderer() {
|
|
30383
|
-
return renderer;
|
|
31087
|
+
return s.type === 'grok' ? 'svg' : s.renderer;
|
|
30384
31088
|
},
|
|
30385
31089
|
get paused() {
|
|
30386
|
-
return paused;
|
|
31090
|
+
return s.paused;
|
|
30387
31091
|
},
|
|
30388
31092
|
get segment() {
|
|
30389
|
-
return segment ? _toConsumableArray(segment) : null;
|
|
31093
|
+
return s.segment ? _toConsumableArray(s.segment) : null;
|
|
30390
31094
|
},
|
|
30391
31095
|
get partColors() {
|
|
30392
|
-
return _objectSpread2({}, partColors);
|
|
31096
|
+
return _objectSpread2({}, s.partColors);
|
|
31097
|
+
},
|
|
31098
|
+
get shape() {
|
|
31099
|
+
return s.shape;
|
|
31100
|
+
},
|
|
31101
|
+
get interactive() {
|
|
31102
|
+
return s.interactive;
|
|
30393
31103
|
},
|
|
30394
31104
|
get background() {
|
|
30395
|
-
return background;
|
|
31105
|
+
return s.background;
|
|
31106
|
+
}
|
|
31107
|
+
};
|
|
31108
|
+
}
|
|
31109
|
+
|
|
31110
|
+
function createEmoPreviewCard(_ref) {
|
|
31111
|
+
var container = _ref.container,
|
|
31112
|
+
options = _ref.options,
|
|
31113
|
+
_ref$playFor = _ref.playFor,
|
|
31114
|
+
playFor = _ref$playFor === void 0 ? 2800 : _ref$playFor,
|
|
31115
|
+
_ref$respectReducedMo = _ref.respectReducedMotion,
|
|
31116
|
+
respectReducedMotion = _ref$respectReducedMo === void 0 ? true : _ref$respectReducedMo,
|
|
31117
|
+
_ref$trackViewport = _ref.trackViewport,
|
|
31118
|
+
trackViewport = _ref$trackViewport === void 0 ? false : _ref$trackViewport;
|
|
31119
|
+
var controller = createEmo(container, _objectSpread2(_objectSpread2({}, options), {}, {
|
|
31120
|
+
autoplay: false,
|
|
31121
|
+
paused: true
|
|
31122
|
+
}));
|
|
31123
|
+
var motionPreference = createReducedMotionPreference(respectReducedMotion !== false, function (matches) {
|
|
31124
|
+
reduced = matches;
|
|
31125
|
+
if (reduced) stop();
|
|
31126
|
+
});
|
|
31127
|
+
var reduced = motionPreference.matches();
|
|
31128
|
+
var timer = null;
|
|
31129
|
+
var offscreen = false;
|
|
31130
|
+
var observer = null;
|
|
31131
|
+
var stop = function stop() {
|
|
31132
|
+
if (timer) {
|
|
31133
|
+
clearTimeout(timer);
|
|
31134
|
+
timer = null;
|
|
31135
|
+
}
|
|
31136
|
+
controller.pause();
|
|
31137
|
+
};
|
|
31138
|
+
var start = function start() {
|
|
31139
|
+
if (timer) {
|
|
31140
|
+
clearTimeout(timer);
|
|
31141
|
+
timer = null;
|
|
31142
|
+
}
|
|
31143
|
+
if (reduced || offscreen) return;
|
|
31144
|
+
controller.play();
|
|
31145
|
+
timer = setTimeout(function () {
|
|
31146
|
+
return stop();
|
|
31147
|
+
}, playFor);
|
|
31148
|
+
};
|
|
31149
|
+
if (trackViewport && typeof IntersectionObserver !== 'undefined') {
|
|
31150
|
+
observer = new IntersectionObserver(function (entries) {
|
|
31151
|
+
var visible = entries.some(function (entry) {
|
|
31152
|
+
return entry.isIntersecting;
|
|
31153
|
+
});
|
|
31154
|
+
offscreen = !visible;
|
|
31155
|
+
if (offscreen) stop();
|
|
31156
|
+
}, {
|
|
31157
|
+
threshold: 0
|
|
31158
|
+
});
|
|
31159
|
+
observer.observe(container);
|
|
31160
|
+
}
|
|
31161
|
+
return {
|
|
31162
|
+
element: controller.element,
|
|
31163
|
+
controller: controller,
|
|
31164
|
+
start: start,
|
|
31165
|
+
stop: stop,
|
|
31166
|
+
setViewportVisible: function setViewportVisible(visible) {
|
|
31167
|
+
offscreen = !visible;
|
|
31168
|
+
if (offscreen) stop();
|
|
31169
|
+
},
|
|
31170
|
+
dispose: function dispose() {
|
|
31171
|
+
stop();
|
|
31172
|
+
motionPreference.dispose();
|
|
31173
|
+
if (observer) {
|
|
31174
|
+
observer.disconnect();
|
|
31175
|
+
observer = null;
|
|
31176
|
+
}
|
|
31177
|
+
controller.dispose();
|
|
30396
31178
|
}
|
|
30397
31179
|
};
|
|
30398
31180
|
}
|
|
@@ -53493,6 +54275,9 @@
|
|
|
53493
54275
|
exports.EMO_PRESETS = EMO_PRESETS;
|
|
53494
54276
|
exports.EMO_TYPES = EMO_TYPES;
|
|
53495
54277
|
exports.FallbackRenderer = FallbackRenderer;
|
|
54278
|
+
exports.GROK_CATEGORIES = GROK_CATEGORIES;
|
|
54279
|
+
exports.GROK_NAMES = GROK_NAMES;
|
|
54280
|
+
exports.GROK_STATE_META = GROK_STATE_META;
|
|
53496
54281
|
exports.PRESETS = PRESETS;
|
|
53497
54282
|
exports.PROGRESS_PRESETS = PROGRESS_PRESETS;
|
|
53498
54283
|
exports.ProgressCapsuleController = ProgressCapsuleController;
|
|
@@ -53501,10 +54286,15 @@
|
|
|
53501
54286
|
exports.createCapsule = createCapsule;
|
|
53502
54287
|
exports.createColorBackground = createColorBackground;
|
|
53503
54288
|
exports.createEmo = createEmo;
|
|
54289
|
+
exports.createEmoPreviewCard = createEmoPreviewCard;
|
|
53504
54290
|
exports.createProgressCapsule = createProgressCapsule;
|
|
53505
54291
|
exports.dprCapFor = dprCapFor;
|
|
53506
54292
|
exports.effectiveDprCap = effectiveDprCap;
|
|
54293
|
+
exports.getEmoAnimation = getEmoAnimation;
|
|
53507
54294
|
exports.getEmoPreset = getEmoPreset;
|
|
54295
|
+
exports.getEmoType = getEmoType;
|
|
54296
|
+
exports.getGrokNamesFor = getGrokNamesFor;
|
|
54297
|
+
exports.getGrokStateMeta = getGrokStateMeta;
|
|
53508
54298
|
exports.getPreset = getPreset;
|
|
53509
54299
|
exports.hexToRgb01 = hexToRgb01$1;
|
|
53510
54300
|
exports.hexToRgba = hexToRgba;
|