1 line
25 KiB
Plaintext
1 line
25 KiB
Plaintext
{"version":3,"file":"ext-shapes.js","sources":["../../../src/editor/extensions/ext-shapes.js"],"sourcesContent":["/**\n * @file ext-shapes.js\n *\n * @license MIT\n *\n * @copyright 2010 Christian Tzurcanu, 2010 Alexis Deveria\n *\n */\n\nexport default {\n name: 'shapes',\n async init ({$, importLocale}) {\n const strings = await importLocale();\n const svgEditor = this;\n const canv = svgEditor.canvas;\n const svgroot = canv.getRootElem();\n let lastBBox = {};\n\n // This populates the category list\n const {categories} = strings;\n /* eslint-disable max-len */\n const library = {\n basic: {\n data: {\n heart: 'm150,73c61,-175 300,0 0,225c-300,-225 -61,-400 0,-225z',\n frame: 'm0,0l300,0l0,300l-300,0zm35,-265l0,230l230,0l0,-230z',\n donut: 'm1,150l0,0c0,-82.29042 66.70958,-149 149,-149l0,0c39.51724,0 77.41599,15.69816 105.35889,43.64108c27.94293,27.94293 43.64111,65.84165 43.64111,105.35892l0,0c0,82.29041 -66.70958,149 -149,149l0,0c-82.29041,0 -149,-66.70959 -149,-149zm74.5,0l0,0c0,41.1452 33.35481,74.5 74.5,74.5c41.14522,0 74.5,-33.3548 74.5,-74.5c0,-41.1452 -33.3548,-74.5 -74.5,-74.5l0,0c-41.14519,0 -74.5,33.35481 -74.5,74.5z',\n triangle: 'm1,280.375l149,-260.75l149,260.75z',\n right_triangle: 'm1,299l0,-298l298,298z',\n diamond: 'm1,150l149,-149l149,149l-149,149l-149,-149z',\n pentagon: 'm1.00035,116.97758l148.99963,-108.4053l148.99998,108.4053l-56.91267,175.4042l-184.1741,0l-56.91284,-175.4042z',\n hexagon: 'm1,149.99944l63.85715,-127.71428l170.28572,0l63.85713,127.71428l-63.85713,127.71428l-170.28572,0l-63.85715,-127.71428z',\n septagon1: 'm0.99917,191.06511l29.51249,-127.7108l119.48833,-56.83673l119.48836,56.83673l29.51303,127.7108l-82.69087,102.41679l-132.62103,0l-82.69031,-102.41679z',\n heptagon: 'm1,88.28171l87.28172,-87.28171l123.43653,0l87.28172,87.28171l0,123.43654l-87.28172,87.28172l-123.43653,0l-87.28172,-87.28172l0,-123.43654z',\n decagon: 'm1,150.00093l28.45646,-88.40318l74.49956,-54.63682l92.08794,0l74.50002,54.63682l28.45599,88.40318l-28.45599,88.40318l-74.50002,54.63681l-92.08794,0l-74.49956,-54.63681l-28.45646,-88.40318z',\n dodecagon: 'm1,110.07421l39.92579,-69.14842l69.14842,-39.92579l79.85159,0l69.14842,39.92579l39.92578,69.14842l0,79.85159l-39.92578,69.14842l-69.14842,39.92578l-79.85159,0l-69.14842,-39.92578l-39.92579,-69.14842l0,-79.85159z',\n star_points_5: 'm1,116.58409l113.82668,0l35.17332,-108.13487l35.17334,108.13487l113.82666,0l-92.08755,66.83026l35.17514,108.13487l-92.08759,-66.83208l-92.08757,66.83208l35.17515,-108.13487l-92.08758,-66.83026z',\n trapezoid: 'm1,299l55.875,-298l186.25001,0l55.87498,298z',\n arrow_up: 'm1.49805,149.64304l148.50121,-148.00241l148.50121,148.00241l-74.25061,0l0,148.71457l-148.5012,0l0,-148.71457z',\n vertical_scrool: 'm37.375,261.625l0,-242.9375l0,0c0,-10.32083 8.36669,-18.6875 18.6875,-18.6875l224.25,0c10.32083,0 18.6875,8.36667 18.6875,18.6875c0,10.32081 -8.36667,18.6875 -18.6875,18.6875l-18.6875,0l0,242.9375c0,10.32083 -8.36668,18.6875 -18.6875,18.6875l-224.25,0l0,0c-10.32083,0 -18.6875,-8.36667 -18.6875,-18.6875c0,-10.32083 8.36667,-18.6875 18.6875,-18.6875zm37.375,-261.625l0,0c10.32081,0 18.6875,8.36667 18.6875,18.6875c0,10.32081 -8.36669,18.6875 -18.6875,18.6875c-5.1604,0 -9.34375,-4.18335 -9.34375,-9.34375c0,-5.16041 4.18335,-9.34375 9.34375,-9.34375l18.6875,0m186.875,18.6875l-205.5625,0m-37.375,224.25l0,0c5.1604,0 9.34375,4.18335 9.34375,9.34375c0,5.1604 -4.18335,9.34375 -9.34375,9.34375l18.6875,0m-18.6875,18.6875l0,0c10.32081,0 18.6875,-8.36667 18.6875,-18.6875l0,-18.6875',\n smiley: 'm68.49886,214.78838q81.06408,55.67332 161.93891,0m-144.36983,-109.9558c0,-8.60432 6.97517,-15.57949 15.57948,-15.57949c8.60431,0 15.57948,6.97517 15.57948,15.57949c0,8.60431 -6.97517,15.57947 -15.57948,15.57947c-8.60431,0 -15.57948,-6.97516 -15.57948,-15.57947m95.83109,0c0,-8.60432 6.97517,-15.57949 15.57948,-15.57949c8.60431,0 15.57947,6.97517 15.57947,15.57949c0,8.60431 -6.97516,15.57947 -15.57947,15.57947c-8.60429,0 -15.57948,-6.97516 -15.57948,-15.57947m-181.89903,44.73038l0,0c0,-82.60133 66.96162,-149.56296 149.56296,-149.56296c82.60135,0 149.56296,66.96162 149.56296,149.56296c0,82.60135 -66.96161,149.56296 -149.56296,149.56296c-82.60133,0 -149.56296,-66.96161 -149.56296,-149.56296zm0,0l0,0c0,-82.60133 66.96162,-149.56296 149.56296,-149.56296c82.60135,0 149.56296,66.96162 149.56296,149.56296c0,82.60135 -66.96161,149.56296 -149.56296,149.56296c-82.60133,0 -149.56296,-66.96161 -149.56296,-149.56296z',\n left_braket: 'm174.24565,298.5c-13.39009,0 -24.24489,-1.80908 -24.24489,-4.04065l0,-140.4187c0,-2.23158 -10.85481,-4.04065 -24.2449,-4.04065l0,0c13.39009,0 24.2449,-1.80907 24.2449,-4.04065l0,-140.4187l0,0c0,-2.23159 10.8548,-4.04066 24.24489,-4.04066',\n uml_actor: 'm40.5,100l219,0m-108.99991,94.00006l107,105m-107.00009,-106.00006l-100,106m99.5,-231l0,125m33.24219,-158.75781c0,18.35916 -14.88303,33.24219 -33.24219,33.24219c-18.35916,0 -33.2422,-14.88303 -33.2422,-33.24219c0.00002,-18.35915 14.88304,-33.24219 33.2422,-33.24219c18.35916,0 33.24219,14.88304 33.24219,33.24219z',\n dialog_balloon_1: 'm0.99786,35.96579l0,0c0,-19.31077 15.28761,-34.96524 34.14583,-34.96524l15.52084,0l0,0l74.50001,0l139.68748,0c9.05606,0 17.74118,3.68382 24.14478,10.24108c6.40356,6.55726 10.00107,15.45081 10.00107,24.72416l0,87.41311l0,0l0,52.44785l0,0c0,19.31078 -15.2876,34.96524 -34.14584,34.96524l-139.68748,0l-97.32507,88.90848l22.82506,-88.90848l-15.52084,0c-18.85822,0 -34.14583,-15.65446 -34.14583,-34.96524l0,0l0,-52.44785l0,0z',\n cloud: 'm182.05086,34.31005c-0.64743,0.02048 -1.27309,0.07504 -1.92319,0.13979c-10.40161,1.03605 -19.58215,7.63722 -24.24597,17.4734l-2.47269,7.44367c0.53346,-2.57959 1.35258,-5.08134 2.47269,-7.44367c-8.31731,-8.61741 -19.99149,-12.59487 -31.52664,-10.72866c-11.53516,1.8662 -21.55294,9.3505 -27.02773,20.19925c-15.45544,-9.51897 -34.72095,-8.94245 -49.62526,1.50272c-14.90431,10.44516 -22.84828,28.93916 -20.43393,47.59753l1.57977,7.58346c-0.71388,-2.48442 -1.24701,-5.01186 -1.57977,-7.58346l-0.2404,0.69894c-12.95573,1.4119 -23.58103,11.46413 -26.34088,24.91708c-2.75985,13.45294 2.9789,27.25658 14.21789,34.21291l17.54914,4.26352c-6.1277,0.50439 -12.24542,-0.9808 -17.54914,-4.26352c-8.66903,9.71078 -10.6639,24.08736 -4.94535,35.96027c5.71854,11.87289 17.93128,18.70935 30.53069,17.15887l7.65843,-2.02692c-2.46413,1.0314 -5.02329,1.70264 -7.65843,2.02692c7.15259,13.16728 19.01251,22.77237 32.93468,26.5945c13.92217,3.82214 28.70987,1.56322 41.03957,-6.25546c10.05858,15.86252 27.91113,24.19412 45.81322,21.38742c17.90208,-2.8067 32.66954,-16.26563 37.91438,-34.52742l1.82016,-10.20447c-0.27254,3.46677 -0.86394,6.87508 -1.82016,10.20447c12.31329,8.07489 27.80199,8.52994 40.52443,1.18819c12.72244,-7.34175 20.6609,-21.34155 20.77736,-36.58929l-4.56108,-22.7823l-17.96776,-15.41455c13.89359,8.70317 22.6528,21.96329 22.52884,38.19685c16.5202,0.17313 30.55292,-13.98268 36.84976,-30.22897c6.29684,-16.24631 3.91486,-34.76801 -6.2504,-48.68089c4.21637,-10.35873 3.96622,-22.14172 -0.68683,-32.29084c-4.65308,-10.14912 -13.23602,-17.69244 -23.55914,-20.65356c-2.31018,-13.45141 -11.83276,-24.27162 -24.41768,-27.81765c-12.58492,-3.54603 -25.98557,0.82654 -34.41142,11.25287l-5.11707,8.63186c1.30753,-3.12148 3.01521,-6.03101 5.11707,-8.63186c-5.93959,-8.19432 -15.2556,-12.8181 -24.96718,-12.51096z',\n cylinder: 'm299.0007,83.77844c0,18.28676 -66.70958,33.11111 -149.00002,33.11111m149.00002,-33.11111l0,0c0,18.28676 -66.70958,33.11111 -149.00002,33.11111c-82.29041,0 -148.99997,-14.82432 -148.99997,-33.11111m0,0l0,0c0,-18.28674 66.70956,-33.1111 148.99997,-33.1111c82.29044,0 149.00002,14.82436 149.00002,33.1111l0,132.44449c0,18.28674 -66.70958,33.11105 -149.00002,33.11105c-82.29041,0 -148.99997,-14.82431 -148.99997,-33.11105z',\n arrow_u_turn: 'm1.00059,299.00055l0,-167.62497l0,0c0,-72.00411 58.37087,-130.37499 130.375,-130.37499l0,0l0,0c34.57759,0 67.73898,13.7359 92.18906,38.18595c24.45006,24.45005 38.18593,57.61144 38.18593,92.18904l0,18.625l37.24997,0l-74.49995,74.50002l-74.50002,-74.50002l37.25,0l0,-18.625c0,-30.8589 -25.0161,-55.87498 -55.87498,-55.87498l0,0l0,0c-30.85892,0 -55.875,25.01608 -55.875,55.87498l0,167.62497z',\n arrow_left_up: 'm0.99865,224.5l74.50004,-74.5l0,37.25l111.74991,0l0,-111.75l-37.25,0l74.5,-74.5l74.5,74.5l-37.25,0l0,186.25l-186.24989,0l0,37.25l-74.50005,-74.5z',\n maximize: 'm1.00037,150.34581l55.30305,-55.30267l0,27.65093l22.17356,0l0,-44.21833l44.21825,0l0,-22.17357l-27.65095,0l55.30267,-55.30292l55.3035,55.30292l-27.65175,0l0,22.17357l44.21835,0l0,44.21833l22.17357,0l0,-27.65093l55.30345,55.30267l-55.30345,55.3035l0,-27.65175l-22.17357,0l0,44.21834l-44.21835,0l0,22.17355l27.65175,0l-55.3035,55.30348l-55.30267,-55.30348l27.65095,0l0,-22.17355l-44.21825,0l0,-44.21834l-22.17356,0l0,27.65175l-55.30305,-55.3035z',\n cross: 'm0.99844,99.71339l98.71494,0l0,-98.71495l101.26279,0l0,98.71495l98.71495,0l0,101.2628l-98.71495,0l0,98.71494l-101.26279,0l0,-98.71494l-98.71494,0z',\n plaque: 'm-0.00197,49.94376l0,0c27.5829,0 49.94327,-22.36036 49.94327,-49.94327l199.76709,0l0,0c0,27.5829 22.36037,49.94327 49.94325,49.94327l0,199.7671l0,0c-27.58289,0 -49.94325,22.36034 -49.94325,49.94325l-199.76709,0c0,-27.58292 -22.36037,-49.94325 -49.94327,-49.94325z',\n page: 'm249.3298,298.99744l9.9335,-39.73413l39.73413,-9.93355l-49.66763,49.66768l-248.33237,0l0,-298.00001l298.00001,0l0,248.33234'\n\n },\n buttons: []\n }\n };\n /* eslint-enable max-len */\n const modeId = 'shapelib';\n const startClientPos = {};\n\n let currentD, curShapeId, curShape, startX, startY;\n let curLib = library.basic;\n\n /**\n *\n * @returns {void}\n */\n function loadIcons () {\n $('#shape_buttons').empty().append(curLib.buttons);\n }\n\n /**\n * @typedef {PlainObject} module:Extension.Shapes.Shapes\n * @property {PlainObject<string, string>} data\n * @property {Integer} [size]\n * @property {boolean} [fill]\n */\n\n /**\n * @param {string|\"basic\"} cat Category ID\n * @param {module:Extension.Shapes.Shapes} shapes\n * @returns {void}\n */\n function makeButtons (cat, shapes) {\n const size = curLib.size || 300;\n const fill = curLib.fill || false;\n const off = size * 0.05;\n const vb = [-off, -off, size + off * 2, size + off * 2].join(' ');\n const stroke = fill ? 0 : (size / 30);\n const shapeIcon = new DOMParser().parseFromString(\n '<svg xmlns=\"http://www.w3.org/2000/svg\">' +\n '<svg viewBox=\"' + vb + '\">' +\n '<path fill=\"' + (fill ? '#333' : 'none') +\n '\" stroke=\"#000\" stroke-width=\"' + stroke + '\" /></svg></svg>',\n 'text/xml'\n );\n\n const width = 24;\n const height = 24;\n shapeIcon.documentElement.setAttribute('width', width);\n shapeIcon.documentElement.setAttribute('height', height);\n const svgElem = $(document.importNode(shapeIcon.documentElement, true));\n\n const {data} = shapes;\n\n curLib.buttons = Object.entries(data).map(([id, pathD]) => {\n const icon = svgElem.clone();\n icon.find('path').attr('d', pathD);\n\n const iconBtn = icon.wrap('<div class=\"tool_button\">').parent().attr({\n id: modeId + '_' + id,\n title: id\n });\n // Store for later use\n return iconBtn[0];\n });\n }\n\n /**\n * @param {string|\"basic\"} catId\n * @returns {void}\n */\n function loadLibrary (catId) {\n const lib = library[catId];\n\n if (!lib) {\n $('#shape_buttons').html(strings.loading);\n $.getJSON('./shapelib/' + catId + '.json', function (result) {\n curLib = library[catId] = {\n data: result.data,\n size: result.size,\n fill: result.fill\n };\n makeButtons(catId, result);\n loadIcons();\n });\n return;\n }\n curLib = lib;\n if (!lib.buttons.length) { makeButtons(catId, lib); }\n loadIcons();\n }\n const buttons = [{\n id: 'tool_shapelib',\n icon: 'shapes.png',\n type: 'mode_flyout', // _flyout\n position: 6,\n events: {\n click () {\n canv.setMode(modeId);\n }\n }\n }];\n\n return {\n svgicons: 'ext-shapes.xml',\n buttons: strings.buttons.map((button, i) => {\n return Object.assign(buttons[i], button);\n }),\n callback () {\n $('<style>').text(`\n #shape_buttons {\n overflow: auto;\n width: 180px;\n max-height: 300px;\n display: table-cell;\n vertical-align: middle;\n }\n #shape_cats {\n min-width: 110px;\n display: table-cell;\n vertical-align: middle;\n height: 300px;\n }\n #shape_cats > div {\n line-height: 1em;\n padding: .5em;\n border:1px solid #B0B0B0;\n background: #E8E8E8;\n margin-bottom: -1px;\n }\n #shape_cats div:hover {\n background: #FFFFCC;\n }\n #shape_cats div.current {\n font-weight: bold;\n }\n `).appendTo('head');\n\n const btnDiv = $('<div id=\"shape_buttons\">');\n $('#tools_shapelib > *').wrapAll(btnDiv);\n\n const shower = $('#tools_shapelib_show');\n\n loadLibrary('basic');\n\n // Do mouseup on parent element rather than each button\n $('#shape_buttons').mouseup(function (evt) {\n const btn = $(evt.target).closest('div.tool_button');\n\n if (!btn.length) { return; }\n\n const copy = btn.children().clone();\n shower.children(':not(.flyout_arrow_horiz)').remove();\n shower\n .append(copy)\n .attr('data-curopt', '#' + btn[0].id) // This sets the current mode\n .mouseup();\n canv.setMode(modeId);\n\n curShapeId = btn[0].id.substr((modeId + '_').length);\n currentD = curLib.data[curShapeId];\n\n $('.tools_flyout').fadeOut();\n });\n\n const shapeCats = $('<div id=\"shape_cats\">');\n\n let catStr = '';\n $.each(categories, function (id, label) {\n catStr += '<div data-cat=' + id + '>' + label + '</div>';\n });\n\n shapeCats.html(catStr).children().bind('mouseup', function () {\n const catlink = $(this);\n catlink.siblings().removeClass('current');\n catlink.addClass('current');\n\n loadLibrary(catlink.attr('data-cat'));\n // Get stuff\n return false;\n });\n\n shapeCats.children().eq(0).addClass('current');\n\n $('#tools_shapelib').append(shapeCats);\n\n shower.mouseup(function () {\n canv.setMode(currentD ? modeId : 'select');\n });\n $('#tool_shapelib').remove();\n\n const h = $('#tools_shapelib').height();\n $('#tools_shapelib').css({\n 'margin-top': -(h / 2 - 15),\n 'margin-left': 3\n });\n // Now add shape categories from locale\n const cats = {};\n Object.entries(categories).forEach(([o, categoryName]) => {\n cats['#shape_cats [data-cat=\"' + o + '\"]'] = categoryName;\n });\n this.setStrings('content', cats);\n },\n mouseDown (opts) {\n const mode = canv.getMode();\n if (mode !== modeId) { return undefined; }\n\n startX = opts.start_x;\n const x = startX;\n startY = opts.start_y;\n const y = startY;\n const curStyle = canv.getStyle();\n\n startClientPos.x = opts.event.clientX;\n startClientPos.y = opts.event.clientY;\n\n curShape = canv.addSVGElementFromJson({\n element: 'path',\n curStyles: true,\n attr: {\n d: currentD,\n id: canv.getNextId(),\n opacity: curStyle.opacity / 2,\n style: 'pointer-events:none'\n }\n });\n\n // Make sure shape uses absolute values\n if ((/[a-z]/).test(currentD)) {\n currentD = curLib.data[curShapeId] = canv.pathActions.convertPath(curShape);\n curShape.setAttribute('d', currentD);\n canv.pathActions.fixEnd(curShape);\n }\n curShape.setAttribute('transform', 'translate(' + x + ',' + y + ') scale(0.005) translate(' + -x + ',' + -y + ')');\n\n canv.recalculateDimensions(curShape);\n\n /* const tlist = */ canv.getTransformList(curShape);\n\n lastBBox = curShape.getBBox();\n\n return {\n started: true\n };\n },\n mouseMove (opts) {\n const mode = canv.getMode();\n if (mode !== modeId) { return; }\n\n const zoom = canv.getZoom();\n const evt = opts.event;\n\n const x = opts.mouse_x / zoom;\n const y = opts.mouse_y / zoom;\n\n const tlist = canv.getTransformList(curShape),\n box = curShape.getBBox(),\n left = box.x, top = box.y;\n // {width, height} = box,\n // const dx = (x - startX), dy = (y - startY);\n\n const newbox = {\n x: Math.min(startX, x),\n y: Math.min(startY, y),\n width: Math.abs(x - startX),\n height: Math.abs(y - startY)\n };\n\n /*\n // This is currently serving no purpose, so commenting out\n let sy = height ? (height + dy) / height : 1,\n sx = width ? (width + dx) / width : 1;\n */\n\n let sx = (newbox.width / lastBBox.width) || 1;\n let sy = (newbox.height / lastBBox.height) || 1;\n\n // Not perfect, but mostly works...\n let tx = 0;\n if (x < startX) {\n tx = lastBBox.width;\n }\n let ty = 0;\n if (y < startY) {\n ty = lastBBox.height;\n }\n\n // update the transform list with translate,scale,translate\n const translateOrigin = svgroot.createSVGTransform(),\n scale = svgroot.createSVGTransform(),\n translateBack = svgroot.createSVGTransform();\n\n translateOrigin.setTranslate(-(left + tx), -(top + ty));\n if (!evt.shiftKey) {\n const max = Math.min(Math.abs(sx), Math.abs(sy));\n\n sx = max * (sx < 0 ? -1 : 1);\n sy = max * (sy < 0 ? -1 : 1);\n }\n scale.setScale(sx, sy);\n\n translateBack.setTranslate(left + tx, top + ty);\n tlist.appendItem(translateBack);\n tlist.appendItem(scale);\n tlist.appendItem(translateOrigin);\n\n canv.recalculateDimensions(curShape);\n\n lastBBox = curShape.getBBox();\n },\n mouseUp (opts) {\n const mode = canv.getMode();\n if (mode !== modeId) { return undefined; }\n\n const keepObject = (opts.event.clientX !== startClientPos.x && opts.event.clientY !== startClientPos.y);\n\n return {\n keep: keepObject,\n element: curShape,\n started: false\n };\n }\n };\n }\n};\n"],"names":["name","init","loadIcons","makeButtons","loadLibrary","catId","lib","library","$","html","strings","loading","getJSON","result","curLib","data","size","fill","buttons","length","cat","shapes","off","vb","join","stroke","shapeIcon","DOMParser","parseFromString","documentElement","setAttribute","svgElem","document","importNode","Object","entries","map","id","pathD","icon","clone","find","attr","wrap","parent","modeId","title","empty","append","importLocale","canv","_this","canvas","svgroot","getRootElem","lastBBox","categories","startClientPos","basic","heart","frame","donut","triangle","right_triangle","diamond","pentagon","hexagon","septagon1","heptagon","decagon","dodecagon","star_points_5","trapezoid","arrow_up","vertical_scrool","smiley","left_braket","uml_actor","dialog_balloon_1","cloud","cylinder","arrow_u_turn","arrow_left_up","maximize","cross","plaque","page","type","position","events","click","setMode","svgicons","button","i","assign","callback","text","appendTo","btnDiv","wrapAll","shower","mouseup","evt","btn","target","closest","copy","children","remove","curShapeId","substr","currentD","fadeOut","shapeCats","catStr","each","label","bind","catlink","this","siblings","removeClass","addClass","eq","h","height","css","cats","forEach","o","categoryName","setStrings","mouseDown","opts","getMode","x","startX","start_x","y","startY","start_y","curStyle","getStyle","event","clientX","clientY","curShape","addSVGElementFromJson","element","curStyles","d","getNextId","opacity","style","test","pathActions","convertPath","fixEnd","recalculateDimensions","getTransformList","getBBox","started","mouseMove","zoom","getZoom","mouse_x","mouse_y","tlist","box","left","top","newbox","Math","min","abs","sx","width","sy","tx","ty","translateOrigin","createSVGTransform","scale","translateBack","setTranslate","shiftKey","max","setScale","appendItem","mouseUp","keep"],"mappings":"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"} |