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.
		
		
		
		
		
			
		
			
				
					
					
						
							340 lines
						
					
					
						
							9.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							340 lines
						
					
					
						
							9.1 KiB
						
					
					
				| function __variableDynamicImportRuntime0__(path) { | |
|   switch (path) { | |
|     case './locale/en.js': | |
|       return Promise.resolve().then(function () { return en$1; }); | |
|     case './locale/fr.js': | |
|       return Promise.resolve().then(function () { return fr$1; }); | |
|     case './locale/sv.js': | |
|       return Promise.resolve().then(function () { return sv$1; }); | |
|     case './locale/tr.js': | |
|       return Promise.resolve().then(function () { return tr$1; }); | |
|     case './locale/uk.js': | |
|       return Promise.resolve().then(function () { return uk$1; }); | |
|     case './locale/zh-CN.js': | |
|       return Promise.resolve().then(function () { return zhCN$1; }); | |
|     default: | |
|       return new Promise(function (resolve, reject) { | |
|         (typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)(reject.bind(null, new Error("Unknown variable dynamic import: " + path))); | |
|       }); | |
|   } | |
| } | |
| 
 | |
| /** | |
|  * @file ext-shapes.js | |
|  * | |
|  * @license MIT | |
|  * | |
|  * @copyright 2010 Christian Tzurcanu, 2010 Alexis Deveria | |
|  * | |
|  */ | |
| const name = 'shapes'; | |
| const loadExtensionTranslation = async function (svgEditor) { | |
|   let translationModule; | |
|   const lang = svgEditor.configObj.pref('lang'); | |
|   try { | |
|     translationModule = await __variableDynamicImportRuntime0__(`./locale/${lang}.js`); | |
|   } catch (_error) { | |
|     console.warn(`Missing translation (${lang}) for ${name} - using 'en'`); | |
|     translationModule = await Promise.resolve().then(function () { return en$1; }); | |
|   } | |
|   svgEditor.i18next.addResourceBundle(lang, name, translationModule.default); | |
| }; | |
| var extShapes = { | |
|   name, | |
|   async init() { | |
|     const svgEditor = this; | |
|     const canv = svgEditor.svgCanvas; | |
|     const { | |
|       $id, | |
|       $click | |
|     } = canv; | |
|     const svgroot = canv.getSvgRoot(); | |
|     let lastBBox = {}; | |
|     await loadExtensionTranslation(svgEditor); | |
|     const modeId = 'shapelib'; | |
|     const startClientPos = {}; | |
|     let curShape; | |
|     let startX; | |
|     let startY; | |
|     return { | |
|       callback() { | |
|         if ($id('tool_shapelib') === null) { | |
|           const extPath = svgEditor.configObj.curConfig.extPath; | |
|           const buttonTemplate = ` | |
|           <se-explorerbutton id="tool_shapelib" title="${svgEditor.i18next.t(`${name}:buttons.0.title`)}" lib="${extPath}/ext-shapes/shapelib/" | |
|           src="shapelib.svg"></se-explorerbutton> | |
|           `; | |
|           canv.insertChildAtIndex($id('tools_left'), buttonTemplate, 9); | |
|           $click($id('tool_shapelib'), () => { | |
|             if (this.leftPanel.updateLeftPanel('tool_shapelib')) { | |
|               canv.setMode(modeId); | |
|             } | |
|           }); | |
|         } | |
|       }, | |
|       mouseDown(opts) { | |
|         const mode = canv.getMode(); | |
|         if (mode !== modeId) { | |
|           return undefined; | |
|         } | |
|         const currentD = document.getElementById('tool_shapelib').dataset.draw; | |
|         startX = opts.start_x; | |
|         const x = startX; | |
|         startY = opts.start_y; | |
|         const y = startY; | |
|         const curStyle = canv.getStyle(); | |
|         startClientPos.x = opts.event.clientX; | |
|         startClientPos.y = opts.event.clientY; | |
|         curShape = canv.addSVGElementsFromJson({ | |
|           element: 'path', | |
|           curStyles: true, | |
|           attr: { | |
|             d: currentD, | |
|             id: canv.getNextId(), | |
|             opacity: curStyle.opacity / 2, | |
|             style: 'pointer-events:none' | |
|           } | |
|         }); | |
|         curShape.setAttribute('transform', 'translate(' + x + ',' + y + ') scale(0.005) translate(' + -x + ',' + -y + ')'); | |
|         canv.recalculateDimensions(curShape); | |
|         lastBBox = curShape.getBBox(); | |
|         return { | |
|           started: true | |
|         }; | |
|       }, | |
|       mouseMove(opts) { | |
|         const mode = canv.getMode(); | |
|         if (mode !== modeId) { | |
|           return; | |
|         } | |
|         const zoom = canv.getZoom(); | |
|         const evt = opts.event; | |
|         const x = opts.mouse_x / zoom; | |
|         const y = opts.mouse_y / zoom; | |
|         const tlist = curShape.transform.baseVal; | |
|         const box = curShape.getBBox(); | |
|         const left = box.x; | |
|         const top = box.y; | |
|         const newbox = { | |
|           x: Math.min(startX, x), | |
|           y: Math.min(startY, y), | |
|           width: Math.abs(x - startX), | |
|           height: Math.abs(y - startY) | |
|         }; | |
|         let sx = newbox.width / lastBBox.width || 1; | |
|         let sy = newbox.height / lastBBox.height || 1; | |
| 
 | |
|         // Not perfect, but mostly works... | |
|         let tx = 0; | |
|         if (x < startX) { | |
|           tx = lastBBox.width; | |
|         } | |
|         let ty = 0; | |
|         if (y < startY) { | |
|           ty = lastBBox.height; | |
|         } | |
| 
 | |
|         // update the transform list with translate,scale,translate | |
|         const translateOrigin = svgroot.createSVGTransform(); | |
|         const scale = svgroot.createSVGTransform(); | |
|         const translateBack = svgroot.createSVGTransform(); | |
|         translateOrigin.setTranslate(-(left + tx), -(top + ty)); | |
|         if (!evt.shiftKey) { | |
|           const max = Math.min(Math.abs(sx), Math.abs(sy)); | |
|           sx = max * (sx < 0 ? -1 : 1); | |
|           sy = max * (sy < 0 ? -1 : 1); | |
|         } | |
|         scale.setScale(sx, sy); | |
|         translateBack.setTranslate(left + tx, top + ty); | |
|         tlist.appendItem(translateBack); | |
|         tlist.appendItem(scale); | |
|         tlist.appendItem(translateOrigin); | |
|         canv.recalculateDimensions(curShape); | |
|         lastBBox = curShape.getBBox(); | |
|       }, | |
|       mouseUp(opts) { | |
|         const mode = canv.getMode(); | |
|         if (mode !== modeId) { | |
|           return undefined; | |
|         } | |
|         const keepObject = opts.event.clientX !== startClientPos.x && opts.event.clientY !== startClientPos.y; | |
|         return { | |
|           keep: keepObject, | |
|           element: curShape, | |
|           started: false | |
|         }; | |
|       } | |
|     }; | |
|   } | |
| }; | |
| 
 | |
