From 6736c8637a53f67e688a5c7685c8acef6015512a Mon Sep 17 00:00:00 2001 From: Lyss Date: Wed, 24 Jul 2024 13:27:57 +0200 Subject: [PATCH] Add draggable item action --- bun.lockb | Bin 166858 -> 169490 bytes docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/DataStructure.Queue.html | 4 +- docs/classes/Utils.HTML.WindowState.html | 5 + docs/classes/Utils.XSD.XmlSchema.html | 18 +- docs/functions/Action.autosize.html | 2 +- docs/functions/Action.draggableItem.html | 3 + docs/functions/Action.focusTrap.html | 2 +- docs/functions/Action.gridLines.html | 2 +- docs/functions/Action.handleFocusLeave.html | 2 +- docs/functions/Action.horizontalScroll.html | 3 + docs/functions/Action.shortcut.html | 2 +- docs/functions/Action.shortcutToString.html | 2 +- docs/functions/Action.takeFocus.html | 2 +- docs/functions/Utils.Array.sortedByIndex.html | 2 +- .../Utils.EventListener.preventDefault.html | 2 +- .../Utils.EventListener.stopPropagation.html | 2 +- docs/functions/Utils.HTML.download.html | 2 +- docs/functions/Utils.HTML.downloadJSON.html | 2 +- docs/functions/Utils.HTML.getBounds.html | 2 + .../Utils.HTML.getBoundsIntersection.html | 1 + docs/functions/Utils.HTML.getBoundsUnion.html | 2 + .../Utils.HTML.getClosestElement.html | 1 + .../Utils.HTML.getClosestElementIndex.html | 1 + docs/functions/Utils.HTML.isBrowser.html | 2 +- docs/functions/Utils.HTML.padBounds.html | 5 + docs/functions/Utils.HTML.posFromClient.html | 2 +- .../Utils.Math.affineFromPoints.html | 2 +- docs/functions/Utils.Math.distance.html | 2 +- docs/functions/Utils.Math.lerp.html | 2 +- .../functions/Utils.String.camlelcaseize.html | 2 +- docs/functions/Utils.String.capitalize.html | 2 +- .../Utils.String.capitalizeWords.html | 2 +- .../Utils.String.getVarsFromFormatString.html | 2 +- docs/functions/Utils.String.initials.html | 2 +- .../Utils.String.isAlphaNumChar.html | 2 +- docs/functions/Utils.String.titlelize.html | 2 +- docs/functions/Utils.String.words.html | 2 +- docs/functions/Utils.XSD.parseXsd.html | 2 +- docs/functions/Utils.XSD.parseXsdFromUrl.html | 2 +- docs/functions/Utils.newLocalId.html | 2 +- docs/functions/Utils.newUuid.html | 2 +- docs/modules.html | 14 +- docs/modules/Action.html | 5 +- docs/modules/DataStructure.html | 3 +- docs/modules/Types.html | 2 +- docs/modules/Utils.Array.html | 2 +- docs/modules/Utils.EventListener.html | 2 +- docs/modules/Utils.HTML.html | 10 +- docs/modules/Utils.Math.html | 2 +- docs/modules/Utils.Storage.html | 2 +- docs/modules/Utils.String.html | 2 +- docs/modules/Utils.XSD.html | 2 +- docs/modules/Utils.html | 12 +- docs/types/Action.DragItemOptions.html | 6 + docs/types/Action.KeyboardShortcut.html | 2 +- docs/types/Action.ShortcutSettings.html | 2 +- docs/types/Action.Transform.html | 2 +- docs/types/DataStructure.Point.html | 1 + docs/types/Types.PartialBy.html | 2 +- docs/types/Types.SaveData.html | 2 +- .../Utils.EventListener.EventModifier.html | 2 +- docs/types/Utils.HTML.WindowBounds.html | 3 + docs/types/Utils.Math.Position.html | 2 +- docs/types/Utils.XSD.Attribute.html | 2 +- docs/types/Utils.XSD.ComplexType.html | 2 +- docs/types/Utils.XSD.SimpleType.html | 2 +- docs/types/Utils.XSD.XMLTypeName.html | 2 +- docs/types/Utils.XSD.XMLTypeTree.html | 2 +- package.json | 5 +- src/lib/actions/drag.ts | 127 +++++++++++++ src/lib/actions/index.ts | 1 + src/lib/actions/scroll.ts | 6 + src/lib/datastructure.ts | 5 + src/lib/utils/html.svelte.ts | 179 ++++++++++++++++++ src/lib/utils/html.ts | 42 ---- src/lib/utils/index.ts | 4 +- src/lib/utils/xsd.ts | 2 +- src/routes/drag/+page.svelte | 23 +++ src/routes/test/flip/+page.svelte | 95 ++++++++++ vite.config.ts | 3 + 82 files changed, 577 insertions(+), 114 deletions(-) create mode 100644 docs/classes/Utils.HTML.WindowState.html create mode 100644 docs/functions/Action.draggableItem.html create mode 100644 docs/functions/Action.horizontalScroll.html create mode 100644 docs/functions/Utils.HTML.getBounds.html create mode 100644 docs/functions/Utils.HTML.getBoundsIntersection.html create mode 100644 docs/functions/Utils.HTML.getBoundsUnion.html create mode 100644 docs/functions/Utils.HTML.getClosestElement.html create mode 100644 docs/functions/Utils.HTML.getClosestElementIndex.html create mode 100644 docs/functions/Utils.HTML.padBounds.html create mode 100644 docs/types/Action.DragItemOptions.html create mode 100644 docs/types/DataStructure.Point.html create mode 100644 docs/types/Utils.HTML.WindowBounds.html create mode 100644 src/lib/actions/drag.ts create mode 100644 src/lib/utils/html.svelte.ts delete mode 100644 src/lib/utils/html.ts create mode 100644 src/routes/drag/+page.svelte create mode 100644 src/routes/test/flip/+page.svelte diff --git a/bun.lockb b/bun.lockb index d6487fd1dfbe2157e217f03e9f42d8536caf2cf2..b0ff660c10841fc2e1cdecdec72bd28da4c0b718 100755 GIT binary patch delta 26324 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≤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 E1EICVL;wH) diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index a45ec8b..4d43bf2 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA5WWyW7bMBBA/0Vnd0mQbrlladC0dppCTmsgyGEijW0iFCmQIztu0X8vKEeyqGXEXsXHpyFnSM79n4jwmaLT6CwhoVU0iXKgdXQaZTotJNo3+++v15TJaBI9CZVGpyeTKFkLmRpU0el9rfiGu0cNJo3X2lBS0EFGu/ygamO++/jtpw9H747/TmptxcVIJNTKDmjb2Jh2bkDZpTbZgK8eHxNBQdqK33jwLAtVOmpXhfiq9ycNy1InhZ0byBlNzTCelRHpVCi0jKdmGM8aVCrxyv1xirDhVtdGGavtlEbHZnvLotcy1zEZoVYBtgplrARP+0UwuprpeB4apksgiMkUCRUGu0fKGw46WT8KLBqiRIK1HVEJ+bqj449eYHNX4N2Ays9BgdyCIQHyfNc+NHtFPTx6pmGDLvp+TTXab2ku6I6E7FlQ+TloQWfGwG5IUA4Gaaw2hOn57lql+NxXP02hB7OF9HmDiqbCEio0Q1F6UFC05YyZTsVSNLX7FPRJvQljuc0NOvwSl1DI3pPe9wt/Fnf4See3RuewAv/F4v2taey2f5nPpkO77caCNjnVWyU1pMMBlqoKY1ZcIV/j7zeBNocyRmHPjd7aZvJ7dTXHuHJtr4zOLqRAxWS79Hksm4KZswykwI2F3VbaCr9GmiVeaipk9JFfLoVCF/ytFop634iGto1z2RWWQCW9D2zDWGGMSaLp7R4aFoew+x6TNrDqebT2kpfhoN3P0Vh3+pgTUOlqtB3bZP/WuczZ9JWwr/CZ0CiQUStqvw1oB919+QdiTiCTKBOwONDQeUaPZhKTQC4IZJiyQoN8v7RJmVrsSEue6x6RfoIpD+mVNhnQcIPl/WFgHncFKeFahfHgK5C9zs5kvoabIrtYA3OnVUYP5zpCQRKD0laTjG0blKttb4aaxb6IL4cqfRFfBpX5IpNxssas0X9VPeVBVEPdnvIQzBmREY8FYf8d6zw1MnbHXugsl/jsesBhWwMabTKFQ3ndgRmzLWZTh91AxugaUKBvbnDc56DRtguMxYVlblsnrCjuQX9B3GG+MzLM9wKzhatwO9UJyGsmxgPDRKhwe1cI3uIARlEUIt2cDBv24//1HD38A+bC7XJNEQAA" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA5WY32/bNhCA/xc9u9saZN2WtyRu0GxOmkHOaqDow0U620QpUiBPcdxh//tAKZJJiTopr+bHT8dfx6O//psQvlBykVxmJLRKFkkJtE8ukkLnlUT7c/P7T3sqZLJIvguVJxfniyTbC5kbVMnF106xNLC7JSw+l66LPbnoWJ5MPSo0n/3yx2/vfz37b9FJ/8LjkwaTp3ttKKtoxNrHprQtlyKRULuxYPvYlHZtQNmtNsWIr2ufEkFF2oofePJsK1U7OleLhKoP554lN7DbwZNEN+GMKuAY31ZnlV0bKBlXxzCenRH5Sii0jKdjGM8eVC7xxn1xhfDMzVYf5azaiB9aEcg0M1pKztpDGasdbOCBzUY3b9Sy1ikZoXYzbC3KWAm+N1PD6Dpm4PnmmZZAkJKpMqoMDrNJ0DwrqfxdYeWJMgnWDkQ1FOren/3uhfWghRqkjtBRI/Fj6Q9w7boOB1b/PGtAD2BIgLw69sNpFF3zZAaDZ3QjiGva1ukBPZKQkQHVP88a0KUxcBwT1I2zNFYbwvzqeKtyfIntQ18YwOyG/PiMilbCEio0Y1EG0Kxo6x53Ohdb4WubJYhJgw5Ta1sadPgSt1DJaMaIfSLsxSUR0uWD0SXsILz0eX+vGzvtn9Z3q7HZdm2zJvmLULk+pAQUyQCey+O4JNBgV7pS+eC+H9gabGqhcn1QUkM+PoW1ssW4q/oV+TP9fD/T5lDukkXqjzWq67g5rltFaCxm/L4JvX6fOd94VG+Q1zBvvZbaoqWPEgtUzGlqxSH/FvdE7op/IJ7DTl8R9srog/XTTFTccYyrhHzWnug4zqXtjdHFtRTTsxqwbOK4c5aRxOHa5t2x2opwh/qnvNa0yGQhvt0KhS74ukBgJq7W9nHuxAtLoLJo0eoZW4wxSTTRityzOISd95S0gV2kZGskr82zZr9EY92dwWTFVteh/dgWTZ53K2fzd8K+wxdCo0AmvajDIrgf9LDuHYk5g0KizMDiyKMrMAY0szAZlIJAzlO26CzfF224QzyQ1jyfyv4BUx/SG20KoPHnRfCFkX5cOlPCFbjTwbcgmxovZbmH+6q43gOTH1tjgHPvIUESZy1bRzK2w6y1OkRXyN/sm3Q5ttM36XLWNt8UMs32WMBYPeVEHcQVU5dERjxVfmXm51jn6ZCpHHuti1Lii3u5jNs8aPJpJBzK607MlG1zt3LYPRSMzoNm+tYGp30OmnwsgLG4sUy2dcKWYouDBnGH+dFE//YY+l5hduMqPKx0BvKWifHEMBEqPDxWgrc4gFFUlcifz8cNTfubrqNv/wNk52lBRhUAAA==" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index a05e951..825640d 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/DataStructure.Queue.html b/docs/classes/DataStructure.Queue.html index 329fe56..a75d6cf 100644 --- a/docs/classes/DataStructure.Queue.html +++ b/docs/classes/DataStructure.Queue.html @@ -1,8 +1,8 @@ -Queue | @selenite/commons

