@@ -1346,18 +1346,16 @@ __webpack_require__.d(__webpack_exports__, {
13461346
13471347// UNUSED EXPORTS: withTmpDir
13481348
1349+ // EXTERNAL MODULE: external "node:child_process"
1350+ var external_node_child_process_ = __webpack_require__ ( 1421 ) ;
13491351// EXTERNAL MODULE: external "node:fs"
13501352var external_node_fs_ = __webpack_require__ ( 3024 ) ;
13511353var external_node_fs_default = /*#__PURE__*/ __webpack_require__ . n ( external_node_fs_ ) ;
1354+ // EXTERNAL MODULE: external "node:os"
1355+ var external_node_os_ = __webpack_require__ ( 8161 ) ;
13521356// EXTERNAL MODULE: external "node:path"
13531357var external_node_path_ = __webpack_require__ ( 6760 ) ;
13541358var external_node_path_default = /*#__PURE__*/ __webpack_require__ . n ( external_node_path_ ) ;
1355- // EXTERNAL MODULE: external "node:child_process"
1356- var external_node_child_process_ = __webpack_require__ ( 1421 ) ;
1357- // EXTERNAL MODULE: external "node:os"
1358- var external_node_os_ = __webpack_require__ ( 8161 ) ;
1359- // EXTERNAL MODULE: external "canvas"
1360- var external_canvas_ = __webpack_require__ ( 9919 ) ;
13611359// EXTERNAL MODULE: ../types/grid.ts
13621360var types_grid = __webpack_require__ ( 105 ) ;
13631361; // CONCATENATED MODULE: ../draw/pathRoundedRect.ts
@@ -1500,12 +1498,14 @@ const step = (grid, stack, snake) => {
15001498 }
15011499} ;
15021500
1503- // EXTERNAL MODULE: external "gifsicle"
1504- var external_gifsicle_ = __webpack_require__ ( 5667 ) ;
1505- var external_gifsicle_default = /*#__PURE__*/ __webpack_require__ . n ( external_gifsicle_ ) ;
1501+ // EXTERNAL MODULE: external "canvas"
1502+ var external_canvas_ = __webpack_require__ ( 9919 ) ;
15061503// EXTERNAL MODULE: ../../node_modules/gif-encoder-2/index.js
15071504var gif_encoder_2 = __webpack_require__ ( 1680 ) ;
15081505var gif_encoder_2_default = /*#__PURE__*/ __webpack_require__ . n ( gif_encoder_2 ) ;
1506+ // EXTERNAL MODULE: external "gifsicle"
1507+ var external_gifsicle_ = __webpack_require__ ( 5667 ) ;
1508+ var external_gifsicle_default = /*#__PURE__*/ __webpack_require__ . n ( external_gifsicle_ ) ;
15091509; // CONCATENATED MODULE: ../gif-creator/index.ts
15101510
15111511
@@ -1515,9 +1515,9 @@ var gif_encoder_2_default = /*#__PURE__*/__webpack_require__.n(gif_encoder_2);
15151515
15161516
15171517
1518-
15191518// @ts -ignore
15201519
1520+
15211521const createGif = async ( grid0 , cells , chain , drawOptions , animationOptions ) => withTmpDir ( async ( dir ) => {
15221522 const { width, height } = getCanvasWorldSize ( grid0 , drawOptions ) ;
15231523 const canvas = ( 0 , external_canvas_ . createCanvas ) ( width , height ) ;
@@ -1544,13 +1544,37 @@ const createGif = async (grid0, cells, chain, drawOptions, animationOptions) =>
15441544 }
15451545 const outFileName = external_node_path_default ( ) . join ( dir , "out.gif" ) ;
15461546 const optimizedFileName = external_node_path_default ( ) . join ( dir , "out.optimized.gif" ) ;
1547+ // generate palette file
1548+ const paletteFileName = external_node_path_default ( ) . join ( dir , "palette.txt" ) ;
1549+ {
1550+ const colors = [
1551+ drawOptions . colorBackground ,
1552+ drawOptions . colorEmpty ,
1553+ drawOptions . colorSnake ,
1554+ drawOptions . colorDotBorder ,
1555+ ...Object . values ( drawOptions . colorDots ) ,
1556+ ] . filter ( Boolean ) ;
1557+ const canvas = ( 0 , external_canvas_ . createCanvas ) ( colors . length , 1 ) ;
1558+ const ctx = canvas . getContext ( "2d" ) ;
1559+ for ( let i = colors . length ; i -- ; ) {
1560+ ctx . fillStyle = colors [ i ] ;
1561+ ctx . fillRect ( i , 0 , 1 , 1 ) ;
1562+ }
1563+ const imgData = ctx . getImageData ( 0 , 0 , colors . length , 1 ) ;
1564+ external_node_fs_default ( ) . writeFileSync ( paletteFileName , Array . from ( { length : colors . length } , ( _ , i ) => [
1565+ imgData . data [ i * 4 + 0 ] ,
1566+ imgData . data [ i * 4 + 1 ] ,
1567+ imgData . data [ i * 4 + 2 ] ,
1568+ ] . join ( " " ) ) . join ( "\n" ) ) ;
1569+ }
15471570 encoder . finish ( ) ;
15481571 external_node_fs_default ( ) . writeFileSync ( outFileName , encoder . out . getData ( ) ) ;
15491572 ( 0 , external_node_child_process_ . execFileSync ) ( ( external_gifsicle_default ( ) ) , [
15501573 //
15511574 "--optimize=3" ,
15521575 "--color-method=diversity" ,
1553- "--colors=16" ,
1576+ `--use-colormap=${ paletteFileName } ` ,
1577+ // "--colors=16",
15541578 outFileName ,
15551579 [ "--output" , optimizedFileName ] ,
15561580 ] . flat ( ) ) ;
0 commit comments