npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

algomotion

v0.7.2

Published

A simple canvas painting util for algorithm visualization

Downloads

44

Readme

AlgoMotion

用于算法可视化的轻量级Canvas绘制工具

Install

npm i algomotion

Demo

API

General

配置项

  • Set

    | 名称 | 含义(涉及数字,单位均为px) | 默认值 | | ------------------- | ---------------------------------------------------------- | --------- | | height | Canvas高度 | 250 | | width | Canvas宽度 | 800 | | blockMaxSize | 数字块(最大)边长(圆形直径) | 50 | | emphasisColor | 强调块背景色 | #bedce3 | | emphasisTextColor | 强调块字体颜色 | #1c474d | | textColor | 普通块字体颜色 | #eefcf5 | | fillColor | 普通块背景色 | #14cdc8 | | barrierColor | Barrier的颜色 | red | | font | 数字大小 | 20 | | hidpi | HiDPI支持 | true | | fps | 动画帧率 | 60 | | speed | 动画执行速度 | 1.0 | | motion | 是否使用movesReader读取mvs中的操作步骤 | false | | postion | 启用motion时,绑定mvs执行的进度 | undefined | | staticTime | 定义一些静止动作的持续时间(如强调、空白动作等)(单位为浩渺) | 800 |

position使用方法:

  • Vue
let value = ref(0);
let set = {
	position: [value]
}
  • 普通JS请查看Demo源码,postion会在控制台打印。
  • info

    | 名称 | 含义 | | ----- | ------------ | | dta | 放置数据 | | mvs | 放置操作步骤 |

方法

| 名称 | 作用 | | ----------------------- | ------------------------------------------------------------ | | init(set,info,canvas) | 初始化函数 | | destory() | 析构函数 | | pause(boolean) | 控制暂停继续动画 | | setMovesReader(func) | 设定mvs处理器,处理器为一个函数,默认详见:默认MovesReader。 | | setPosition(idx) | 控制关键帧的位置 | | clear() | 清除所有的强调状态和标记 |

Array

配置项

  • set

    | 名称 | 含义(涉及数字,单位均为px) | 默认值 | | -------------- | ---------------------------- | ------ | | maxGap | 块最大间隔 | 25 | | blockRadius | 块圆角半径 | 5 | | motionOffset | 动画的上下偏移范围 | 50 |

方法

| 名称 | 作用 | | ----------------------------- | ------------------------------------------------------------ | | swapBlock(idx1,idx2) | 提供index,展示交换动画 | | emphasizeBlock(idx,boolean) | 提供index和一个布尔值,用于切换是否强调展示 | | addBarrier(arr) | 提供一个数组,数组内为index,用于在对应块之前放置分隔标记(兼容旧参数:仅一个数字) | | removeBarrier(arr) | 提供一个数组,数组内为index,用于在对应块之前删除分隔标记(兼容旧参数:仅一个数字) | | addBlock(idx,num) | 添加一个新数字块 | | removeBlock(idx) | 删除一个数字块 |

Tree

配置项

  • Set

    | 名称 | 含义(涉及数字,单位均为px) | 默认值 | | ------------------- | ---------------------------- | ------- | | maxLayerHeight | 树每一层的最大高度 | 70 | | emphasisLineColor | 强调连线颜色 | #1c474d |

    另外,树枝的颜色为fillColor,交换(swap)时会变为emphasisTextColor

  • Info

    树结点的索引,是其在完美二叉树中的位置,从0开始。

方法

| 名称 | 作用 | | ---------------------------- | --------------------------------------------- | | swapNode(idx1,idx2) | 提供index,展示交换动画 | | emphasizeNode(idx,boolean) | 提供index和一个布尔值,用于切换是否强调展示 | | addNode(idx,num) | 添加一个新结点 | | removeNode(idx) | 删除一个结点 |

Graph

基于较为原始的力引导布局的无向图

配置项

  • Set

    | 名称 | 含义(涉及数字,单位均为px) | 默认值 | | ------------------- | ------------------------------------ | ------- | | blockSize | 每个结点的大小(替代原blockMaxSize) | 40 | | emphasisLineColor | 强调连线颜色 | #1c474d |

  • Info

    | 名称 | 含义 | | ----- | ------------------------------------ | | rel | 放置关系矩阵(二维)[建议仅填充上三角] |

方法

| 名称 | 作用 | | ------------------------------------ | ------------------------------------------------- | | emphasizeNode(idx,boolean) | 提供index和一个布尔值,用于切换是否强调展示结点 | | emphasizeLink(idx1, idx2, boolean) | 提供index和一个布尔值,用于切换是否强调展示边 |

关于默认的MovesReader

  • Array

    支持的mvs格式(8种):

    get(index),swap(index1,index2),add(idx,number),remove(index),barrier(arr),unbarrier(arr),clear(),blank()

    其中:

    • get(index)为高亮一次第index个元素
    • barrier(arr)在第index个元素前添加标记,即Demo中的AddBarrier,可以传递多个参数作为index,如barrier(1,2)
    • unbarrier(arr)用法同上,但是用以删除标记
    • clear()为清除所有barrier标记
    • blank()为什么都不做,等待一次,用于配合其他动作
  • Tree

    支持的mvs格式(5种):

    get(index),swap(index1,index2),insert(index,number),remove(index),blank()

    其中:

    • index为结点在完全二叉树中的位置
    • blank()为什么都不做,等待一次,用于配合其他动作
  • Graph

    支持的mvs格式(6种):

    emp(index),unemp(index),link(index1,index2),unlink(index1,index2),clear(),blank()

    其中:

    • emp/unemp为切换结点的强调展示状态

    • link/unlink为切换边的强调展示状态

    • blank()为什么都不做,等待一次,用于配合其他动作