Type Parameters

  • T

Constructors

constructor +Queue | @selenite/commons

Type Parameters

  • T

Constructors

Accessors

Methods

Constructors

Accessors

Methods

+

Constructors

Accessors

Methods

diff --git a/docs/classes/Utils.HTML.WindowState.html b/docs/classes/Utils.HTML.WindowState.html new file mode 100644 index 0000000..0be2aa8 --- /dev/null +++ b/docs/classes/Utils.HTML.WindowState.html @@ -0,0 +1,5 @@ +WindowState | @selenite/commons

Properties

Accessors

Properties

height: number = ...
width: number = ...

Accessors

  • get height(): number
  • Returns number

  • get width(): number
  • Returns number

diff --git a/docs/classes/Utils.XSD.XmlSchema.html b/docs/classes/Utils.XSD.XmlSchema.html index 9c0d1a4..2d45556 100644 --- a/docs/classes/Utils.XSD.XmlSchema.html +++ b/docs/classes/Utils.XSD.XmlSchema.html @@ -1,6 +1,6 @@ XmlSchema | @selenite/commons

Type of an XML schema definition.

It defines the types allowed in an xml file, usually derived from an xsd file.

-

Constructors

Constructors

Properties

Accessors

parentsMap @@ -10,14 +10,14 @@ typeMap typePaths

Constructors

Properties

complexTypes: ComplexType[] = []

Complex types of the xml schema.

-
simpleTypes: SimpleType[] = []

Simple types of the xml schema.

-

Accessors

  • get parentsMap(): Map<string, string[]>
  • Map which associates the names of complex XML types to their parents' names.

    -

    Returns Map<string, string[]>

simpleTypes: SimpleType[] = []

Simple types of the xml schema.

+

Accessors

  • get parentsMap(): Map<string, string[]>
  • Map which associates the names of complex XML types to their parents' names.

    +

    Returns Map<string, string[]>

  • get typePaths(): Map<string, string[][] | "infinite">
  • Map which associates the names of complex XML types to their possible paths in an XML file.

    +

    Returns XMLTypeTree

  • get typePaths(): Map<string, string[][] | "infinite">
  • Map which associates the names of complex XML types to their possible paths in an XML file.

    The paths are represented as an array of type names. If a type is recursive, the value is 'infinite'.

    -

    Returns Map<string, string[][] | "infinite">

+

Returns Map<string, string[][] | "infinite">

diff --git a/docs/functions/Action.autosize.html b/docs/functions/Action.autosize.html index 345725f..73578ab 100644 --- a/docs/functions/Action.autosize.html +++ b/docs/functions/Action.autosize.html @@ -1 +1 @@ -autosize | @selenite/commons
  • Type Parameters

    • Node extends HTMLTextAreaElement

    Parameters

    • Rest...args: [node: Node, parameter?: undefined]

    Returns void | ActionReturn<undefined, Record<never, any>>

+autosize | @selenite/commons
  • Type Parameters

    • Node extends HTMLTextAreaElement

    Parameters

    • Rest...args: [node: Node, parameter?: undefined]

    Returns void | ActionReturn<undefined, Record<never, any>>

diff --git a/docs/functions/Action.draggableItem.html b/docs/functions/Action.draggableItem.html new file mode 100644 index 0000000..2fbe7f5 --- /dev/null +++ b/docs/functions/Action.draggableItem.html @@ -0,0 +1,3 @@ +draggableItem | @selenite/commons

Action to make an item in an array of items draggable.

+

Options : DragItemOptions.

+
  • Type Parameters

    • Node extends HTMLElement

    Parameters

    Returns void | ActionReturn<DragItemOptions, Record<never, any>>

