|  | @@ -40,6 +40,7 @@ import {
 | 
	
		
			
				|  |  |    SloppinessArtistIcon,
 | 
	
		
			
				|  |  |    SloppinessCartoonistIcon,
 | 
	
		
			
				|  |  |  } from "../components/icons";
 | 
	
		
			
				|  |  | +import { EVENT_CHANGE, trackEvent } from "../analytics";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const changeProperty = (
 | 
	
		
			
				|  |  |    elements: readonly ExcalidrawElement[],
 | 
	
	
		
			
				|  | @@ -81,6 +82,9 @@ const getFormValue = function <T>(
 | 
	
		
			
				|  |  |  export const actionChangeStrokeColor = register({
 | 
	
		
			
				|  |  |    name: "changeStrokeColor",
 | 
	
		
			
				|  |  |    perform: (elements, appState, value) => {
 | 
	
		
			
				|  |  | +    if (value !== appState.currentItemStrokeColor) {
 | 
	
		
			
				|  |  | +      trackEvent(EVENT_CHANGE, "stroke color", value);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        elements: changeProperty(elements, appState, (el) =>
 | 
	
		
			
				|  |  |          newElementWith(el, {
 | 
	
	
		
			
				|  | @@ -112,6 +116,10 @@ export const actionChangeStrokeColor = register({
 | 
	
		
			
				|  |  |  export const actionChangeBackgroundColor = register({
 | 
	
		
			
				|  |  |    name: "changeBackgroundColor",
 | 
	
		
			
				|  |  |    perform: (elements, appState, value) => {
 | 
	
		
			
				|  |  | +    if (value !== appState.currentItemBackgroundColor) {
 | 
	
		
			
				|  |  | +      trackEvent(EVENT_CHANGE, "background color", value);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        elements: changeProperty(elements, appState, (el) =>
 | 
	
		
			
				|  |  |          newElementWith(el, {
 | 
	
	
		
			
				|  | @@ -143,6 +151,7 @@ export const actionChangeBackgroundColor = register({
 | 
	
		
			
				|  |  |  export const actionChangeFillStyle = register({
 | 
	
		
			
				|  |  |    name: "changeFillStyle",
 | 
	
		
			
				|  |  |    perform: (elements, appState, value) => {
 | 
	
		
			
				|  |  | +    trackEvent(EVENT_CHANGE, "fill", value);
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        elements: changeProperty(elements, appState, (el) =>
 | 
	
		
			
				|  |  |          newElementWith(el, {
 | 
	
	
		
			
				|  | @@ -192,6 +201,7 @@ export const actionChangeFillStyle = register({
 | 
	
		
			
				|  |  |  export const actionChangeStrokeWidth = register({
 | 
	
		
			
				|  |  |    name: "changeStrokeWidth",
 | 
	
		
			
				|  |  |    perform: (elements, appState, value) => {
 | 
	
		
			
				|  |  | +    trackEvent(EVENT_CHANGE, "stroke", "width", value);
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        elements: changeProperty(elements, appState, (el) =>
 | 
	
		
			
				|  |  |          newElementWith(el, {
 | 
	
	
		
			
				|  | @@ -254,6 +264,7 @@ export const actionChangeStrokeWidth = register({
 | 
	
		
			
				|  |  |  export const actionChangeSloppiness = register({
 | 
	
		
			
				|  |  |    name: "changeSloppiness",
 | 
	
		
			
				|  |  |    perform: (elements, appState, value) => {
 | 
	
		
			
				|  |  | +    trackEvent(EVENT_CHANGE, "stroke", "sloppiness", value);
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        elements: changeProperty(elements, appState, (el) =>
 | 
	
		
			
				|  |  |          newElementWith(el, {
 | 
	
	
		
			
				|  | @@ -349,6 +360,7 @@ export const actionChangeStrokeStyle = register({
 | 
	
		
			
				|  |  |  export const actionChangeOpacity = register({
 | 
	
		
			
				|  |  |    name: "changeOpacity",
 | 
	
		
			
				|  |  |    perform: (elements, appState, value) => {
 | 
	
		
			
				|  |  | +    trackEvent(EVENT_CHANGE, "opacity", "value", value);
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        elements: changeProperty(elements, appState, (el) =>
 | 
	
		
			
				|  |  |          newElementWith(el, {
 | 
	
	
		
			
				|  | @@ -545,6 +557,7 @@ export const actionChangeSharpness = register({
 | 
	
		
			
				|  |  |      const shouldUpdateForLinearElements = targetElements.length
 | 
	
		
			
				|  |  |        ? targetElements.every(isLinearElement)
 | 
	
		
			
				|  |  |        : isLinearElementType(appState.elementType);
 | 
	
		
			
				|  |  | +    trackEvent(EVENT_CHANGE, "edge", value);
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        elements: changeProperty(elements, appState, (el) =>
 | 
	
		
			
				|  |  |          newElementWith(el, {
 |