You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1 lines
13 KiB

{"version":3,"file":"ext-eyedropper.js","sources":["../../../../src/editor/extensions/ext-eyedropper/ext-eyedropper.js","../../../../src/editor/extensions/ext-eyedropper/locale/en.js","../../../../src/editor/extensions/ext-eyedropper/locale/fr.js","../../../../src/editor/extensions/ext-eyedropper/locale/sv.js","../../../../src/editor/extensions/ext-eyedropper/locale/tr.js","../../../../src/editor/extensions/ext-eyedropper/locale/uk.js","../../../../src/editor/extensions/ext-eyedropper/locale/zh-CN.js"],"sourcesContent":["/**\n * @file ext-eyedropper.js\n *\n * @license MIT\n *\n * @copyright 2010 Jeff Schiller\n * @copyright 2021 OptimistikSAS\n *\n */\n\nconst name = 'eyedropper'\n\nconst loadExtensionTranslation = async function (svgEditor) {\n let translationModule\n const lang = svgEditor.configObj.pref('lang')\n try {\n translationModule = await import(`./locale/${lang}.js`)\n } catch (_error) {\n console.warn(`Missing translation (${lang}) for ${name} - using 'en'`)\n translationModule = await import('./locale/en.js')\n }\n svgEditor.i18next.addResourceBundle(lang, name, translationModule.default)\n}\n\nexport default {\n name,\n async init () {\n const svgEditor = this\n const { svgCanvas } = svgEditor\n await loadExtensionTranslation(svgEditor)\n const { ChangeElementCommand } = svgCanvas.history\n // svgdoc = S.svgroot.parentNode.ownerDocument,\n const addToHistory = (cmd) => { svgCanvas.undoMgr.addCommandToHistory(cmd) }\n const currentStyle = {\n fillPaint: 'red',\n fillOpacity: 1.0,\n strokePaint: 'black',\n strokeOpacity: 1.0,\n strokeWidth: 5,\n strokeDashArray: null,\n opacity: 1.0,\n strokeLinecap: 'butt',\n strokeLinejoin: 'miter'\n }\n const { $id, $click } = svgCanvas\n\n /**\n *\n * @param {module:svgcanvas.SvgCanvas#event:ext_selectedChanged|module:svgcanvas.SvgCanvas#event:ext_elementChanged} opts\n * @returns {void}\n */\n const getStyle = (opts) => {\n // if we are in eyedropper mode, we don't want to disable the eye-dropper tool\n const mode = svgCanvas.getMode()\n if (mode === 'eyedropper') { return }\n\n const tool = $id('tool_eyedropper')\n // enable-eye-dropper if one element is selected\n let elem = null\n if (!opts.multiselected && opts.elems[0] &&\n !['svg', 'g', 'use'].includes(opts.elems[0].nodeName)\n ) {\n elem = opts.elems[0]\n tool.classList.remove('disabled')\n // grab the current style\n currentStyle.fillPaint = elem.getAttribute('fill') || 'black'\n currentStyle.fillOpacity = elem.getAttribute('fill-opacity') || 1.0\n currentStyle.strokePaint = elem.getAttribute('stroke')\n currentStyle.strokeOpacity = elem.getAttribute('stroke-opacity') || 1.0\n currentStyle.strokeWidth = elem.getAttribute('stroke-width')\n currentStyle.strokeDashArray = elem.getAttribute('stroke-dasharray')\n currentStyle.strokeLinecap = elem.getAttribute('stroke-linecap')\n currentStyle.strokeLinejoin = elem.getAttribute('stroke-linejoin')\n currentStyle.opacity = elem.getAttribute('opacity') || 1.0\n // disable eye-dropper tool\n } else {\n tool.classList.add('disabled')\n }\n }\n\n return {\n name: svgEditor.i18next.t(`${name}:name`),\n callback () {\n // Add the button and its handler(s)\n const title = `${name}:buttons.0.title`\n const key = `${name}:buttons.0.key`\n const buttonTemplate = `\n <se-button id=\"tool_eyedropper\" title=\"${title}\" src=\"eye_dropper.svg\" shortcut=${key}></se-button>\n `\n svgCanvas.insertChildAtIndex($id('tools_left'), buttonTemplate, 12)\n $click($id('tool_eyedropper'), () => {\n if (this.leftPanel.updateLeftPanel('tool_eyedropper')) {\n svgCanvas.setMode('eyedropper')\n }\n })\n },\n // if we have selected an element, grab its paint and enable the eye dropper button\n selectedChanged: getStyle,\n elementChanged: getStyle,\n mouseDown (opts) {\n const mode = svgCanvas.getMode()\n if (mode === 'eyedropper') {\n const e = opts.event\n const { target } = e\n if (!['svg', 'g', 'use'].includes(target.nodeName)) {\n const changes = {}\n\n const change = function (elem, attrname, newvalue) {\n changes[attrname] = elem.getAttribute(attrname)\n elem.setAttribute(attrname, newvalue)\n }\n\n if (currentStyle.fillPaint) { change(target, 'fill', currentStyle.fillPaint) }\n if (currentStyle.fillOpacity) { change(target, 'fill-opacity', currentStyle.fillOpacity) }\n if (currentStyle.strokePaint) { change(target, 'stroke', currentStyle.strokePaint) }\n if (currentStyle.strokeOpacity) { change(target, 'stroke-opacity', currentStyle.strokeOpacity) }\n if (currentStyle.strokeWidth) { change(target, 'stroke-width', currentStyle.strokeWidth) }\n if (currentStyle.strokeDashArray) { change(target, 'stroke-dasharray', currentStyle.strokeDashArray) }\n if (currentStyle.opacity) { change(target, 'opacity', currentStyle.opacity) }\n if (currentStyle.strokeLinecap) { change(target, 'stroke-linecap', currentStyle.strokeLinecap) }\n if (currentStyle.strokeLinejoin) { change(target, 'stroke-linejoin', currentStyle.strokeLinejoin) }\n\n addToHistory(new ChangeElementCommand(target, changes))\n }\n }\n }\n }\n }\n}\n","export default {\n name: 'eyedropper',\n buttons: [\n {\n title: 'Eye Dropper Tool',\n key: 'I'\n }\n ]\n}\n","export default {\n name: 'pipette',\n buttons: [\n {\n title: 'Outil pipette',\n key: 'I'\n }\n ]\n}\n","export default {\n name: 'pipett',\n buttons: [\n {\n title: 'pipettverktyg',\n key: 'I'\n }\n ]\n}\n","export default {\n name: 'renkseçici',\n buttons: [\n {\n title: 'Renk Seçim Aracı',\n key: 'I'\n }\n ]\n}\n","export default {\n name: 'eyedropper',\n buttons: [\n {\n title: 'Піпетка',\n key: 'I'\n }\n ]\n}\n","export default {\n name: '滴管',\n buttons: [\n {\n title: '滴管工具',\n key: 'I'\n }\n ]\n}\n"],"names":["name","loadExtensionTranslation","svgEditor","translationModule","lang","configObj","pref","__variableDynamicImportRuntime0__","_error","console","warn","i18next","addResourceBundle","default","init","svgCanvas","ChangeElementCommand","history","addToHistory","cmd","undoMgr","addCommandToHistory","currentStyle","fillPaint","fillOpacity","strokePaint","strokeOpacity","strokeWidth","strokeDashArray","opacity","strokeLinecap","strokeLinejoin","$id","$click","getStyle","opts","mode","getMode","tool","elem","multiselected","elems","includes","nodeName","classList","remove","getAttribute","add","t","callback","title","key","buttonTemplate","insertChildAtIndex","leftPanel","updateLeftPanel","setMode","selectedChanged","elementChanged","mouseDown","e","event","target","changes","change","attrname","newvalue","setAttribute","buttons"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,IAAI,GAAG,YAAY,CAAA;AAEzB,MAAMC,wBAAwB,GAAG,gBAAgBC,SAAS,EAAE;AAC1D,EAAA,IAAIC,iBAAiB,CAAA;EACrB,MAAMC,IAAI,GAAGF,SAAS,CAACG,SAAS,CAACC,IAAI,CAAC,MAAM,CAAC,CAAA;EAC7C,IAAI;AACFH,IAAAA,iBAAiB,GAAG,MAAMI,iCAAM,CAAC,CAAYH,SAAAA,EAAAA,IAAI,KAAK,CAAC,CAAA;GACxD,CAAC,OAAOI,MAAM,EAAE;IACfC,OAAO,CAACC,IAAI,CAAC,CAAA,qBAAA,EAAwBN,IAAI,CAASJ,MAAAA,EAAAA,IAAI,eAAe,CAAC,CAAA;AACtEG,IAAAA,iBAAiB,GAAG,MAAM,oDAAwB,CAAA;AACpD,GAAA;AACAD,EAAAA,SAAS,CAACS,OAAO,CAACC,iBAAiB,CAACR,IAAI,EAAEJ,IAAI,EAAEG,iBAAiB,CAACU,OAAO,CAAC,CAAA;AAC5E,CAAC,CAAA;AAED,oBAAe;EACbb,IAAI;EACJ,MAAMc,IAAIA,GAAI;IACZ,MAAMZ,SAAS,GAAG,IAAI,CAAA;IACtB,MAAM;AAAEa,MAAAA,SAAAA;AAAU,KAAC,GAAGb,SAAS,CAAA;IAC/B,MAAMD,wBAAwB,CAACC,SAAS,CAAC,CAAA;IACzC,MAAM;AAAEc,MAAAA,oBAAAA;KAAsB,GAAGD,SAAS,CAACE,OAAO,CAAA;AAClD;IACA,MAAMC,YAAY,GAAIC,GAAG,IAAK;AAAEJ,MAAAA,SAAS,CAACK,OAAO,CAACC,mBAAmB,CAACF,GAAG,CAAC,CAAA;KAAE,CAAA;AAC5E,IAAA,MAAMG,YAAY,GAAG;AACnBC,MAAAA,SAAS,EAAE,KAAK;AAChBC,MAAAA,WAAW,EAAE,GAAG;AAChBC,MAAAA,WAAW,EAAE,OAAO;AACpBC,MAAAA,aAAa,EAAE,GAAG;AAClBC,MAAAA,WAAW,EAAE,CAAC;AACdC,MAAAA,eAAe,EAAE,IAAI;AACrBC,MAAAA,OAAO,EAAE,GAAG;AACZC,MAAAA,aAAa,EAAE,MAAM;AACrBC,MAAAA,cAAc,EAAE,OAAA;KACjB,CAAA;IACD,MAAM;MAAEC,GAAG;AAAEC,MAAAA,MAAAA;AAAO,KAAC,GAAGlB,SAAS,CAAA;;AAEjC;AACJ;AACA;AACA;AACA;IACI,MAAMmB,QAAQ,GAAIC,IAAI,IAAK;AACzB;AACA,MAAA,MAAMC,IAAI,GAAGrB,SAAS,CAACsB,OAAO,EAAE,CAAA;MAChC,IAAID,IAAI,KAAK,YAAY,EAAE;AAAE,QAAA,OAAA;AAAO,OAAA;AAEpC,MAAA,MAAME,IAAI,GAAGN,GAAG,CAAC,iBAAiB,CAAC,CAAA;AACnC;MACA,IAAIO,IAAI,GAAG,IAAI,CAAA;AACf,MAAA,IAAI,CAACJ,IAAI,CAACK,aAAa,IAAIL,IAAI,CAACM,KAAK,CAAC,CAAC,CAAC,IACtC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAACC,QAAQ,CAACP,IAAI,CAACM,KAAK,CAAC,CAAC,CAAC,CAACE,QAAQ,CAAC,EACrD;AACAJ,QAAAA,IAAI,GAAGJ,IAAI,CAACM,KAAK,CAAC,CAAC,CAAC,CAAA;AACpBH,QAAAA,IAAI,CAACM,SAAS,CAACC,MAAM,CAAC,UAAU,CAAC,CAAA;AACjC;QACAvB,YAAY,CAACC,SAAS,GAAGgB,IAAI,CAACO,YAAY,CAAC,MAAM,CAAC,IAAI,OAAO,CAAA;QAC7DxB,YAAY,CAACE,WAAW,GAAGe,IAAI,CAACO,YAAY,CAAC,cAAc,CAAC,IAAI,GAAG,CAAA;QACnExB,YAAY,CAACG,WAAW,GAAGc,IAAI,CAACO,YAAY,CAAC,QAAQ,CAAC,CAAA;QACtDxB,YAAY,CAACI,aAAa,GAAGa,IAAI,CAACO,YAAY,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAA;QACvExB,YAAY,CAACK,WAAW,GAAGY,IAAI,CAACO,YAAY,CAAC,cAAc,CAAC,CAAA;QAC5DxB,YAAY,CAACM,eAAe,GAAGW,IAAI,CAACO,YAAY,CAAC,kBAAkB,CAAC,CAAA;QACpExB,YAAY,CAACQ,aAAa,GAAGS,IAAI,CAACO,YAAY,CAAC,gBAAgB,CAAC,CAAA;QAChExB,YAAY,CAACS,cAAc,GAAGQ,IAAI,CAACO,YAAY,CAAC,iBAAiB,CAAC,CAAA;QAClExB,YAAY,CAACO,OAAO,GAAGU,IAAI,CAACO,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,CAAA;AAC1D;AACF,OAAC,MAAM;AACLR,QAAAA,IAAI,CAACM,SAAS,CAACG,GAAG,CAAC,UAAU,CAAC,CAAA;AAChC,OAAA;KACD,CAAA;IAED,OAAO;MACL/C,IAAI,EAAEE,SAAS,CAACS,OAAO,CAACqC,CAAC,CAAC,CAAA,EAAGhD,IAAI,CAAA,KAAA,CAAO,CAAC;AACzCiD,MAAAA,QAAQA,GAAI;AACV;AACA,QAAA,MAAMC,KAAK,GAAG,CAAGlD,EAAAA,IAAI,CAAkB,gBAAA,CAAA,CAAA;AACvC,QAAA,MAAMmD,GAAG,GAAG,CAAGnD,EAAAA,IAAI,CAAgB,cAAA,CAAA,CAAA;AACnC,QAAA,MAAMoD,cAAc,GAAG,CAAA;AAC/B,+CAAiDF,EAAAA,KAAK,oCAAoCC,GAAG,CAAA;AAC7F,QAAS,CAAA,CAAA;QACDpC,SAAS,CAACsC,kBAAkB,CAACrB,GAAG,CAAC,YAAY,CAAC,EAAEoB,cAAc,EAAE,EAAE,CAAC,CAAA;AACnEnB,QAAAA,MAAM,CAACD,GAAG,CAAC,iBAAiB,CAAC,EAAE,MAAM;UACnC,IAAI,IAAI,CAACsB,SAAS,CAACC,eAAe,CAAC,iBAAiB,CAAC,EAAE;AACrDxC,YAAAA,SAAS,CAACyC,OAAO,CAAC,YAAY,CAAC,CAAA;AACjC,WAAA;AACF,SAAC,CAAC,CAAA;OACH;AACD;AACAC,MAAAA,eAAe,EAAEvB,QAAQ;AACzBwB,MAAAA,cAAc,EAAExB,QAAQ;MACxByB,SAASA,CAAExB,IAAI,EAAE;AACf,QAAA,MAAMC,IAAI,GAAGrB,SAAS,CAACsB,OAAO,EAAE,CAAA;QAChC,IAAID,IAAI,KAAK,YAAY,EAAE;AACzB,UAAA,MAAMwB,CAAC,GAAGzB,IAAI,CAAC0B,KAAK,CAAA;UACpB,MAAM;AAAEC,YAAAA,MAAAA;AAAO,WAAC,GAAGF,CAAC,CAAA;AACpB,UAAA,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAClB,QAAQ,CAACoB,MAAM,CAACnB,QAAQ,CAAC,EAAE;YAClD,MAAMoB,OAAO,GAAG,EAAE,CAAA;YAElB,MAAMC,MAAM,GAAG,UAAUzB,IAAI,EAAE0B,QAAQ,EAAEC,QAAQ,EAAE;cACjDH,OAAO,CAACE,QAAQ,CAAC,GAAG1B,IAAI,CAACO,YAAY,CAACmB,QAAQ,CAAC,CAAA;AAC/C1B,cAAAA,IAAI,CAAC4B,YAAY,CAACF,QAAQ,EAAEC,QAAQ,CAAC,CAAA;aACtC,CAAA;YAED,IAAI5C,YAAY,CAACC,SAAS,EAAE;cAAEyC,MAAM,CAACF,MAAM,EAAE,MAAM,EAAExC,YAAY,CAACC,SAAS,CAAC,CAAA;AAAC,aAAA;YAC7E,IAAID,YAAY,CAACE,WAAW,EAAE;cAAEwC,MAAM,CAACF,MAAM,EAAE,cAAc,EAAExC,YAAY,CAACE,WAAW,CAAC,CAAA;AAAC,aAAA;YACzF,IAAIF,YAAY,CAACG,WAAW,EAAE;cAAEuC,MAAM,CAACF,MAAM,EAAE,QAAQ,EAAExC,YAAY,CAACG,WAAW,CAAC,CAAA;AAAC,aAAA;YACnF,IAAIH,YAAY,CAACI,aAAa,EAAE;cAAEsC,MAAM,CAACF,MAAM,EAAE,gBAAgB,EAAExC,YAAY,CAACI,aAAa,CAAC,CAAA;AAAC,aAAA;YAC/F,IAAIJ,YAAY,CAACK,WAAW,EAAE;cAAEqC,MAAM,CAACF,MAAM,EAAE,cAAc,EAAExC,YAAY,CAACK,WAAW,CAAC,CAAA;AAAC,aAAA;YACzF,IAAIL,YAAY,CAACM,eAAe,EAAE;cAAEoC,MAAM,CAACF,MAAM,EAAE,kBAAkB,EAAExC,YAAY,CAACM,eAAe,CAAC,CAAA;AAAC,aAAA;YACrG,IAAIN,YAAY,CAACO,OAAO,EAAE;cAAEmC,MAAM,CAACF,MAAM,EAAE,SAAS,EAAExC,YAAY,CAACO,OAAO,CAAC,CAAA;AAAC,aAAA;YAC5E,IAAIP,YAAY,CAACQ,aAAa,EAAE;cAAEkC,MAAM,CAACF,MAAM,EAAE,gBAAgB,EAAExC,YAAY,CAACQ,aAAa,CAAC,CAAA;AAAC,aAAA;YAC/F,IAAIR,YAAY,CAACS,cAAc,EAAE;cAAEiC,MAAM,CAACF,MAAM,EAAE,iBAAiB,EAAExC,YAAY,CAACS,cAAc,CAAC,CAAA;AAAC,aAAA;YAElGb,YAAY,CAAC,IAAIF,oBAAoB,CAAC8C,MAAM,EAAEC,OAAO,CAAC,CAAC,CAAA;AACzD,WAAA;AACF,SAAA;AACF,OAAA;KACD,CAAA;AACH,GAAA;AACF,CAAC;;AChID,SAAe;AACb/D,EAAAA,IAAI,EAAE,YAAY;AAClBoE,EAAAA,OAAO,EAAE,CACP;AACElB,IAAAA,KAAK,EAAE,kBAAkB;AACzBC,IAAAA,GAAG,EAAE,GAAA;GACN,CAAA;AAEL,CAAC;;;;;;;ACRD,SAAe;AACbnD,EAAAA,IAAI,EAAE,SAAS;AACfoE,EAAAA,OAAO,EAAE,CACP;AACElB,IAAAA,KAAK,EAAE,eAAe;AACtBC,IAAAA,GAAG,EAAE,GAAA;GACN,CAAA;AAEL,CAAC;;;;;;;ACRD,SAAe;AACbnD,EAAAA,IAAI,EAAE,QAAQ;AACdoE,EAAAA,OAAO,EAAE,CACP;AACElB,IAAAA,KAAK,EAAE,eAAe;AACtBC,IAAAA,GAAG,EAAE,GAAA;GACN,CAAA;AAEL,CAAC;;;;;;;ACRD,SAAe;AACbnD,EAAAA,IAAI,EAAE,YAAY;AAClBoE,EAAAA,OAAO,EAAE,CACP;AACElB,IAAAA,KAAK,EAAE,kBAAkB;AACzBC,IAAAA,GAAG,EAAE,GAAA;GACN,CAAA;AAEL,CAAC;;;;;;;ACRD,SAAe;AACbnD,EAAAA,IAAI,EAAE,YAAY;AAClBoE,EAAAA,OAAO,EAAE,CACP;AACElB,IAAAA,KAAK,EAAE,SAAS;AAChBC,IAAAA,GAAG,EAAE,GAAA;GACN,CAAA;AAEL,CAAC;;;;;;;ACRD,WAAe;AACbnD,EAAAA,IAAI,EAAE,IAAI;AACVoE,EAAAA,OAAO,EAAE,CACP;AACElB,IAAAA,KAAK,EAAE,MAAM;AACbC,IAAAA,GAAG,EAAE,GAAA;GACN,CAAA;AAEL,CAAC;;;;;;;;;"}