diff --git a/docs/functions/Action.focusTrap.html b/docs/functions/Action.focusTrap.html index 4dec54c..de66ccd 100644 --- a/docs/functions/Action.focusTrap.html +++ b/docs/functions/Action.focusTrap.html @@ -1 +1 @@ -focusTrap | @selenite/commons
+focusTrap | @selenite/commons
diff --git a/docs/functions/Action.gridLines.html b/docs/functions/Action.gridLines.html index fd159ac..355706d 100644 --- a/docs/functions/Action.gridLines.html +++ b/docs/functions/Action.gridLines.html @@ -1 +1 @@ -gridLines | @selenite/commons
  • Type Parameters

    • Node extends HTMLCanvasElement

    Parameters

    • Rest...args: [node: Node, parameter: Omit<{
          canvas: HTMLCanvasElement;
          color?: string;
          spacing?: number;
          transform: Transform;
          width?: number;
      }, "canvas"> & {
          visibility?: boolean;
      }]

    Returns void | ActionReturn<Omit<{
        canvas: HTMLCanvasElement;
        color?: string;
        spacing?: number;
        transform: Transform;
        width?: number;
    }, "canvas"> & {
        visibility?: boolean;
    }, Record<never, any>>

+gridLines | @selenite/commons
  • Type Parameters

    • Node extends HTMLCanvasElement

    Parameters

    • Rest...args: [node: Node, parameter: Omit<{
          canvas: HTMLCanvasElement;
          color?: string;
          spacing?: number;
          transform: Transform;
          width?: number;
      }, "canvas"> & {
          visibility?: boolean;
      }]

    Returns void | ActionReturn<Omit<{
        canvas: HTMLCanvasElement;
        color?: string;
        spacing?: number;
        transform: Transform;
        width?: number;
    }, "canvas"> & {
        visibility?: boolean;
    }, Record<never, any>>

diff --git a/docs/functions/Action.handleFocusLeave.html b/docs/functions/Action.handleFocusLeave.html index 07c432b..b46976c 100644 --- a/docs/functions/Action.handleFocusLeave.html +++ b/docs/functions/Action.handleFocusLeave.html @@ -1 +1 @@ -handleFocusLeave | @selenite/commons
  • Type Parameters

    • Node extends HTMLElement

    Parameters

    • Rest...args: [node: Node, parameter: ((isKeyboard: boolean) => void)]

    Returns void | ActionReturn<((isKeyboard: boolean) => void), Record<never, any>>

+handleFocusLeave | @selenite/commons
  • Type Parameters

    • Node extends HTMLElement

    Parameters

    • Rest...args: [node: Node, parameter: ((isKeyboard: boolean) => void)]

    Returns void | ActionReturn<((isKeyboard: boolean) => void), Record<never, any>>

diff --git a/docs/functions/Action.horizontalScroll.html b/docs/functions/Action.horizontalScroll.html new file mode 100644 index 0000000..15911b5 --- /dev/null +++ b/docs/functions/Action.horizontalScroll.html @@ -0,0 +1,3 @@ +horizontalScroll | @selenite/commons

Adds horizontal scrolling to an element.

+
  • Type Parameters

    • Node extends HTMLElement

    Parameters

    • Rest...args: [node: Node, parameter?: {
          duration?: number;
      }]

    Returns void | ActionReturn<undefined | {
        duration?: number;
    }, Record<never, any>>

    svelte action

    +
diff --git a/docs/functions/Action.shortcut.html b/docs/functions/Action.shortcut.html index 86ef795..1e21478 100644 --- a/docs/functions/Action.shortcut.html +++ b/docs/functions/Action.shortcut.html @@ -1 +1 @@ -shortcut | @selenite/commons
+shortcut | @selenite/commons
diff --git a/docs/functions/Action.shortcutToString.html b/docs/functions/Action.shortcutToString.html index e0dda60..645bb5d 100644 --- a/docs/functions/Action.shortcutToString.html +++ b/docs/functions/Action.shortcutToString.html @@ -1 +1 @@ -shortcutToString | @selenite/commons
+shortcutToString | @selenite/commons
diff --git a/docs/functions/Action.takeFocus.html b/docs/functions/Action.takeFocus.html index 4335763..0cd57d7 100644 --- a/docs/functions/Action.takeFocus.html +++ b/docs/functions/Action.takeFocus.html @@ -1 +1 @@ -takeFocus | @selenite/commons
  • Type Parameters

    • Node extends HTMLElement

    Parameters

    • Rest...args: [node: Node, parameter: boolean]

    Returns void | ActionReturn<boolean, Record<never, any>>

+takeFocus | @selenite/commons
  • Type Parameters

    • Node extends HTMLElement

    Parameters

    • Rest...args: [node: Node, parameter: boolean]

    Returns void | ActionReturn<boolean, Record<never, any>>

diff --git a/docs/functions/Utils.Array.sortedByIndex.html b/docs/functions/Utils.Array.sortedByIndex.html index 41d1f6b..8eb9dd2 100644 --- a/docs/functions/Utils.Array.sortedByIndex.html +++ b/docs/functions/Utils.Array.sortedByIndex.html @@ -1 +1 @@ -sortedByIndex | @selenite/commons
+sortedByIndex | @selenite/commons
diff --git a/docs/functions/Utils.EventListener.preventDefault.html b/docs/functions/Utils.EventListener.preventDefault.html index 0dffe16..18a2673 100644 --- a/docs/functions/Utils.EventListener.preventDefault.html +++ b/docs/functions/Utils.EventListener.preventDefault.html @@ -1 +1 @@ -preventDefault | @selenite/commons
+preventDefault | @selenite/commons
diff --git a/docs/functions/Utils.EventListener.stopPropagation.html b/docs/functions/Utils.EventListener.stopPropagation.html index 2580fb0..7073368 100644 --- a/docs/functions/Utils.EventListener.stopPropagation.html +++ b/docs/functions/Utils.EventListener.stopPropagation.html @@ -1 +1 @@ -stopPropagation | @selenite/commons
+stopPropagation | @selenite/commons
diff --git a/docs/functions/Utils.HTML.download.html b/docs/functions/Utils.HTML.download.html index cab8abd..2722d53 100644 --- a/docs/functions/Utils.HTML.download.html +++ b/docs/functions/Utils.HTML.download.html @@ -1 +1 @@ -download | @selenite/commons
+download | @selenite/commons
  • Parameters

    • filename: string
    • data: unknown

    Returns void

diff --git a/docs/functions/Utils.HTML.downloadJSON.html b/docs/functions/Utils.HTML.downloadJSON.html index dcb5015..2264231 100644 --- a/docs/functions/Utils.HTML.downloadJSON.html +++ b/docs/functions/Utils.HTML.downloadJSON.html @@ -1 +1 @@ -downloadJSON | @selenite/commons
+downloadJSON | @selenite/commons
  • Parameters

    • name: string
    • data: unknown

    Returns void

diff --git a/docs/functions/Utils.HTML.getBounds.html b/docs/functions/Utils.HTML.getBounds.html new file mode 100644 index 0000000..4bc41a0 --- /dev/null +++ b/docs/functions/Utils.HTML.getBounds.html @@ -0,0 +1,2 @@ +getBounds | @selenite/commons
  • Returns the bounds of an element relative to the window.

    +

    Parameters

    • Optionalelement: Element

    Returns WindowBounds

diff --git a/docs/functions/Utils.HTML.getBoundsIntersection.html b/docs/functions/Utils.HTML.getBoundsIntersection.html new file mode 100644 index 0000000..88ef39b --- /dev/null +++ b/docs/functions/Utils.HTML.getBoundsIntersection.html @@ -0,0 +1 @@ +getBoundsIntersection | @selenite/commons
diff --git a/docs/functions/Utils.HTML.getBoundsUnion.html b/docs/functions/Utils.HTML.getBoundsUnion.html new file mode 100644 index 0000000..d05740d --- /dev/null +++ b/docs/functions/Utils.HTML.getBoundsUnion.html @@ -0,0 +1,2 @@ +getBoundsUnion | @selenite/commons
  • Returns the union of the window bounds of multiple elements.

    +

    Parameters

    Returns WindowBounds

diff --git a/docs/functions/Utils.HTML.getClosestElement.html b/docs/functions/Utils.HTML.getClosestElement.html new file mode 100644 index 0000000..4e6859d --- /dev/null +++ b/docs/functions/Utils.HTML.getClosestElement.html @@ -0,0 +1 @@ +getClosestElement | @selenite/commons
  • Parameters

    • target: Element
    • elements: Element[]

    Returns undefined | Element

