From ca02ac252b5f65419b4697095843889e77083d17 Mon Sep 17 00:00:00 2001 From: yutent Date: Tue, 12 Mar 2024 14:55:40 +0800 Subject: [PATCH] fixed --- src/eve.js | 51 +++++------------- src/lib/constants.js | 122 +++++++++++++++++++++---------------------- src/svg.js | 9 ++-- src/utils.js | 14 ++--- 4 files changed, 86 insertions(+), 110 deletions(-) diff --git a/src/eve.js b/src/eve.js index fb7d7ed..629319a 100644 --- a/src/eve.js +++ b/src/eve.js @@ -1,24 +1,10 @@ -// Copyright (c) 2017 Adobe Systems Incorporated. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ┌────────────────────────────────────────────────────────────┐ \\ -// │ Eve 0.5.4 - JavaScript Events Library │ \\ -// ├────────────────────────────────────────────────────────────┤ \\ -// │ Author Dmitry Baranovskiy (http://dmitry.baranovskiy.com/) │ \\ -// └────────────────────────────────────────────────────────────┘ \\ +/** + * {} + * @author yutent + * @date 2024/03/12 14:42:41 + */ -let version = '0.5.4', - has = 'hasOwnProperty', +let has = 'hasOwnProperty', separator = /[\.\/]/, comaseparator = /\s*,\s*/, wildcard = '*', @@ -50,9 +36,7 @@ let version = '0.5.4', function (ar) { return ar instanceof Array || objtos.call(ar) == '[object Array]' }, - /*\ - * eve - [ method ] + /* * Fires event with given `name`, given scope and other parameters. @@ -61,10 +45,9 @@ let version = '0.5.4', - varargs (...) the rest of arguments will be sent to event handlers = (object) array of returned values from the listeners. Array has two methods `.firstDefined()` and `.lastDefined()` to get first or last not `undefined` value. - \*/ - eve = function (name, scope) { + */ + eve = function (name, scope, ...args) { let oldstop = stop, - args = Array.prototype.slice.call(arguments, 2), listeners = eve.listeners(name), z = 0, l, @@ -124,16 +107,14 @@ let version = '0.5.4', } // Undocumented. Debug only. eve._events = events -/*\ - * eve.listeners - [ method ] +/* * Internal method which gives you array of all event handlers that will be triggered by the given `name`. - name (string) name of the event, dot (`.`) or slash (`/`) separated = (array) array of event handlers - \*/ + */ eve.listeners = function (name) { let names = isArray(name) ? name : name.split(separator), e = events, @@ -184,9 +165,7 @@ eve.separator = function (sep) { separator = /[\.\/]/ } } -/*\ - * eve.on - [ method ] +/* ** * Binds given event handler with a given name. You can use wildcards “`*`” for the names: | eve.on("*.under.*", f); @@ -208,16 +187,14 @@ eve.separator = function (sep) { * * If you want to put your handler before non-indexed handlers, specify a negative value. * Note: I assume most of the time you don’t need to worry about z-index, but it’s nice to have this feature “just in case”. - \*/ + */ eve.on = function (name, f) { - if (typeof f != 'function') { - return function () {} - } let names = isArray(name) ? isArray(name[0]) ? name : [name] : Str(name).split(comaseparator) + for (let i = 0, ii = names.length; i < ii; i++) { ;(function (name) { let names = isArray(name) ? name : Str(name).split(separator), diff --git a/src/lib/constants.js b/src/lib/constants.js index 379e295..afa03c6 100644 --- a/src/lib/constants.js +++ b/src/lib/constants.js @@ -10,67 +10,67 @@ export const xlink = 'http://www.w3.org/1999/xlink' export const xmlns = 'http://www.w3.org/2000/svg' export const CSS_ATTR = { - // 'alignment-baseline': 1, - // 'baseline-shift': 1, - // clip: 1, - // 'clip-path': 1, - // 'clip-rule': 1, - // color: 1, - // 'color-interpolation': 1, - // 'color-interpolation-filters': 1, - // 'color-profile': 1, - // 'color-rendering': 1, - // cursor: 1, - // direction: 1, - // display: 1, - // 'dominant-baseline': 1, - // 'enable-background': 1, - // fill: 1, - // 'fill-opacity': 1, - // 'fill-rule': 1, - // filter: 1, - // 'flood-color': 1, - // 'flood-opacity': 1, - // font: 1, - // 'font-family': 1, - // 'font-size': 1, - // 'font-size-adjust': 1, - // 'font-stretch': 1, - // 'font-style': 1, - // 'font-variant': 1, - // 'font-weight': 1, - // 'glyph-orientation-horizontal': 1, - // 'glyph-orientation-vertical': 1, - // 'image-rendering': 1, - // kerning: 1, - // 'letter-spacing': 1, - // 'lighting-color': 1, - // marker: 1, - // 'marker-end': 1, - // 'marker-mid': 1, - // 'marker-start': 1, - // mask: 1, - // opacity: 1, - // overflow: 1, - // 'pointer-events': 1, - // 'shape-rendering': 1, - // 'stop-color': 1, - // 'stop-opacity': 1, - // stroke: 1, - // 'stroke-dasharray': 1, - // 'stroke-dashoffset': 1, - // 'stroke-linecap': 1, - // 'stroke-linejoin': 1, - // 'stroke-miterlimit': 1, - // 'stroke-opacity': 1, - // 'stroke-width': 1, - // 'text-anchor': 1, - // 'text-decoration': 1, - // 'text-rendering': 1, - // 'unicode-bidi': 1, - // visibility: 1, - // 'word-spacing': 1, - // 'writing-mode': 1 + 'alignment-baseline': 1, + 'baseline-shift': 1, + clip: 1, + 'clip-path': 1, + 'clip-rule': 1, + color: 1, + 'color-interpolation': 1, + 'color-interpolation-filters': 1, + 'color-profile': 1, + 'color-rendering': 1, + cursor: 1, + direction: 1, + display: 1, + 'dominant-baseline': 1, + 'enable-background': 1, + fill: 1, + 'fill-opacity': 1, + 'fill-rule': 1, + filter: 1, + 'flood-color': 1, + 'flood-opacity': 1, + font: 1, + 'font-family': 1, + 'font-size': 1, + 'font-size-adjust': 1, + 'font-stretch': 1, + 'font-style': 1, + 'font-variant': 1, + 'font-weight': 1, + 'glyph-orientation-horizontal': 1, + 'glyph-orientation-vertical': 1, + 'image-rendering': 1, + kerning: 1, + 'letter-spacing': 1, + 'lighting-color': 1, + marker: 1, + 'marker-end': 1, + 'marker-mid': 1, + 'marker-start': 1, + mask: 1, + opacity: 1, + overflow: 1, + 'pointer-events': 1, + 'shape-rendering': 1, + 'stop-color': 1, + 'stop-opacity': 1, + stroke: 1, + 'stroke-dasharray': 1, + 'stroke-dashoffset': 1, + 'stroke-linecap': 1, + 'stroke-linejoin': 1, + 'stroke-miterlimit': 1, + 'stroke-opacity': 1, + 'stroke-width': 1, + 'text-anchor': 1, + 'text-decoration': 1, + 'text-rendering': 1, + 'unicode-bidi': 1, + visibility: 1, + 'word-spacing': 1, + 'writing-mode': 1 } export const ISURL = /^url\(['"]?([^\)]+?)['"]?\)$/i diff --git a/src/svg.js b/src/svg.js index 29df646..fad41c3 100644 --- a/src/svg.js +++ b/src/svg.js @@ -987,19 +987,19 @@ export class Paper { */ rect(x, y, w, h, rx, ry) { let attr - if (ry == null) { + if (ry === void 0) { ry = rx } if (is(x, 'object') && x == '[object Object]') { attr = x - } else if (x != null) { + } else if (x !== void 0) { attr = { x: x, y: y, width: w, height: h } - if (rx != null) { + if (rx !== void 0) { attr.rx = rx attr.ry = ry } @@ -1403,7 +1403,6 @@ eve.on('snap.util.getattr', function () { eve.on('snap.util.attr', function (value) { let key = eve.nt().split('.').at(-1) - let attr = { [key]: value } let css = key.replace(/[A-Z]/g, function (letter) { return '-' + letter.toLowerCase() @@ -1411,6 +1410,6 @@ eve.on('snap.util.attr', function (value) { if (CSS_ATTR[css]) { this.node.style[css] = value == null ? E : value } else { - $(this.node, attr) + $(this.node, { [css]: value }) } }) diff --git a/src/utils.js b/src/utils.js index b2b32f6..afb6b6c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -29,21 +29,21 @@ export function is(o, type) { export function $(el, attr) { if (attr) { - if (el == '#text') { + if (el === '#text') { el = doc.createTextNode(attr.text || attr['#text'] || '') } - if (el == '#comment') { + if (el === '#comment') { el = doc.createComment(attr.text || attr['#text'] || '') } - if (typeof el == 'string') { + if (typeof el === 'string') { el = $(el) } - if (typeof attr == 'string') { - if (el.nodeType == 1) { - if (attr.slice(0, 6) == 'xlink:') { + if (typeof attr === 'string') { + if (el.nodeType === 1) { + if (attr.slice(0, 6) === 'xlink:') { return el.getAttributeNS(xlink, attr.slice(6)) } - if (attr.slice(0, 4) == 'xml:') { + if (attr.slice(0, 4) === 'xml:') { return el.getAttributeNS(xmlns, attr.slice(4)) } return el.getAttribute(attr)