| var en = { | |
|   loading: 'Loading...', | |
|   categories: { | |
|     basic: 'Basic', | |
|     object: 'Objects', | |
|     symbol: 'Symbols', | |
|     arrow: 'Arrows', | |
|     flowchart: 'Flowchart', | |
|     animal: 'Animals', | |
|     game: 'Cards & Chess', | |
|     dialog_balloon: 'Dialog balloons', | |
|     electronics: 'Electronics', | |
|     math: 'Mathematical', | |
|     music: 'Music', | |
|     misc: 'Miscellaneous', | |
|     raphael_1: 'raphaeljs.com set 1', | |
|     raphael_2: 'raphaeljs.com set 2' | |
|   }, | |
|   buttons: [{ | |
|     title: 'Shape library' | |
|   }] | |
| }; | |
| 
 | |
| var en$1 = /*#__PURE__*/Object.freeze({ | |
|   __proto__: null, | |
|   default: en | |
| }); | |
| 
 | |
| var fr = { | |
|   loading: 'Chargement...', | |
|   categories: { | |
|     basic: 'Basique', | |
|     object: 'Objets', | |
|     symbol: 'Symboles', | |
|     arrow: 'Flèches', | |
|     flowchart: 'Flowchart', | |
|     animal: 'Animaux', | |
|     game: 'Cartes & Echecs', | |
|     dialog_balloon: 'Dialog balloons', | |
|     electronics: 'Electronique', | |
|     math: 'Mathematiques', | |
|     music: 'Musique', | |
|     misc: 'Divers', | |
|     raphael_1: 'raphaeljs.com set 1', | |
|     raphael_2: 'raphaeljs.com set 2' | |
|   }, | |
|   buttons: [{ | |
|     title: "Bibliothèque d'images" | |
|   }] | |
| }; | |
| 
 | |