diff --git a/docs/functions/Utils.HTML.getClosestElementIndex.html b/docs/functions/Utils.HTML.getClosestElementIndex.html new file mode 100644 index 0000000..e8d0a40 --- /dev/null +++ b/docs/functions/Utils.HTML.getClosestElementIndex.html @@ -0,0 +1 @@ +getClosestElementIndex | @selenite/commons
  • Parameters

    • target: Element
    • elements: Element[]

    Returns number

diff --git a/docs/functions/Utils.HTML.isBrowser.html b/docs/functions/Utils.HTML.isBrowser.html index 46c860a..5854b87 100644 --- a/docs/functions/Utils.HTML.isBrowser.html +++ b/docs/functions/Utils.HTML.isBrowser.html @@ -1 +1 @@ -isBrowser | @selenite/commons
+isBrowser | @selenite/commons
  • Returns boolean

diff --git a/docs/functions/Utils.HTML.padBounds.html b/docs/functions/Utils.HTML.padBounds.html new file mode 100644 index 0000000..cce94dc --- /dev/null +++ b/docs/functions/Utils.HTML.padBounds.html @@ -0,0 +1,5 @@ +padBounds | @selenite/commons
  • Returns padded window bounds.

    +

    Parameters

    • bounds: WindowBounds

      bounds to pad

      +
    • padding: number

      pixels to pad

      +

    Returns WindowBounds

    padded window bounds

    +
diff --git a/docs/functions/Utils.HTML.posFromClient.html b/docs/functions/Utils.HTML.posFromClient.html index e77f48a..9579f70 100644 --- a/docs/functions/Utils.HTML.posFromClient.html +++ b/docs/functions/Utils.HTML.posFromClient.html @@ -1 +1 @@ -posFromClient | @selenite/commons
  • Parameters

    • __namedParameters: {
          clientX: number;
          clientY: number;
      }
      • clientX: number
      • clientY: number

    Returns Position

+posFromClient | @selenite/commons
  • Parameters

    • __namedParameters: {
          clientX: number;
          clientY: number;
      }
      • clientX: number
      • clientY: number

    Returns Position

diff --git a/docs/functions/Utils.Math.affineFromPoints.html b/docs/functions/Utils.Math.affineFromPoints.html index 4e9f008..9c8c1e1 100644 --- a/docs/functions/Utils.Math.affineFromPoints.html +++ b/docs/functions/Utils.Math.affineFromPoints.html @@ -1 +1 @@ -affineFromPoints | @selenite/commons
+affineFromPoints | @selenite/commons
diff --git a/docs/functions/Utils.Math.distance.html b/docs/functions/Utils.Math.distance.html index e200df2..acf07d3 100644 --- a/docs/functions/Utils.Math.distance.html +++ b/docs/functions/Utils.Math.distance.html @@ -1 +1 @@ -distance | @selenite/commons
+distance | @selenite/commons
diff --git a/docs/functions/Utils.Math.lerp.html b/docs/functions/Utils.Math.lerp.html index 4b06015..cb5378a 100644 --- a/docs/functions/Utils.Math.lerp.html +++ b/docs/functions/Utils.Math.lerp.html @@ -1 +1 @@ -lerp | @selenite/commons
  • Parameters

    • start: number
    • end: number
    • alpha: number

    Returns number

+lerp | @selenite/commons
  • Parameters

    • start: number
    • end: number
    • alpha: number

    Returns number

diff --git a/docs/functions/Utils.String.camlelcaseize.html b/docs/functions/Utils.String.camlelcaseize.html index afebe94..b07838e 100644 --- a/docs/functions/Utils.String.camlelcaseize.html +++ b/docs/functions/Utils.String.camlelcaseize.html @@ -1 +1 @@ -camlelcaseize | @selenite/commons
+camlelcaseize | @selenite/commons
diff --git a/docs/functions/Utils.String.capitalize.html b/docs/functions/Utils.String.capitalize.html index 54d197f..f946eff 100644 --- a/docs/functions/Utils.String.capitalize.html +++ b/docs/functions/Utils.String.capitalize.html @@ -1 +1 @@ -capitalize | @selenite/commons
+capitalize | @selenite/commons
diff --git a/docs/functions/Utils.String.capitalizeWords.html b/docs/functions/Utils.String.capitalizeWords.html index fac89c0..96235c9 100644 --- a/docs/functions/Utils.String.capitalizeWords.html +++ b/docs/functions/Utils.String.capitalizeWords.html @@ -1 +1 @@ -capitalizeWords | @selenite/commons
+capitalizeWords | @selenite/commons
diff --git a/docs/functions/Utils.String.getVarsFromFormatString.html b/docs/functions/Utils.String.getVarsFromFormatString.html index c3be424..36605c0 100644 --- a/docs/functions/Utils.String.getVarsFromFormatString.html +++ b/docs/functions/Utils.String.getVarsFromFormatString.html @@ -1 +1 @@ -getVarsFromFormatString | @selenite/commons
  • Parameters

    • formatString: string

    Returns string[]

+getVarsFromFormatString | @selenite/commons
  • Parameters

    • formatString: string

    Returns string[]

diff --git a/docs/functions/Utils.String.initials.html b/docs/functions/Utils.String.initials.html index 98682c9..fc44989 100644 --- a/docs/functions/Utils.String.initials.html +++ b/docs/functions/Utils.String.initials.html @@ -1 +1 @@ -initials | @selenite/commons
+initials | @selenite/commons
diff --git a/docs/functions/Utils.String.isAlphaNumChar.html b/docs/functions/Utils.String.isAlphaNumChar.html index 4b055d4..0b3a451 100644 --- a/docs/functions/Utils.String.isAlphaNumChar.html +++ b/docs/functions/Utils.String.isAlphaNumChar.html @@ -1 +1 @@ -isAlphaNumChar | @selenite/commons
+isAlphaNumChar | @selenite/commons
diff --git a/docs/functions/Utils.String.titlelize.html b/docs/functions/Utils.String.titlelize.html index 4e5c671..0a84b2f 100644 --- a/docs/functions/Utils.String.titlelize.html +++ b/docs/functions/Utils.String.titlelize.html @@ -1 +1 @@ -titlelize | @selenite/commons
+titlelize | @selenite/commons
diff --git a/docs/functions/Utils.String.words.html b/docs/functions/Utils.String.words.html index c82e180..e0b9b34 100644 --- a/docs/functions/Utils.String.words.html +++ b/docs/functions/Utils.String.words.html @@ -1 +1 @@ -words | @selenite/commons
+words | @selenite/commons
diff --git a/docs/functions/Utils.XSD.parseXsd.html b/docs/functions/Utils.XSD.parseXsd.html index 51c5f70..fb9b255 100644 --- a/docs/functions/Utils.XSD.parseXsd.html +++ b/docs/functions/Utils.XSD.parseXsd.html @@ -1,4 +1,4 @@ parseXsd | @selenite/commons
  • Parses an XML schema from an XSD string.

    Parameters

    • xsd: string

      xsd string

    Returns Promise<XmlSchema | undefined>

    XMLSchema, or undefined if the string could not be parsed

    -
+
diff --git a/docs/functions/Utils.XSD.parseXsdFromUrl.html b/docs/functions/Utils.XSD.parseXsdFromUrl.html index 879b75b..67d2d7a 100644 --- a/docs/functions/Utils.XSD.parseXsdFromUrl.html +++ b/docs/functions/Utils.XSD.parseXsdFromUrl.html @@ -1,4 +1,4 @@ parseXsdFromUrl | @selenite/commons
  • Parses an XML schema from the url of an XSD file.

    Parameters

    • url: string

      url of the xsd file

    Returns Promise<XmlSchema | undefined>

    XMLSchema, or undefined if the file could not be fetched or parsed

    -
