/**
@license
Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
import{dedupingMixin as t}from"../utils/mixin.js";function mutablePropertyChange(t,e,a,r,l){let o;l&&(o="object"==typeof a&&null!==a,o&&(r=t.__dataTemp[e]));let n=r!==a&&(r==r||a==a);return o&&n&&(t.__dataTemp[e]=a),n}export const MutableData=t((t=>class MutableData extends t{_shouldPropertyChange(t,e,a){return mutablePropertyChange(this,t,e,a,!0)}}));export const OptionalMutableData=t((t=>class OptionalMutableData extends t{static get properties(){return{mutableData:Boolean}}_shouldPropertyChange(t,e,a){return mutablePropertyChange(this,t,e,a,this.mutableData)}}));MutableData._mutablePropertyChange=mutablePropertyChange;