diff --git a/bun.lockb b/bun.lockb index d6487fd..b0ff660 100755 Binary files a/bun.lockb and b/bun.lockb differ 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 } });