+
diff --git a/docs/functions/Utils.newLocalId.html b/docs/functions/Utils.newLocalId.html index 0346084..40fd127 100644 --- a/docs/functions/Utils.newLocalId.html +++ b/docs/functions/Utils.newLocalId.html @@ -1 +1 @@ -newLocalId | @selenite/commons
+newLocalId | @selenite/commons
diff --git a/docs/functions/Utils.newUuid.html b/docs/functions/Utils.newUuid.html index adaf48d..beaf87b 100644 --- a/docs/functions/Utils.newUuid.html +++ b/docs/functions/Utils.newUuid.html @@ -1 +1 @@ -newUuid | @selenite/commons
+newUuid | @selenite/commons
diff --git a/docs/modules.html b/docs/modules.html index 6f1f643..60e8a6b 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -10,12 +10,14 @@

References

Re-exports Array
Re-exports Attribute
Re-exports ComplexType
Re-exports EventListener
Re-exports EventModifier
Re-exports HTML
Re-exports KeyboardShortcut
Re-exports Math
Re-exports PartialBy
Re-exports Position
Re-exports Queue
Re-exports SaveData
Re-exports ShortcutSettings
Re-exports SimpleType
Re-exports Storage
Re-exports String
Re-exports Transform
Re-exports XMLTypeName
Re-exports XMLTypeTree
Re-exports XSD
Re-exports XmlSchema
Re-exports affineFromPoints
Re-exports autosize
Re-exports camlelcaseize
Re-exports capitalize
Re-exports capitalizeWords
Re-exports distance
Re-exports download
Re-exports downloadJSON
Re-exports focusTrap
Re-exports getVarsFromFormatString
Re-exports gridLines
Re-exports handleFocusLeave
Re-exports initials
Re-exports isAlphaNumChar
Re-exports isBrowser
Re-exports lerp
Re-exports newLocalId
Re-exports newUuid
Re-exports parseXsd
Re-exports parseXsdFromUrl
Re-exports persisted
Re-exports posFromClient
Re-exports preventDefault
Re-exports shortcut
Re-exports shortcutToString
Re-exports sortedByIndex
Re-exports stopPropagation
Re-exports takeFocus
Re-exports titlelize
Re-exports uuidv4
Re-exports words
+

References

Re-exports Array
Re-exports Attribute
Re-exports ComplexType
Re-exports DragItemOptions
Re-exports EventListener
Re-exports EventModifier
Re-exports HTML
Re-exports KeyboardShortcut
Re-exports Math
Re-exports PartialBy
Re-exports Point
Re-exports Position
Re-exports Queue
Re-exports SaveData
Re-exports ShortcutSettings
Re-exports SimpleType
Re-exports Storage
Re-exports String
Re-exports Transform
Re-exports WindowBounds
Re-exports WindowState
Re-exports XMLTypeName
Re-exports XMLTypeTree
Re-exports XSD
Re-exports XmlSchema
Re-exports affineFromPoints
Re-exports autosize
Re-exports camlelcaseize
Re-exports capitalize
Re-exports capitalizeWords
Re-exports distance
Re-exports download
Re-exports downloadJSON
Re-exports draggableItem
Re-exports focusTrap
Re-exports getBounds
Re-exports getBoundsIntersection
Re-exports getBoundsUnion
Re-exports getClosestElement
Re-exports getClosestElementIndex
Re-exports getVarsFromFormatString
Re-exports gridLines
Re-exports handleFocusLeave
Re-exports horizontalScroll
Re-exports initials
Re-exports isAlphaNumChar
Re-exports isBrowser
Re-exports lerp
Re-exports newLocalId
Re-exports newUuid
Re-exports padBounds
Re-exports parseXsd
Re-exports parseXsdFromUrl
Re-exports persisted
Re-exports posFromClient
Re-exports preventDefault
Re-exports shortcut
Re-exports shortcutToString
Re-exports sortedByIndex
Re-exports stopPropagation
Re-exports takeFocus
Re-exports titlelize
Re-exports uuidv4
Re-exports words
diff --git a/docs/modules/Action.html b/docs/modules/Action.html index 58c57cc..ccba25b 100644 --- a/docs/modules/Action.html +++ b/docs/modules/Action.html @@ -1,10 +1,13 @@ -Action | @selenite/commons

Namespace Action

Index

Type Aliases

KeyboardShortcut +Action | @selenite/commons

Namespace Action

Index

Type Aliases

Functions

autosize +draggableItem focusTrap gridLines handleFocusLeave +horizontalScroll shortcut shortcutToString takeFocus diff --git a/docs/modules/DataStructure.html b/docs/modules/DataStructure.html index ba7ab28..2bb2a4e 100644 --- a/docs/modules/DataStructure.html +++ b/docs/modules/DataStructure.html @@ -1,2 +1,3 @@ -DataStructure | @selenite/commons

Namespace DataStructure

Index

Classes

Queue +DataStructure | @selenite/commons

Namespace DataStructure

Index

Classes

Type Aliases

diff --git a/docs/modules/Types.html b/docs/modules/Types.html index 0c2bf63..ffe1436 100644 --- a/docs/modules/Types.html +++ b/docs/modules/Types.html @@ -1,4 +1,4 @@ Types | @selenite/commons

Namespace Types

Frequently used types and type helpers for TypeScript.

-

Index

Type Aliases

Index

Type Aliases

diff --git a/docs/modules/Utils.Array.html b/docs/modules/Utils.Array.html index 7bc7d10..f244ac9 100644 --- a/docs/modules/Utils.Array.html +++ b/docs/modules/Utils.Array.html @@ -1,2 +1,2 @@ -Array | @selenite/commons

Index

Functions

sortedByIndex +Array | @selenite/commons
diff --git a/docs/modules/Utils.EventListener.html b/docs/modules/Utils.EventListener.html index 1340688..d10b5a5 100644 --- a/docs/modules/Utils.EventListener.html +++ b/docs/modules/Utils.EventListener.html @@ -1,4 +1,4 @@ -EventListener | @selenite/commons

Index

Type Aliases

EventModifier +EventListener | @selenite/commons
diff --git a/docs/modules/Utils.HTML.html b/docs/modules/Utils.HTML.html index 1f0b4c0..5d474e0 100644 --- a/docs/modules/Utils.HTML.html +++ b/docs/modules/Utils.HTML.html @@ -1,5 +1,13 @@ -HTML | @selenite/commons

Index

Functions

download +HTML | @selenite/commons
diff --git a/docs/modules/Utils.Math.html b/docs/modules/Utils.Math.html index 110103b..9ceb3e7 100644 --- a/docs/modules/Utils.Math.html +++ b/docs/modules/Utils.Math.html @@ -1,4 +1,4 @@ -Math | @selenite/commons

Index

Type Aliases

Position +Math | @selenite/commons

Index

Type Aliases

Functions

affineFromPoints distance lerp diff --git a/docs/modules/Utils.Storage.html b/docs/modules/Utils.Storage.html index 2389453..0233334 100644 --- a/docs/modules/Utils.Storage.html +++ b/docs/modules/Utils.Storage.html @@ -1,2 +1,2 @@ -Storage | @selenite/commons

Index

Functions

persisted +Storage | @selenite/commons

Index

Functions

diff --git a/docs/modules/Utils.String.html b/docs/modules/Utils.String.html index 9bbc8da..d4296de 100644 --- a/docs/modules/Utils.String.html +++ b/docs/modules/Utils.String.html @@ -1,4 +1,4 @@ -String | @selenite/commons

Index

Functions

camlelcaseize +String | @selenite/commons

Index

Functions

camlelcaseize capitalize capitalizeWords getVarsFromFormatString diff --git a/docs/modules/Utils.XSD.html b/docs/modules/Utils.XSD.html index 4647c9a..a7b36ff 100644 --- a/docs/modules/Utils.XSD.html +++ b/docs/modules/Utils.XSD.html @@ -1,5 +1,5 @@ XSD | @selenite/commons

Functions and types to parse XML schema definitions (ie. .xsd files).

-

Index

Classes

Index

Classes

Type Aliases

Attribute ComplexType SimpleType diff --git a/docs/modules/Utils.html b/docs/modules/Utils.html index f02f96e..21914b6 100644 --- a/docs/modules/Utils.html +++ b/docs/modules/Utils.html @@ -1,8 +1,10 @@ -Utils | @selenite/commons

Namespace Utils

References

