import { name, version } from '../package.json' export default { name: name, version: version, hooks: { preRender: function (svg) { if (svg.attributes.get('freesewing:plugin-flip') === false) svg.attributes.set('freesewing:plugin-flip', version) } }, macros: { flip: function () { let flipped = null let ops = ['from', 'to', 'cp1', 'cp2'] for (let id in this.points) { // Keep track of the amount of flips (needed to allow flipping twice, but also avoid double flips in paths below) if (flipped === null) { flipped = this.points[id].attributes.get('flipped') if (flipped === false) flipped = 1 else flipped += 1 } this.points[id].x = this.points[id].x * -1 this.points[id].attributes.set('flipped', flipped) } for (let id of Object.keys(this.paths)) { for (let op in this.paths[id].ops) { for (let type of ops) { if (typeof this.paths[id].ops[op][type] !== 'undefined') { // Path ops can use points not listed in part.points. We should only flip those here // and not double flip the points flipped above let wasFlipped = this.paths[id].ops[op][type].attributes.get('flipped') if (wasFlipped !== false) wasFlipped = parseInt(wasFlipped) if (wasFlipped !== flipped) { this.paths[id].ops[op][type].x = this.paths[id].ops[op][type].x * -1 this.paths[id].ops[op][type].attributes.set('flipped', flipped) } } } } } for (let id of Object.keys(this.snippets)) { // Snippets use points not listed in part.points. We should only flip those here // and not double flip the points flipped above let wasFlipped = this.snippets[id].anchor.attributes.get('flipped') if (wasFlipped !== false) wasFlipped = parseInt(wasFlipped) if (wasFlipped !== flipped) this.snippets[id].anchor.x = this.snippets[id].anchor.x * -1 } } } }