| var fr$1 = /*#__PURE__*/Object.freeze({ | |
|   __proto__: null, | |
|   default: fr | |
| }); | |
| 
 | |
| var sv = { | |
|   loading: 'Läser in...', | |
|   categories: { | |
|     basic: 'Grundläggande', | |
|     object: 'Objekt', | |
|     symbol: 'Symboler', | |
|     arrow: 'Pilar', | |
|     flowchart: 'Flödesschema', | |
|     animal: 'Djur', | |
|     game: 'Kort & schack', | |
|     dialog_balloon: 'Dialogballonger', | |
|     electronics: 'Elektronik', | |
|     math: 'Matematisk', | |
|     music: 'Musik', | |
|     misc: 'Diverse', | |
|     raphael_1: 'raphaeljs.com uppsättning 1', | |
|     raphael_2: 'raphaeljs.com uppsättning 2' | |
|   }, | |
|   buttons: [{ | |
|     title: 'Formbibliotek' | |
|   }] | |
| }; | |
| 
 | |
| var sv$1 = /*#__PURE__*/Object.freeze({ | |
|   __proto__: null, | |
|   default: sv | |
| }); | |
| 
 | |
| var tr = { | |
|   loading: 'Yükleniyor...', | |
|   categories: { | |
|     basic: 'Temel', | |
|     object: 'Nesneler', | |
|     symbol: 'Semboller', | |
|     arrow: 'Oklar', | |
|     flowchart: 'Akış Şemaları', | |
|     animal: 'Hayvanlar', | |
|     game: 'Kartlar & Satranç', | |
|     dialog_balloon: 'Diyalog baloncukları', | |
|     electronics: 'Elektronikler', | |
|     math: 'Matematikseller', | |
|     music: 'Müzik', | |
|     misc: 'Diğerleri', | |
|     raphael_1: 'raphaeljs.com set 1', | |
|     raphael_2: 'raphaeljs.com set 2' | |
|   }, | |
|   buttons: [{ | |
|     title: 'Şekil kütüphanesi' | |
|   }] | |
| }; | |
| 
 | |
| var tr$1 = /*#__PURE__*/Object.freeze({ | |
|   __proto__: null, | |
|   default: tr | |
| }); | |
| 
 | |
| var uk = { | |
|   loading: 'Завантаження...', | |
|   categories: { | |
|     basic: 'Основні', | |
|     object: 'Об’єкти', | |
|     symbol: 'Символи', | |
|     arrow: 'Стрілки', | |
|     flowchart: 'Блок-схеми', | |
|     animal: 'Тварини', | |
|     game: 'Карти та Шахи', | |
|     dialog_balloon: 'Хмаринки діалогів', | |
|     electronics: 'Електроніка', | |
|     math: 'Математичні', | |
|     music: 'Музика', | |
|     misc: 'Різне', | |
|     raphael_1: 'raphaeljs.com набір 1', | |
|     raphael_2: 'raphaeljs.com набір 2' | |
|   }, | |
|   buttons: [{ | |
|     title: 'Спільна Бібліотека' | |
|   }] | |
| }; | |
| 
 | |
| var uk$1 = /*#__PURE__*/Object.freeze({ | |
|   __proto__: null, | |
|   default: uk | |
| }); | |
| 
 | |
| var zhCN = { | |
|   loading: '正在加载...', | |
|   categories: { | |
|     basic: '基本', | |
|     object: '对象', | |
|     symbol: '符号', | |
|     arrow: '箭头', | |
|     flowchart: '工作流', | |
|     animal: '动物', | |
|     game: '棋牌', | |
|     dialog_balloon: '会话框', | |
|     electronics: '电子', | |
|     math: '数学', | |
|     music: '音乐', | |
|     misc: '其他', | |
|     raphael_1: 'raphaeljs.com 集合 1', | |
|     raphael_2: 'raphaeljs.com 集合 2' | |
|   }, | |
|   buttons: [{ | |
|     title: '图元库' | |
|   }] | |
| }; | |
| 
 | |
| var zhCN$1 = /*#__PURE__*/Object.freeze({ | |
|   __proto__: null, | |
|   default: zhCN | |
| }); | |
| 
 | |
| export { extShapes as default }; | |
| //# sourceMappingURL=ext-shapes.js.map
 | |
| 
 |