Attribute +Utils | @selenite/commons

Namespace Utils

References

Re-exports Attribute
Re-exports ComplexType
Re-exports EventModifier
Re-exports Position
Re-exports SimpleType
Re-exports XMLTypeName
Re-exports XMLTypeTree
Re-exports XmlSchema
Re-exports affineFromPoints
Re-exports camlelcaseize
Re-exports capitalize
Re-exports capitalizeWords
Re-exports distance
Re-exports download
Re-exports downloadJSON
Re-exports getVarsFromFormatString
Re-exports initials
Re-exports isAlphaNumChar
Re-exports isBrowser
Re-exports lerp
Re-exports parseXsd
Re-exports parseXsdFromUrl
Re-exports persisted
Re-exports posFromClient
Re-exports preventDefault
Re-exports sortedByIndex
Re-exports stopPropagation
Re-exports titlelize
Re-exports words
+

References

Re-exports Attribute
Re-exports ComplexType
Re-exports EventModifier
Re-exports Position
Re-exports SimpleType
Re-exports WindowBounds
Re-exports WindowState
Re-exports XMLTypeName
Re-exports XMLTypeTree
Re-exports XmlSchema
Re-exports affineFromPoints
Re-exports camlelcaseize
Re-exports capitalize
Re-exports capitalizeWords
Re-exports distance
Re-exports download
Re-exports downloadJSON
Re-exports getBounds
Re-exports getBoundsIntersection
Re-exports getBoundsUnion
Re-exports getClosestElement
Re-exports getClosestElementIndex
Re-exports getVarsFromFormatString
Re-exports initials
Re-exports isAlphaNumChar
Re-exports isBrowser
Re-exports lerp
Re-exports padBounds
Re-exports parseXsd
Re-exports parseXsdFromUrl
Re-exports persisted
Re-exports posFromClient
Re-exports preventDefault
Re-exports sortedByIndex
Re-exports stopPropagation
Re-exports titlelize
Re-exports words
diff --git a/docs/types/Action.DragItemOptions.html b/docs/types/Action.DragItemOptions.html new file mode 100644 index 0000000..9975ad4 --- /dev/null +++ b/docs/types/Action.DragItemOptions.html @@ -0,0 +1,6 @@ +DragItemOptions | @selenite/commons

Type Alias DragItemOptions

DragItemOptions: Omit<DragOptions, "bounds" | "transform" | "recomputeBounds"> & {
    flipDuration: number;
    items: unknown[];
}

Options of a draggable item action.

+

Extends neodrag options.

+

Type declaration

  • flipDuration: number

    Duration of flip animation.

    +
  • items: unknown[]

    Array of draggable items.

    +
diff --git a/docs/types/Action.KeyboardShortcut.html b/docs/types/Action.KeyboardShortcut.html index 15d88ec..ded416f 100644 --- a/docs/types/Action.KeyboardShortcut.html +++ b/docs/types/Action.KeyboardShortcut.html @@ -1 +1 @@ -KeyboardShortcut | @selenite/commons

Type Alias KeyboardShortcut

KeyboardShortcut: {
    alt?: boolean;
    ctrl?: boolean;
    key: string;
    shift?: boolean;
}
+KeyboardShortcut | @selenite/commons

Type Alias KeyboardShortcut

KeyboardShortcut: {
    alt?: boolean;
    ctrl?: boolean;
    key: string;
    shift?: boolean;
}
diff --git a/docs/types/Action.ShortcutSettings.html b/docs/types/Action.ShortcutSettings.html index ba57366..adb25ca 100644 --- a/docs/types/Action.ShortcutSettings.html +++ b/docs/types/Action.ShortcutSettings.html @@ -1 +1 @@ -ShortcutSettings | @selenite/commons

Type Alias ShortcutSettings

ShortcutSettings: Partial<KeyboardShortcut> & {
    action?: ((e: KeyboardEvent) => unknown);
    ignoreElements?: string[];
    shortcuts?: KeyboardShortcut[] | ((e: KeyboardEvent) => boolean) | KeyboardShortcut;
}
+ShortcutSettings | @selenite/commons

Type Alias ShortcutSettings

ShortcutSettings: Partial<KeyboardShortcut> & {
    action?: ((e: KeyboardEvent) => unknown);
    ignoreElements?: string[];
    shortcuts?: KeyboardShortcut[] | ((e: KeyboardEvent) => boolean) | KeyboardShortcut;
}
diff --git a/docs/types/Action.Transform.html b/docs/types/Action.Transform.html index 2dbaa6d..0838b8c 100644 --- a/docs/types/Action.Transform.html +++ b/docs/types/Action.Transform.html @@ -1 +1 @@ -Transform | @selenite/commons
Transform: {
    k: number;
    x: number;
    y: number;
}
+Transform | @selenite/commons
Transform: {
    k: number;
    x: number;
    y: number;
}
diff --git a/docs/types/DataStructure.Point.html b/docs/types/DataStructure.Point.html new file mode 100644 index 0000000..0d714a6 --- /dev/null +++ b/docs/types/DataStructure.Point.html @@ -0,0 +1 @@ +Point | @selenite/commons
Point: {
    x: number;
    y: number;
}
diff --git a/docs/types/Types.PartialBy.html b/docs/types/Types.PartialBy.html index 1406fca..6d5c48a 100644 --- a/docs/types/Types.PartialBy.html +++ b/docs/types/Types.PartialBy.html @@ -1,4 +1,4 @@ PartialBy | @selenite/commons

Type Alias PartialBy<T, K>

PartialBy<T, K>: Omit<T, K> & Partial<Pick<T, K>>

Make selected properties in T optional.

Type Parameters

  • T

    The type to make partial.

  • K extends keyof T

    The keys of T to make optional.

    -
+
diff --git a/docs/types/Types.SaveData.html b/docs/types/Types.SaveData.html index 7f46b01..b53996c 100644 --- a/docs/types/Types.SaveData.html +++ b/docs/types/Types.SaveData.html @@ -1,3 +1,3 @@ SaveData | @selenite/commons

Type Alias SaveData<T>

SaveData<T>: ReturnType<T["toJSON"]>

Get the return type of the toJSON method of an object.

Type Parameters

  • T extends {
        toJSON: (() => unknown);
    }

    The object type.

    -
+
diff --git a/docs/types/Utils.EventListener.EventModifier.html b/docs/types/Utils.EventListener.EventModifier.html index c20337b..703496a 100644 --- a/docs/types/Utils.EventListener.EventModifier.html +++ b/docs/types/Utils.EventListener.EventModifier.html @@ -1 +1 @@ -EventModifier | @selenite/commons
EventModifier<E>: ((e: E) => E)

Type Parameters

  • E extends Event = Event
+EventModifier | @selenite/commons
EventModifier<E>: ((e: E) => E)

Type Parameters

  • E extends Event = Event
diff --git a/docs/types/Utils.HTML.WindowBounds.html b/docs/types/Utils.HTML.WindowBounds.html new file mode 100644 index 0000000..d7837a6 --- /dev/null +++ b/docs/types/Utils.HTML.WindowBounds.html @@ -0,0 +1,3 @@ +WindowBounds | @selenite/commons
WindowBounds: {
    bottom: number;
    left: number;
    right: number;
    top: number;
}

Bounds of an element relative to the window.

+

All distances are measured from the edges of the window.

