I'm writing a plugin for copy all overrides from one instance to another. But I found it only works with pure text symbol. When there are shapes, the color will disappear after paste. The Sketch Version is 94 (With a new color override system).
Here is the code. Help plz. Thank you!
copy-paste-overrides.js
import sketch from 'sketch'
var document = require('sketch/dom').Document.getSelectedDocument()
var Settings = require('sketch/settings')
export function copy() {
const overrides = document.selectedLayers.layers[0].overrides
Settings.setSessionVariable('overridesStore', overrides)
}
export function paste() {
const instance = document.selectedLayers.layers[0]
Settings.sessionVariable('overridesStore').map((override, index) => {
instance.setOverrideValue(instance.overrides[index], override.value)
})
}
manifest.json
{
"$schema": "https://raw.githubusercontent.com/sketch-hq/SketchAPI/develop/docs/sketch-plugin-manifest-schema.json",
"icon": "icon.png",
"commands": [
{
"name": "copy-overrides",
"identifier": "copy-paste-overrides.copy-overrides-identifier",
"shortcut": "cmd ⇞",
"script": "./copy-paste-overrides.js",
"handler": "copy"
},
{
"name": "paste-overrides",
"identifier": "copy-paste-overrides.paste-overrides-identifier",
"shortcut": "cmd ⇟",
"script": "./copy-paste-overrides.js",
"handler": "paste"
}
],
"menu": {
"title": "copy-paste-overrides",
"items": [
"copy-paste-overrides.copy-overrides-identifier",
"copy-paste-overrides.paste-overrides-identifier"
]
}
}