anchor.diff:    }
   
     nogridsChanged() {
  +    // The `canvas.noGridlines` assignment directly is required.
  +    // Under normal circumstances, no gridlines config change will be
  +    // propergated by only using `<pixel-canvas ... noGridlines?="{{nogrids}}">`.
  +    // However, it is not working.
  +    canvas.noGridlines = nogrids;
       _delayUpdateZipped();
     }
   
  
positive.code:     });
    }
  
    Map toJson() => {
      'pixelSize': pixelSize,
      'bgColor': bgColor,
  
negative.code:   Object toZippedJson() => zip(JSON.encode(this), urlSafe: true);
  }
  
  int _parseInt(String s, int defaultValue) {
    if (s == null) return defaultValue;
    return int.parse(s, radix: 10, onError: (_) => defaultValue);
  }
  
  bool _haveSelection(Action a) =>
      a is SelectionAction && a.bounds.points.isNotEmpty;
  bool _haveFloatLayer(Action a) =>
  