+
diff --git a/docs/types/Utils.Math.Position.html b/docs/types/Utils.Math.Position.html index 40b3f18..ef901f6 100644 --- a/docs/types/Utils.Math.Position.html +++ b/docs/types/Utils.Math.Position.html @@ -1 +1 @@ -Position | @selenite/commons
Position: {
    x: number;
    y: number;
}
+Position | @selenite/commons
Position: {
    x: number;
    y: number;
}
diff --git a/docs/types/Utils.XSD.Attribute.html b/docs/types/Utils.XSD.Attribute.html index 92e84b1..5f2dfe4 100644 --- a/docs/types/Utils.XSD.Attribute.html +++ b/docs/types/Utils.XSD.Attribute.html @@ -4,4 +4,4 @@
  • name: string

    Name of the attribute.

  • required: boolean

    Is the attribute required.

  • type: string

    Data type of the attribute.

    -
  • +
    diff --git a/docs/types/Utils.XSD.ComplexType.html b/docs/types/Utils.XSD.ComplexType.html index 65dada8..b136a76 100644 --- a/docs/types/Utils.XSD.ComplexType.html +++ b/docs/types/Utils.XSD.ComplexType.html @@ -2,4 +2,4 @@

    Type declaration

    • attrs: Attribute[]

      Attributes of the complex type.

    • Optionalchildren?: string[]
    • Optionaldoc?: string

      Documentation of the complex type.

    • name: string

      Name of the complex type.

      -
    +
    diff --git a/docs/types/Utils.XSD.SimpleType.html b/docs/types/Utils.XSD.SimpleType.html index 26bb0af..7703373 100644 --- a/docs/types/Utils.XSD.SimpleType.html +++ b/docs/types/Utils.XSD.SimpleType.html @@ -3,4 +3,4 @@
  • name: string

    Name of the simple type.

  • Optionaloptions?: string[]

    Options if type is an enum.

  • Optionalpattern?: string

    Regex to validate the type.

    -
  • +
    diff --git a/docs/types/Utils.XSD.XMLTypeName.html b/docs/types/Utils.XSD.XMLTypeName.html index 291766a..0a55437 100644 --- a/docs/types/Utils.XSD.XMLTypeName.html +++ b/docs/types/Utils.XSD.XMLTypeName.html @@ -1,2 +1,2 @@ XMLTypeName | @selenite/commons
    XMLTypeName: string

    Type alias to make code more explicit.

    -
    +
    diff --git a/docs/types/Utils.XSD.XMLTypeTree.html b/docs/types/Utils.XSD.XMLTypeTree.html index f01070d..638bdfd 100644 --- a/docs/types/Utils.XSD.XMLTypeTree.html +++ b/docs/types/Utils.XSD.XMLTypeTree.html @@ -1,3 +1,3 @@ XMLTypeTree | @selenite/commons
    XMLTypeTree: {
        [key: string]: XMLTypeTree | "recursive";
    }

    A tree view of an XML schema.

    It is a recursive structure that represents the hierarchy of types in a schema.

    -
    +
    diff --git a/package.json b/package.json index 5d0fe06..368d78d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@selenite/commons", - "version": "0.10.1", + "version": "0.11.0", "scripts": { "dev": "npm run wasm && vite dev", "wasm": "wasm-pack build ./selenite-commons-rs --target web", @@ -32,6 +32,7 @@ "svelte": "^5.0.0-next.1" }, "devDependencies": { + "@neodrag/svelte": "^2.0.6", "@sveltejs/adapter-auto": "^3.0.0", "@sveltejs/kit": "^2.0.0", "@sveltejs/package": "^2.0.0", @@ -52,7 +53,7 @@ "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "publint": "^0.1.9", - "svelte": "^5.0.0-next.1", + "svelte": "^5.0.0-next.195", "svelte-check": "^3.6.0", "svelte-persisted-store": "^0.11.0", "tailwindcss": "^3.4.4", diff --git a/src/lib/actions/drag.ts b/src/lib/actions/drag.ts new file mode 100644 index 0000000..1209036 --- /dev/null +++ b/src/lib/actions/drag.ts @@ -0,0 +1,127 @@ +import { getBoundsUnion, getClosestElementIndex, type Position } from "$lib/utils"; +import { draggable, type DragOptions } from "@neodrag/svelte"; +import type { Action } from "svelte/action"; + +/** + * Options of a draggable item action. + * + * Extends neodrag options. + * @see [Neodrag documentation](https://www.neodrag.dev/docs/svelte#options) + */ +export type DragItemOptions = Omit & { + /** Array of draggable items. */ + items: unknown[]; + /** Duration of flip animation. */ + flipDuration: number; +}; + +/** + * Action to make an item in an array of items draggable. + * + * Options : {@link DragItemOptions}. + */ +export const draggableItem: Action< + HTMLElement, + DragItemOptions +> = (node, params) => { + let target: HTMLElement | undefined; + const rect = node.getBoundingClientRect(); + let base: Position = { x: rect.x, y: rect.y }; + let baseOffset: Position = { x: 0, y: 0 }; + let waitForFlip = false; + function getBounds() { + const neodrags = Array.from(node.parentElement!.querySelectorAll('.neodrag')); + return getBoundsUnion(neodrags); + } + const dragOptions: DragOptions = { + ...params, + bounds: { + get top() { + return getBounds().top; + }, + get left() { + return getBounds().left; + }, + get right() { + return getBounds().right; + }, + get bottom() { + return getBounds().bottom; + } + }, + recomputeBounds: { + dragStart: true, + drag: true, + dragEnd: true + }, + transform({ offsetX, offsetY, rootNode }) { + if (!target) return; + target.style.visibility = 'visible'; + target.style.left = `${base.x + offsetX - baseOffset.x}px`; + target.style.top = `${base.y + offsetY - baseOffset.y}px`; + }, + + onDragStart(data) { + const rect = node.getBoundingClientRect(); + base = { x: rect.x, y: rect.y }; + target = node.cloneNode(true) as HTMLElement; + target.classList.remove('neodrag'); + node.parentElement?.appendChild(target); + target.style.position = 'fixed'; + target.style.pointerEvents = 'none'; + target.style.left = `${base.x}px`; + target.style.top = `${base.y}px`; + target.style.visibility = 'hidden'; + document.body.style.pointerEvents = 'none'; + target.style.pointerEvents = 'auto'; + + target.style.visibility = 'visible'; + node.style.opacity = '0'; + params.onDragStart?.(data); + }, + + onDrag(data) { + params.onDrag?.(data); + if (waitForFlip) return; + if (!target) return; + document.documentElement.style.cursor = 'grabbing'; + + target.style.cursor = 'grabbing'; + if (!node.parentElement) { + console.error("Couldn't find parent element"); + return; + } + const neodrags = Array.from(node.parentElement.querySelectorAll('.neodrag')); + const closestIndex = getClosestElementIndex(target, neodrags); + if (closestIndex == -1) return; + + const currentIndex = neodrags.indexOf(node); + + if (currentIndex === closestIndex) return; + console.debug('Move from', currentIndex, 'to', closestIndex); + params.items.splice(closestIndex, 0, params.items.splice(currentIndex, 1)[0]); + waitForFlip = true; + setTimeout(() => { + waitForFlip = false; + }, params.flipDuration); + }, + + onDragEnd(data) { + document.body.style.pointerEvents = 'auto'; + baseOffset = { x: data.offsetX, y: data.offsetY }; + document.body.style.cursor = ''; + document.documentElement.style.cursor = ''; + target?.remove(); + node.style.opacity = '1'; + params.onDragEnd?.(data); + } + }; + const draggableReturn = draggable(node, dragOptions); + + return { + destroy() { + target?.remove(); + if (draggableReturn) draggableReturn.destroy?.(); + } + }; +}; diff --git a/src/lib/actions/index.ts b/src/lib/actions/index.ts index 16ce7f6..475320f 100644 --- a/src/lib/actions/index.ts +++ b/src/lib/actions/index.ts @@ -4,6 +4,7 @@ export * from './shortcut.js' export * from './canvas.js' export * from './scroll.js' export * from './inputs.js' +export * from './drag.js' let handleFocusLeaveRefCount = 0; let handleFocusLeaveCallbacks: ((isKeyboard: boolean) => void)[] = []; function handleKeydown(e: KeyboardEvent) { diff --git a/src/lib/actions/scroll.ts b/src/lib/actions/scroll.ts index b0f5198..a9144d1 100644 --- a/src/lib/actions/scroll.ts +++ b/src/lib/actions/scroll.ts @@ -2,6 +2,12 @@ import type { Action } from 'svelte/action'; import { tweened } from 'svelte/motion'; import { get } from 'svelte/store'; +/** + * Adds horizontal scrolling to an element. + * @param node - The element to add horizontal scrolling to. + * @param params - The duration of the scroll animation. + * @returns svelte action + */ export const horizontalScroll: Action = ( node, { duration = 150 } = {} diff --git a/src/lib/datastructure.ts b/src/lib/datastructure.ts index 38ff776..4ab0e66 100644 --- a/src/lib/datastructure.ts +++ b/src/lib/datastructure.ts @@ -1,3 +1,8 @@ +export type Point= { + x: number; + y: number; +}; + export class Queue { #inStack: T[] = []; #outStack: T[] = []; diff --git a/src/lib/utils/html.svelte.ts b/src/lib/utils/html.svelte.ts new file mode 100644 index 0000000..93f278c --- /dev/null +++ b/src/lib/utils/html.svelte.ts @@ -0,0 +1,179 @@ +import type { Position } from './math'; + +export class WindowState { + width = $state(NaN) + height = $state(NaN) + + static #instance: WindowState | undefined = undefined; + private static get instance() { + if (!this.#instance) this.#instance = new WindowState(); + return this.#instance; + } + + static get width() { + return this.instance.width; + } + + static get height() { + return this.instance.height; + } + + private constructor() { + if (typeof window === "undefined") return; + this.width = window.innerWidth; + this.height = window.innerHeight; + window.addEventListener("resize", (e) => { + this.width = window.innerWidth; + this.height = window.innerHeight; + }) + } +} + + + +export function isBrowser() { + return typeof window !== 'undefined'; +} + +export function posFromClient({ + clientX: x, + clientY: y +}: { + clientX: number; + clientY: number; +}): Position { + return { x, y }; +} + +export function download(filename: string, data: unknown) { + const text = typeof data === 'string' ? data : JSON.stringify(data, undefined, 4); + const blob = new Blob([text], { type: 'application/octet-stream' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + URL.revokeObjectURL(url); + document.body.removeChild(a); + +} + +export function downloadJSON(name: string, data: unknown) { + const json = JSON.stringify(data, undefined, 4); + const blob = new Blob([json], { type: 'application/json' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = `${name}.json`; + document.body.appendChild(a); + a.click(); + URL.revokeObjectURL(url); + document.body.removeChild(a); +} + +/** + * Bounds of an element relative to the window. + * + * All distances are measured from the edges of the window. + */ +export type WindowBounds = { + top: number; + left: number; + right: number; + bottom: number +}; + +/** + * Returns the bounds of an element relative to the window. + * @param element + * @returns + */ +export function getBounds(element?: Element): WindowBounds { + if (!element) return { top: 0, left: 0, right: 0, bottom: 0 }; + const { x, y, width, height } = element.getBoundingClientRect(); + return { left: x, top: y, right: WindowState.width - x - width, bottom: WindowState.height - y - height }; +} + +/** + * Returns the union of the window bounds of multiple elements. + * @param bounds + * @returns + */ +export function getBoundsUnion(bounds: (WindowBounds | Element | undefined)[]): WindowBounds { + const res: WindowBounds = {top: Infinity, left: Infinity, right: Infinity, bottom: Infinity}; + + for (const target of bounds) { + if (target === undefined) continue; + const bound = target instanceof Element ? getBounds(target) : target; + res.top = Math.min(res.top, bound.top); + res.left = Math.min(res.left, bound.left); + res.right = Math.min(res.right, bound.right); + res.bottom = Math.min(res.bottom, bound.bottom); + } + return res; +} + +/** + * Returns padded window bounds. + * @param bounds - bounds to pad + * @param padding - pixels to pad + * @returns padded window bounds + */ +export function padBounds(bounds: WindowBounds, padding: number): WindowBounds { + return { + top: bounds.top - padding, + left: bounds.left - padding, + right: bounds.right - padding, + bottom: bounds.bottom - padding + }; +} + +export function getBoundsIntersection(...bounds: (WindowBounds | HTMLElement | undefined)[]): WindowBounds { + const res: WindowBounds = {top: 0, left: 0, right: 0, bottom: 0}; + + for (const target of bounds) { + if (target === undefined) continue; + const bound = target instanceof HTMLElement ? getBounds(target) : target; + res.top = Math.max(res.top, bound.top); + res.left = Math.max(res.left, bound.left); + res.right = Math.max(res.right, bound.right); + res.bottom = Math.max(res.bottom, bound.bottom); + } + return res; +} + + +export function getClosestElement(target: Element, elements: Element[]) { + let closestElement: Element | undefined = undefined; + let closestDistance = Infinity; + const tRect = target.getBoundingClientRect(); + for (const e of elements) { + const eRect = e.getBoundingClientRect(); + const distance = Math.sqrt( + Math.pow(eRect.x - tRect.x, 2) + Math.pow(eRect.y - tRect.y, 2) + ); + if (distance < closestDistance) { + closestDistance = distance; + closestElement = e; + } + } + return closestElement +} + +export function getClosestElementIndex(target: Element, elements: Element[]) { + let closestDistance = Infinity; + let closestIndex = -1; + const tRect = target.getBoundingClientRect(); + for (const [i, e] of elements.entries()) { + const eRect = e.getBoundingClientRect(); + const distance = Math.sqrt( + Math.pow(eRect.x - tRect.x, 2) + Math.pow(eRect.y - tRect.y, 2) + ); + if (distance < closestDistance) { + closestDistance = distance; + closestIndex = i; + } + } + return closestIndex +} \ No newline at end of file diff --git a/src/lib/utils/html.ts b/src/lib/utils/html.ts deleted file mode 100644 index c949fc3..0000000 --- a/src/lib/utils/html.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { Position } from './math'; - -export function isBrowser() { - return typeof window !== 'undefined'; -} - -export function posFromClient({ - clientX: x, - clientY: y -}: { - clientX: number; - clientY: number; -}): Position { - return { x, y }; -} - -export function download(filename: string, data: unknown) { - const text = typeof data === 'string' ? data : JSON.stringify(data, undefined, 4); - const blob = new Blob([text], { type: 'application/octet-stream' }); - const url = URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = filename; - document.body.appendChild(a); - a.click(); - URL.revokeObjectURL(url); - document.body.removeChild(a); - -} - -export function downloadJSON(name: string, data: unknown) { - const json = JSON.stringify(data, undefined, 4); - const blob = new Blob([json], { type: 'application/json' }); - const url = URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = `${name}.json`; - document.body.appendChild(a); - a.click(); - URL.revokeObjectURL(url); - document.body.removeChild(a); -} diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 34099e1..2ef78ea 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -9,8 +9,8 @@ export * as Array from './array/index.js' export * from './array/index.js' export * as Math from './math.js' export * from './math.js' -export * as HTML from './html.js' -export * from './html.js' +export * as HTML from './html.svelte.js' +export * from './html.svelte.js' export * as XSD from './xsd.js' export * from './xsd.js' export * as Storage from './storage.js' diff --git a/src/lib/utils/xsd.ts b/src/lib/utils/xsd.ts index 0e1747f..7182604 100644 --- a/src/lib/utils/xsd.ts +++ b/src/lib/utils/xsd.ts @@ -4,7 +4,7 @@ */ import init, { parse_xsd } from 'selenite-commons-rs'; -import { isBrowser } from './html'; +import { isBrowser } from './html.svelte'; /** * A simple datatype in an XML schema. diff --git a/src/routes/drag/+page.svelte b/src/routes/drag/+page.svelte new file mode 100644 index 0000000..d925260 --- /dev/null +++ b/src/routes/drag/+page.svelte @@ -0,0 +1,23 @@ + + +
    +
    + {#each tabs as tab (tab)} +
    + {tab} +
    + {/each} +
    +
    +
    {'>'}
    +
    +
    diff --git a/src/routes/test/flip/+page.svelte b/src/routes/test/flip/+page.svelte new file mode 100644 index 0000000..9e781b2 --- /dev/null +++ b/src/routes/test/flip/+page.svelte @@ -0,0 +1,95 @@ + +
      + {#each items as item, i (item)} +
    • + {i}: {item}
      +
    • + {/each} +
    + + diff --git a/vite.config.ts b/vite.config.ts index fbb58dc..0ef367d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -9,5 +9,8 @@ export default defineConfig({ ], test: { include: ['src/**/*.{test,spec}.{js,ts}'] + }, + server: { + port: 5174 } });