Components for interactive scientific writing, reactive documents and explorable explanations.

Overview

curvenote.dev

@curvenote/article

curvenote/article on npm MIT License Documentation

The goal of @curvenote/article is to provide web-components for interactive scientific writing, reactive documents and explorable explanations. @curvenote/article provides reactive components, equations, and charts as well as layouts for creating interactive scientific articles.

The curvenote/article project is heavily inspired by tangle.js, re-imagined to use web-components! This means you can declaratively write your variables and how to display them in html markup. To get an idea of what that looks like, let's take the canonical example of Tangled Cookies - a simple reactive document.

How many calories in that cookie?

<r-var name="cookies" value="3" format=".4"></r-var>
<r-var name="caloriesPerCookie" value="50"></r-var>
<r-var name="dailyCalories" value="2100"></r-var>

<r-var name="calories" :value="cookies * caloriesPerCookie" format=".0f"></r-var>
<r-var name="dailyPercent" :value="calories / dailyCalories" format=".0%"></r-var>

<p>
  When you eat <r-dynamic bind="cookies" min="2" max="100">cookies</r-dynamic>,
  you consume <r-display bind="calories"></r-display> calories.<br>
  That's <r-display bind="dailyPercent"></r-display> of your recommended daily calories.
</p>

Getting Started

@curvenote/article is based on web-components, which creates custom HTML tags so that they can make writing documents easier. To get started, copy the built javascript file to the head of your page:

<link rel="stylesheet" href="https://unpkg.com/@curvenote/article/dist/curvenote.css">
<script async src="https://unpkg.com/@curvenote/article"></script>

You can also download the latest release from GitHub. If you are running this without a web server, ensure the script has charset="utf-8" in the script tag. You can also install from npm:

>> npm install @curvenote/article

You should then be able to extend the package as you see fit:

import components from '@curvenote/article';

Note that the npm module does not setup the @curvenote/runtime store, nor does it register the components. See the curvenote.ts file for what the built package does to setup the store and register the components.

Documentation

See https://curvenote.dev for full documentation.

