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