Comments
  • Running PR for V1

    Running PR for V1

    Progress

    • Have introduced two packages: store and basic
    • Packages are now in typescript 🎉
    • Packages are now linted (with eslint)!
    • Included testing for the store and evaluation scripts
    • Move to a redux architecture that can include the evaluate middleware or not. (by default this will be included)
    • Opinionated styles are starting to be removed (e.g. color, font)
    • single file for each component
    • Removed boiler-plate code for creating components, including fighting with typescript generics so new components don't have too!!!
    • Performance improvements - only render the components that actually changed! 🚀

    There are a few suggested breaking changes on name/value/bind as well as transform on the display component. I would be curious on hearing from @lrq3000 or @J2thearo on these changes to see if they make sense!

    New Basic Components

    Working with material web components to bring new components!

    • <ink-switch> - material UI switch
    • <ink-checkbox> - material UI checkbox
    • <ink-radio> - material UI radio
    • <ink-select> - material UI select box #9
    • <ink-input> - material UI textarea
    • <ink-visible> - Div that makes things invisible on demand
    • [ ] var list? do we need this? Now that there is CSS control, maybe not?

    Changes to Ink Article

    • Now using <article>
    • Now using <aside> for both asides and callouts. <aside class="callout info">
    • These are now just plain CSS - so should be easy for people to re-theme
    • <ink-code> and <ink-demo> have been moved over
    • <ink-equation> is ported, and works a lot better on the rendering side (no more 1-frame lag)
    • [x] Outline (to make @choldgraf happy) iooxa/ink-article#2
    • [ ] Figure --> <figure> iooxa/ink-article#3
    • [x] Helper functions to render math inline.
    • [x] Quote iooxa/ink-article#4, byline iooxa/ink-article#5
    • [x] Card --> not sure about this one?! iooxa/ink-article#7
    • [ ] Some level of cross-referencing on the page (is this <ink-ref>)? And a numbered attribute? iooxa/ink-article#6

    Charting

    I would like to get this merged and then can move on to the chart library -- it is a different animal and needs some love.

    Resume

    Similar to charting, this should likely be mostly CSS? Different library, out of scope of this PR.

    User-defined functions

    • Execution is now in the main context and can access scripts defined there (see #12)

    Runtime State

    I have moved to a single redux store to manage the state. This is split up into {variables, components} the low-level interface looks like:

    const x = store.dispatch(ink.actions.createVariable('scope.x', 3));
    const max = store.dispatch(ink.actions.createVariable('scope.max', 9));
    
    const range = store.dispatch(ink.actions.createComponent(
      'range', 'scope.myRange',
      { value: { func: 'x' }, min: { value: 1 }, max },
      { change: { func: '{x: value}' } },
    ));
    
    // Can set/get the properties
    x.get()
    x.set(4)
    const { min, max } = range.state;
    

    A version of this will be exposed in the window as ink so that you can get/set variables in other programs which is needed for more control: (e.g. see #12 #10).

    Creating a new component

    I have added a base-class BaseComponent that does the generic registering and unregistering of the component as well as a class wrapper @withInk that injects properties that you define in a ComponentSpec and give the relevant setters/getters for properties and events as well as playing nice with lit-element. The basics of this new setup gets the boiler-plate from 74 --> 18 lines of code (~25% of the size). The @withInk wrapper I think is also more accessible (to debug etc.) than what I had before.

    export const InkDisplaySpec = {
      name: 'display',
      description: 'Inline display of values',
      properties: {
        value: { type: types.PropTypes.number, default: NaN },
        format: { type: types.PropTypes.string, default: '.1f' },
      },
      events: {},
    };
    
    @withInk(InkDisplaySpec, { bind: { type: String, reflect: true } })
    class InkDisplay extends BaseComponent<typeof InkDisplaySpec> {
      updated(updated: PropertyValues) { onBindChange(updated, this); }
    
      render() {
        const { value, format } = this.ink!.state;
        return html`${formatter(value, format)}`;
      }
    }
    

    Breaking Changes

    Name/Value/Bind

    There are a couple of issues with the previous naming conventions. It was is not specific enough for multiple event types (hover, drag, click, etc.) and there is no option for being able to add named components. This could be very helpful to react to events when a component enters the screen, show the component.min value, etc. The previous name attribute was used to set :value="${name}" and bind="{[name]: value}" which amounted to two way binding in the component. This was a handy shortcut and I think it should stay, however, be renamed to bind now that events are explicitly named.

    • name for components will now be used for the actual name of the component (should be unique in that scope)
    • introducing named events, which will allow components to have multiple types of events
    • bind is used as the default event type on components that allow it.

    Previous version:

    When you eat <ink-dynamic name="cookies" min="2" max="100"> cookies</ink-dynamic>,
    you consume <ink-display :value="cookies * 50" format=".0f"/></ink-display> calories.
    

    Changes to:

    When you eat <ink-dynamic bind="cookies" min="2" max="100"> cookies</ink-dynamic>,
    you consume <ink-display :value="cookies * 50" format=".0f"/></ink-display> calories.
    

    This is equivalent to:

    When you eat <ink-dynamic :value="cookies" :change="{cookies: value}" min="2" max="100"> cookies</ink-dynamic>,
    you consume <ink-display :value="cookies * 50" format=".0f"/></ink-display> calories.
    

    Action / Button

    The bind syntax doesn't make sense for the ink-action and ink-button components, it should really be an event and there isn't a value to "bind" to. This should change to :click to return an event transform object.

    Transform

    • I am not convinced that transform should remain on the display component. This can be done in a single call in the :value function: <ink-display :value="fullName.split(' ')[0]">. I do think that it should remain in the dynamic as the value is different than how you might display the variable.

    Questions

    • [x] Should the store package be called runtime? Would be similar to svelte, observable, idyll, etc.
    • [x] Move the repo to @iooxa (likely) probably leave the repo ink-components on github/npm for the main package. So packages are @iooxa/runtime etc.
    • [x] A lot of the ink-article work is really just CSS, these should probably be removed as WebComponents. e.g. ink-aside --> aside ink-article --> article as these are standard HTML components.
      • [x] Is there an HTML equivalent for a callout? update: I think this should be an aside with a class. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside
    • [x] I am questioning things like ink-p and ink-a, these are really common attributes and when parsing (e.g. SEO) have semantic meaning. The visible attribute is the main use case for these so that they react to changes in ink and the <ink-a> might have to be different? There could be something that is added that looks at the dom and toggles these on/off based on the state?
      • I really wanted to change to inherited components <a is="ink-a">, but that is not supported by Safari. 😞 (and because of that lit-element doesn't support it either). Update: This could be done by wrapping the <a> in a custom component.
      • [ ] Explore the visible attribute on children of an article
      • [ ] Explore ink-preview
    • [ ] Should the setter on variable/component shortcuts return a promise? Right now it is sync, but that might not be the case if different evaluation middleware is used.
    • [ ] Add an example of a named component that is referenced.
    • [ ] Can you get access to the variable properties somehow? Sometimes nice for format so that you can define it once (right now this is set on bind if it is defined in the spec).

    Outstanding Work

    • Adding in the other packages (CV, Chart, Article)
    • Packaging and publishing
    • Move the code I have left in /src into appropriate packages
    • Documentation update.

    See #11

    opened by rowanc1 14
  • Calling a user defined javascript function?

    Calling a user defined javascript function?

    Is it possible to make an ink-component such as ink-range callback a user-defined javascript function?

    I tried to do something like this but this doesn't work:

    <ink-range :value="x" bind="{x: value, display_alert()}"></ink-range>
    
    opened by lrq3000 12
  • Can not load iooxa.min.js

    Can not load iooxa.min.js

    Hello, I'm very curious about iooxa. I was going to replace ink-components with it today, but I got a bug. Here is the basic index.html

    Screenshot 2020-07-07 21 10 38

    I keep getting the error

    Screenshot 2020-07-07 21 13 04

    I have also already downloaded iooxa.min.js locally but still get the error.

    It would be great if you could help me out, thanks!

    Many Greetings, J2thearo

    bug 
    opened by J2thearo 6
  • What's the relationship between this and ink components?

    What's the relationship between this and ink components?

    Just trying to get a feel for how the tools relate to one another. I saw that components.ink now redirects to iooxa...is ink.components now entirely a part of iooxa? Is there a plan to have an organization-independent package, or is it all going to be branded ioxxa?

    opened by choldgraf 5
  • Controlling interactive ink-elements with a function

    Controlling interactive ink-elements with a function

    Hi there,

    this is really an impressive library! I have already tried a lot with it and wonder whether it is also possible to change the value of the ink-var with a javascript function. By that I mean, if for example you can control the slider (ink-range) from the outside with a function call instead of the mouse.

    Regards, Jaro

    opened by J2thearo 5
  • How to use runtime state?

    How to use runtime state?

    Hi @rowanc1,

    I have recently been working with iooxa again in more detail and have come across a few questions. Most of all it is about the access to components. In your answer to #10 you finally mentioned two ways to manipulate component values:

    Screenshot 2020-08-05 14 51 06

    The second option was the most suitable and intuitive for me in this case. I also tried to understand the first option, but was not even able to access the iooxa variable. You mentioned in the last release that iooxa is available in the window. Which modules do I have to import for this? And can you please explain what the command

    const v = iooxa.createVariable('scope.name', 3);

    does exactly? I thought at first that I would specify the variable from the html document in the argument of this function but that doesn't seem to be the case. But I do not create a new html element with it either. How does this help me when I try to manipulate the value of an iooxa html component?

    Thanks a lot!

    opened by J2thearo 4
  • Bump loader-utils from 2.0.0 to 2.0.3

    Bump loader-utils from 2.0.0 to 2.0.3

    Bumps loader-utils from 2.0.0 to 2.0.3.

    Release notes

    Sourced from loader-utils's releases.

    v2.0.3

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)

    v2.0.2

    2.0.2 (2021-11-04)

    Bug Fixes

    • base64 generation and unicode characters (#197) (8c2d24e)

    v2.0.1

    2.0.1 (2021-10-29)

    Bug Fixes

    Changelog

    Sourced from loader-utils's changelog.

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)

    2.0.2 (2021-11-04)

    Bug Fixes

    • base64 generation and unicode characters (#197) (8c2d24e)

    2.0.1 (2021-10-29)

    Bug Fixes

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump url-parse from 1.5.3 to 1.5.7

    Bump url-parse from 1.5.3 to 1.5.7

    Bumps url-parse from 1.5.3 to 1.5.7.

    Commits
    • 8b3f5f2 1.5.7
    • ef45a13 [fix] Readd the empty userinfo to url.href (#226)
    • 88df234 [doc] Add soft deprecation notice
    • 78e9f2f [security] Fix nits
    • e6fa434 [security] Add credits for incorrect handling of userinfo vulnerability
    • 4c9fa23 1.5.6
    • 7b0b8a6 Merge pull request #223 from unshiftio/fix/at-sign-handling-in-userinfo
    • e4a5807 1.5.5
    • 193b44b [minor] Simplify whitespace regex
    • 319851b [fix] Remove CR, HT, and LF
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump nanoid from 3.1.23 to 3.2.0

    Bump nanoid from 3.1.23 to 3.2.0

    Bumps nanoid from 3.1.23 to 3.2.0.

    Changelog

    Sourced from nanoid's changelog.

    Change Log

    This project adheres to Semantic Versioning.

    3.2

    • Added --size and --alphabet arguments to binary (by Vitaly Baev).

    3.1.32

    • Reduced async exports size (by Artyom Arutyunyan).
    • Moved from Jest to uvu (by Vitaly Baev).

    3.1.31

    • Fixed collision vulnerability on object in size (by Artyom Arutyunyan).

    3.1.30

    • Reduced size for project with brotli compression (by Anton Khlynovskiy).

    3.1.29

    • Reduced npm package size.

    3.1.28

    • Reduced npm package size.

    3.1.27

    • Cleaned dependencies from development tools.

    3.1.26

    • Improved performance (by Eitan Har-Shoshanim).
    • Reduced npm package size.

    3.1.25

    • Fixed browserify support.

    3.1.24

    • Fixed browserify support (by Artur Paikin).
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump follow-redirects from 1.14.1 to 1.14.7

    Bump follow-redirects from 1.14.1 to 1.14.7

    Bumps follow-redirects from 1.14.1 to 1.14.7.

    Commits
    • 2ede36d Release version 1.14.7 of the npm package.
    • 8b347cb Drop Cookie header across domains.
    • 6f5029a Release version 1.14.6 of the npm package.
    • af706be Ignore null headers.
    • d01ab7a Release version 1.14.5 of the npm package.
    • 40052ea Make compatible with Node 17.
    • 86f7572 Fix: clear internal timer on request abort to avoid leakage
    • 2e1eaf0 Keep Authorization header on subdomain redirects.
    • 2ad9e82 Carry over Host header on relative redirects (#172)
    • 77e2a58 Release version 1.14.4 of the npm package.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump url-parse from 1.5.1 to 1.5.3

    Bump url-parse from 1.5.1 to 1.5.3

    Bumps url-parse from 1.5.1 to 1.5.3.

    Commits
    • ad44493 [dist] 1.5.3
    • c798461 [fix] Fix host parsing for file URLs (#210)
    • 201034b [dist] 1.5.2
    • 2d9ac2c [fix] Sanitize only special URLs (#209)
    • fb128af [fix] Use 'null' as origin for non special URLs
    • fed6d9e [fix] Add a leading slash only if the URL is special
    • 94872e7 [fix] Do not incorrectly set the slashes property to true
    • 81ab967 [fix] Ignore slashes after the protocol for special URLs
    • ee22050 [ci] Use GitHub Actions
    • d2979b5 [fix] Special case the file: protocol (#204)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump express from 4.17.1 to 4.17.3

    Bump express from 4.17.1 to 4.17.3

    Bumps express from 4.17.1 to 4.17.3.

    Release notes

    Sourced from express's releases.

    4.17.3

    4.17.2

    Changelog

    Sourced from express's changelog.

    4.17.3 / 2022-02-16

    4.17.2 / 2021-12-16

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump loader-utils from 2.0.0 to 2.0.4

    Bump loader-utils from 2.0.0 to 2.0.4

    Bumps loader-utils from 2.0.0 to 2.0.4.

    Release notes

    Sourced from loader-utils's releases.

    v2.0.4

    2.0.4 (2022-11-11)

    Bug Fixes

    v2.0.3

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)

    v2.0.2

    2.0.2 (2021-11-04)

    Bug Fixes

    • base64 generation and unicode characters (#197) (8c2d24e)

    v2.0.1

    2.0.1 (2021-10-29)

    Bug Fixes

    Changelog

    Sourced from loader-utils's changelog.

    2.0.4 (2022-11-11)

    Bug Fixes

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)

    2.0.2 (2021-11-04)

    Bug Fixes

    • base64 generation and unicode characters (#197) (8c2d24e)

    2.0.1 (2021-10-29)

    Bug Fixes

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump terser from 4.8.0 to 4.8.1

    Bump terser from 4.8.0 to 4.8.1

    Bumps terser from 4.8.0 to 4.8.1.

    Changelog

    Sourced from terser's changelog.

    v4.8.1 (backport)

    • Security fix for RegExps that should not be evaluated (regexp DDOS)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump eventsource from 1.1.0 to 1.1.1

    Bump eventsource from 1.1.0 to 1.1.1

    Bumps eventsource from 1.1.0 to 1.1.1.

    Changelog

    Sourced from eventsource's changelog.

    1.1.1

    • Do not include authorization and cookie headers on redirect to different origin (#273 Espen Hovlandsdal)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v0.2.7)
  • v0.2.7(Jul 10, 2020)

    🔐 NPM security updates 🔄 Bring the setup function inside of register

    • This ensures the store is setup with the right provider.
    • There was a bug when mutiple copies of the runtime were installed.

    🆙 Fix the position of nested data in the equation.

    • When editing nested elements would not be in the right position.

    🧶 Switch to yarn 🧹 Improve linting. ⬇️ Margin bottom in article quote p ✏️Refactor chart --> svg for library 🐛 Fix when there are no headers or links.

    • See #16

    🚀 Bump version to 0.2.7

    • Botched the publish of the dist folder 🤫
    Source code(tar.gz)
    Source code(zip)
  • v0.2.5(Apr 29, 2020)

    New Features

    • 🃏Flex-box resizing of cards
    • 🚦Navigation improvements to responsiveness
    • 🕶Better styles for aside and definition list
    • #️⃣Go to Hash function in setup
    • 🕶Article and aside spacing

    Breaking Changes

    • 🔄Rename font css variables
    --iooxa-font
    --iooxa-font-headers
    
    Source code(tar.gz)
    Source code(zip)
  • v0.2.4(Apr 29, 2020)

    New Packages

    • Package has been renamed from ink-components to @iooxa/article
    • There are a few other packages added:
      • @iooxa/runtime Deals with the reactivity of components
        • https://github.com/iooxa/runtime
      • @iooxa/components Base components hooked up to reactivity
        • https://github.com/iooxa/components
      • @iooxa/svg Diagrams and reactive svg components
        • https://github.com/iooxa/svg
      • @iooxa/article That is this one! Includes all of the above and exposes iooxa in your window

    New Features and Major Changes

    • Performance improvements - only render the components that actually changed! 🚀
    • Execution is now in the main context by default and can access scripts defined there (see #12)
    • Opinionated styles are removed (e.g. color, font), and these can be overridden with css vars
    • Packages are now in typescript 🎉
    • All components are prefixed with r-, rather than the previous ink-
    • The bind syntax has changed slightly, see below

    New Components

    Working with material web components to bring new components!

    • <r-switch> - material UI switch
    • <r-checkbox> - material UI checkbox
    • <r-radio> - material UI radio
    • <r-select> - material UI select box #9
    • <r-input> - material UI textarea
    • <r-visible> - Div that makes things invisible on demand

    New Documentation

    See https://iooxa.dev for up to date documentation.

    Changes to Article - Use more HTML!

    • Now using <article>
    • Now using <aside> for both asides and callouts. <aside class="callout info">
    • These are now just plain CSS - so should be easy for people to re-theme
    • <r-equation> no longer suffers from a 1-frame lag
    • Outline see iooxa/article#2
    • Helper functions to render math inline.

    Charting

    • Updated the svg library. See https://github.com/iooxa/svg

    Runtime State

    I have moved to a single redux store to manage the state. This is split up into {variables, components} the low-level interface looks like:

    const x = store.dispatch(runtime.actions.createVariable('scope.x', 3));
    const max = store.dispatch(runtime.actions.createVariable('scope.max', 9));
    
    const range = store.dispatch(runtime.actions.createComponent(
      'range', 'scope.myRange',
      { value: { func: 'x' }, min: { value: 1 }, max },
      { change: { func: '{x: value}' } },
    ));
    
    // Can set/get the properties
    x.get()
    x.set(4)
    const { min, max } = range.state;
    

    A version of this will be exposed in the window as iooxa so that you can get/set variables in other programs which is needed for more control: (e.g. see #12 #10).

    Creating a new component

    I have added a base-class BaseComponent that does the generic registering and unregistering of the component as well as a class wrapper @withRuntime that injects properties that you define in a ComponentSpec and give the relevant setters/getters for properties and events as well as playing nice with lit-element. The basics of this new setup gets the boiler-plate from 74 --> 18 lines of code (~25% of the size). The @withRuntime wrapper I think is also more accessible (to debug etc.) than what I had before.

    export const DisplaySpec = {
      name: 'display',
      description: 'Inline display of values',
      properties: {
        value: { type: types.PropTypes.number, default: NaN },
        format: { type: types.PropTypes.string, default: '.1f' },
      },
      events: {},
    };
    
    @withRuntime(DisplaySpec)
    class Display extends BaseComponent<typeof DisplaySpec> {
      updated(updated: PropertyValues) { onBindChange(updated, this); }
    
      render() {
        const { value, format } = this.$runtime!.state;
        return html`${formatter(value, format)}`;
      }
    }
    

    Other Details

    • Packages are now in typescript 🎉
    • Packages are now linted (with eslint)!
    • Included testing for the store and evaluation scripts
    • Move to a redux architecture that can include the evaluate middleware or not. (by default this will be included)
    • single file for each component
    • Removed boiler-plate code for creating components, including fighting with typescript generics so new components don't have too!!!

    Breaking Changes

    Name/Value/Bind

    There were a couple of issues with the previous naming conventions. It was is not specific enough for multiple event types (hover, drag, click, etc.) and there is no option for being able to add named components. This could be very helpful to react to events when a component enters the screen, show the component.min value, etc. The previous name attribute was used to set :value="${name}" and bind="{[name]: value}" which amounted to two way binding in the component. This was a handy shortcut and I think it should stay, however, be renamed to bind now that events are explicitly named.

    • name for components will now be used for the actual name of the component (should be unique in that scope)
    • introducing named events, which will allow components to have multiple types of events
    • bind is used as the default event type on components that allow it.

    Previous version:

    When you eat <r-dynamic name="cookies" min="2" max="100"> cookies</r-dynamic>,
    you consume <r-display :value="cookies * 50" format=".0f"/></r-display> calories.
    

    Changes to:

    When you eat <r-dynamic bind="cookies" min="2" max="100"> cookies</r-dynamic>,
    you consume <r-display :value="cookies * 50" format=".0f"/></r-display> calories.
    

    This is equivalent to:

    When you eat <r-dynamic :value="cookies" :change="{cookies: value}" min="2" max="100"> cookies</r-dynamic>,
    you consume <r-display :value="cookies * 50" format=".0f"/></r-display> calories.
    

    Action / Button

    The bind syntax doesn't make sense for the r-action and r-button components, it should really be an event and there isn't a value to "bind" to. This should change to :click to return an event transform object. There is also a :hover action!

    Transform

    • The transform is an evaluated string, and has been renamed to :transform.

    Resume

    The resume styles/functions have temporarily been removed.

    Deprecated Components

    • h2-more: please use "float: right" on a button preceding an h2 element
    • ink-span: please use r-visible
    • ink-p: please use r-visible
    • ink-div: please use r-visible
    • ink-a: please use r-visible
    Source code(tar.gz)
    Source code(zip)
  • v0.1.9(Nov 14, 2019)

    Major

    You can now annotate your links to other pages using the ink-a component.

    anchor

    Minor Updates

    • Style on ink-card to be aligned left. When embedded in a figure caption, this was centred.
    • Contain or cover for ink-card
    Source code(tar.gz)
    Source code(zip)
  • v0.1.8(May 26, 2019)

    Ink Charts

    • Rotate text dynamically
    • Hide visibility of elements
    • Constrain drag nodes

    snellslaw

    Bug Fixes

    • Variable arrays are now better checked
    • Range can set width of element
    Source code(tar.gz)
    Source code(zip)
  • v0.1.7(May 20, 2019)

  • v0.1.6(May 20, 2019)

  • v0.1.5(May 20, 2019)

Owner
curvenote
curvenote sits at the intersection of scientific collaboration, publishing, and technology
curvenote
📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings

JavaScript Algorithms and Data Structures This repository contains JavaScript based examples of many popular algorithms and data structures. Each algo

Oleksii Trekhleb 158k Dec 31, 2022
Estrela - a JavaScript library for building reactive web components inspired by lit

Estrela ⭐ Full Reactive Web Components Estrela is a JavaScript library for building reactive web components inspired by lit. Just like Lit, Estrela is

null 50 Oct 31, 2022
A tool for writing better scripts

Bash is great, but when it comes to writing scripts, people usually choose a more convenient programming language.

Google 35.5k Dec 27, 2022
✍️ Generative creative writing via OpenAI

The stars have always been a source of wonder and mystery. They have inspired poets and philosophers throughout the ages. Arthur Conan Doyle was no ex

Nate Goldman 0 Dec 24, 2022
A-Frame components implementing multiple cameras

aframe-multi-camera multi-camera.mp4 Overview This repository contains components that can be used to create multi-camera scenes in A-Frame. Cameras c

Diarmid Mackenzie 14 Oct 10, 2022
Add weak event listeners from your components/classes based on WeakRefs

Add weak event listeners from your components/classes based on WeakRefs. This package handles the boilerplate for you, which isn't too much anyways but not particularly good looking.

Ashish Shubham 3 Feb 25, 2022
Custom HTML elements for generic components (dropdown, modal...) without style.

Headless elements The goal of this project is to create a library of Custom Elements to stop reinventing the wheel (starting by reinventing the wheel

Jonathan 21 Sep 17, 2022
The perfect library for adding search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on existing HTML.

List.js Perfect library for adding search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on

Jonny Strömberg 10.9k Jan 1, 2023
Drag and drop library for two-dimensional, resizable and responsive lists

GridList Drag and drop library for a two-dimensional resizable and responsive list of items Demo: http://hootsuite.github.io/grid/ The GridList librar

Hootsuite 3.6k Dec 14, 2022
Gmail-like client-side drafts and bit more. Plugin developed to save html forms data to LocalStorage to restore them after browser crashes, tabs closings and other disasters.

Sisyphus Plugin developed to save html forms data to LocalStorage to restore them after browser crashes, tabs closings and other disasters. Descriptio

Alexander Kaupanin 2k Dec 8, 2022
A lightweight jQuery plugin for collapsing and expanding long blocks of text with "Read more" and "Close" links.

Readmore.js V3 alpha I am deprecating the 2.x version of Readmore.js. A new version is coming soon! Check it out and help me test it! Readmore.js A sm

Jed Foster 1.5k Nov 30, 2022
FriendAdvisor is a mobile app with a focus on allowing friends and family to coordinate and receive text notifications about upcoming group events.

FriendAdvisor is a mobile app with a focus on allowing friends and family to coordinate and receive text notifications about upcoming group events.

Brad Johnson 4 Sep 29, 2022
Defines the communication layer between mobile native(iOS/Android) and webview using JSON Schema and automatically generates SDK code

Defines the communication layer between mobile native(iOS/Android) and webview using JSON Schema and automatically generates SDK code.

당근마켓 31 Dec 8, 2022
A responsive image polyfill for , srcset, sizes, and more

Picturefill A responsive image polyfill. Authors: See Authors.txt License: MIT Picturefill has three versions: Version 1 mimics the Picture element pa

Scott Jehl 10k Dec 31, 2022
A high-performance, dependency-free library for animated filtering, sorting, insertion, removal and more

MixItUp 3 MixItUp is a high-performance, dependency-free library for animated DOM manipulation, giving you the power to filter, sort, add and remove D

Patrick Kunka 4.5k Dec 24, 2022
JavaScript Survey and Form Library

SurveyJS is a JavaScript Survey and Form Library. SurveyJS is a modern way to add surveys and forms to your website. It has versions for Angular, jQue

SurveyJS 3.5k Jan 1, 2023
Extensive math expression evaluator library for JavaScript and Node.js

?? Homepage Fcaljs is an extensive math expression evaluator library for JavaScript and Node.js. Using fcal, you can perform basic arithmetic, percent

Santhosh Kumar 93 Dec 19, 2022
Browser fingerprinting library with the highest accuracy and stability.

FingerprintJS is a browser fingerprinting library that queries browser attributes and computes a hashed visitor identifier from them. Unlike cookies a

FingerprintJS 18.1k Dec 31, 2022
autoNumeric is a standalone library that provides live as-you-type formatting for international numbers and currencies.

What is autoNumeric? autoNumeric is a standalone Javascript library that provides live as-you-type formatting for international numbers and currencies

AutoNumeric 1.7k Dec 16, 2022