@e280/sly 0.2.0-3 → 0.2.0-5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +217 -17
  2. package/package.json +1 -1
  3. package/s/demo/demo.bundle.ts +6 -1
  4. package/s/demo/views/demo.ts +1 -0
  5. package/s/demo/views/incredi.ts +28 -0
  6. package/s/dom/dom.ts +25 -13
  7. package/s/index.html.ts +1 -0
  8. package/s/index.ts +1 -0
  9. package/s/loot/drag-and-drops.ts +82 -0
  10. package/s/loot/{drop.ts → drops.ts} +8 -17
  11. package/s/loot/helpers.ts +3 -3
  12. package/s/loot/index.ts +2 -2
  13. package/s/views/attributes.ts +6 -6
  14. package/s/views/base-element.ts +84 -0
  15. package/s/views/use.ts +1 -1
  16. package/s/views/view.ts +4 -4
  17. package/x/demo/demo.bundle.js +5 -1
  18. package/x/demo/demo.bundle.js.map +1 -1
  19. package/x/demo/demo.bundle.min.js +17 -14
  20. package/x/demo/demo.bundle.min.js.map +4 -4
  21. package/x/demo/views/demo.js +1 -0
  22. package/x/demo/views/demo.js.map +1 -1
  23. package/x/demo/views/incredi.d.ts +12 -0
  24. package/x/demo/views/incredi.js +21 -0
  25. package/x/demo/views/incredi.js.map +1 -0
  26. package/x/dom/dom.d.ts +6 -5
  27. package/x/dom/dom.js +19 -11
  28. package/x/dom/dom.js.map +1 -1
  29. package/x/index.d.ts +1 -0
  30. package/x/index.html +3 -2
  31. package/x/index.html.js +1 -0
  32. package/x/index.html.js.map +1 -1
  33. package/x/index.js +1 -0
  34. package/x/index.js.map +1 -1
  35. package/x/loot/drag-and-drops.d.ts +30 -0
  36. package/x/loot/drag-and-drops.js +63 -0
  37. package/x/loot/drag-and-drops.js.map +1 -0
  38. package/x/loot/{drop.d.ts → drops.d.ts} +3 -5
  39. package/x/loot/drops.js +25 -0
  40. package/x/loot/drops.js.map +1 -0
  41. package/x/loot/helpers.d.ts +3 -3
  42. package/x/loot/helpers.js +3 -3
  43. package/x/loot/helpers.js.map +1 -1
  44. package/x/loot/index.d.ts +2 -2
  45. package/x/loot/index.js +2 -2
  46. package/x/loot/index.js.map +1 -1
  47. package/x/views/attributes.d.ts +1 -1
  48. package/x/views/attributes.js +5 -5
  49. package/x/views/attributes.js.map +1 -1
  50. package/x/views/base-element.d.ts +14 -0
  51. package/x/views/base-element.js +62 -0
  52. package/x/views/base-element.js.map +1 -0
  53. package/x/views/use.js.map +1 -1
  54. package/x/views/view.js +4 -4
  55. package/x/views/view.js.map +1 -1
  56. package/s/loot/drag-drop.ts +0 -76
  57. package/x/loot/drag-drop.d.ts +0 -29
  58. package/x/loot/drag-drop.js +0 -54
  59. package/x/loot/drag-drop.js.map +0 -1
  60. package/x/loot/drop.js +0 -32
  61. package/x/loot/drop.js.map +0 -1
@@ -1,76 +0,0 @@
1
-
2
- import {signal} from "@e280/strata"
3
- import {dragIsOutsideCurrentTarget} from "./helpers.js"
4
-
5
- /** system for dragging-and-dropping things around on a webpage */
6
- export class DragDrop<Grabbed, Hovering> {
7
- #$grabbed = signal<Grabbed | undefined>(undefined)
8
- #$hovering = signal<Hovering | undefined>(undefined)
9
-
10
- constructor(private params: {
11
-
12
- /** accept a dropped item that was declared within this system */
13
- acceptDrop: (event: DragEvent, grabbed: Grabbed, hovering: Hovering) => void
14
-
15
- /** accept undeclared drops from outside this system */
16
- fromOutside?: {
17
- predicate: (event: DragEvent, hovering: Hovering) => boolean
18
- acceptDrop: (event: DragEvent, hovering: Hovering) => void
19
- }
20
- }) {}
21
-
22
- /** make event listeners to attach to your dragzone(s) */
23
- readonly dragzone = {
24
- draggable: () => "true",
25
-
26
- dragstart: (grabbed: Grabbed) => (_: DragEvent) => {
27
- this.#$grabbed.value = grabbed
28
- },
29
-
30
- dragend: () => (_: DragEvent) => {
31
- this.#$grabbed.value = undefined
32
- this.#$hovering.value = undefined
33
- },
34
- }
35
-
36
- /** make event listeners to attach to your dropzones(s) */
37
- readonly dropzone = {
38
- dragenter: () => (_: DragEvent) => {},
39
-
40
- dragleave: () => (event: DragEvent) => {
41
- if (dragIsOutsideCurrentTarget(event))
42
- this.#$hovering.value = undefined
43
- },
44
-
45
- dragover: (hovering: Hovering) => (event: DragEvent) => {
46
- event.preventDefault()
47
- const {fromOutside} = this.params
48
-
49
- if (this.#$grabbed() || (fromOutside && fromOutside.predicate(event, hovering)))
50
- this.#$hovering.value = hovering
51
- },
52
-
53
- drop: (hovering: Hovering) => (event: DragEvent) => {
54
- event.preventDefault()
55
- const {acceptDrop, fromOutside} = this.params
56
-
57
- const grabbed = this.#$grabbed()
58
- this.#$grabbed.value = undefined
59
- this.#$hovering.value = undefined
60
-
61
- if (grabbed)
62
- acceptDrop(event, grabbed, hovering)
63
- else if (fromOutside && fromOutside.predicate(event, hovering))
64
- fromOutside.acceptDrop(event, hovering)
65
- },
66
- }
67
-
68
- get grabbed() {
69
- return this.#$grabbed()
70
- }
71
-
72
- get hovering() {
73
- return this.#$hovering()
74
- }
75
- }
76
-
@@ -1,29 +0,0 @@
1
- /** system for dragging-and-dropping things around on a webpage */
2
- export declare class DragDrop<Grabbed, Hovering> {
3
- #private;
4
- private params;
5
- constructor(params: {
6
- /** accept a dropped item that was declared within this system */
7
- acceptDrop: (event: DragEvent, grabbed: Grabbed, hovering: Hovering) => void;
8
- /** accept undeclared drops from outside this system */
9
- fromOutside?: {
10
- predicate: (event: DragEvent, hovering: Hovering) => boolean;
11
- acceptDrop: (event: DragEvent, hovering: Hovering) => void;
12
- };
13
- });
14
- /** make event listeners to attach to your dragzone(s) */
15
- readonly dragzone: {
16
- draggable: () => string;
17
- dragstart: (grabbed: Grabbed) => (_: DragEvent) => void;
18
- dragend: () => (_: DragEvent) => void;
19
- };
20
- /** make event listeners to attach to your dropzones(s) */
21
- readonly dropzone: {
22
- dragenter: () => (_: DragEvent) => void;
23
- dragleave: () => (event: DragEvent) => void;
24
- dragover: (hovering: Hovering) => (event: DragEvent) => void;
25
- drop: (hovering: Hovering) => (event: DragEvent) => void;
26
- };
27
- get grabbed(): Grabbed | undefined;
28
- get hovering(): Hovering | undefined;
29
- }
@@ -1,54 +0,0 @@
1
- import { signal } from "@e280/strata";
2
- import { dragIsOutsideCurrentTarget } from "./helpers.js";
3
- /** system for dragging-and-dropping things around on a webpage */
4
- export class DragDrop {
5
- params;
6
- #$grabbed = signal(undefined);
7
- #$hovering = signal(undefined);
8
- constructor(params) {
9
- this.params = params;
10
- }
11
- /** make event listeners to attach to your dragzone(s) */
12
- dragzone = {
13
- draggable: () => "true",
14
- dragstart: (grabbed) => (_) => {
15
- this.#$grabbed.value = grabbed;
16
- },
17
- dragend: () => (_) => {
18
- this.#$grabbed.value = undefined;
19
- this.#$hovering.value = undefined;
20
- },
21
- };
22
- /** make event listeners to attach to your dropzones(s) */
23
- dropzone = {
24
- dragenter: () => (_) => { },
25
- dragleave: () => (event) => {
26
- if (dragIsOutsideCurrentTarget(event))
27
- this.#$hovering.value = undefined;
28
- },
29
- dragover: (hovering) => (event) => {
30
- event.preventDefault();
31
- const { fromOutside } = this.params;
32
- if (this.#$grabbed() || (fromOutside && fromOutside.predicate(event, hovering)))
33
- this.#$hovering.value = hovering;
34
- },
35
- drop: (hovering) => (event) => {
36
- event.preventDefault();
37
- const { acceptDrop, fromOutside } = this.params;
38
- const grabbed = this.#$grabbed();
39
- this.#$grabbed.value = undefined;
40
- this.#$hovering.value = undefined;
41
- if (grabbed)
42
- acceptDrop(event, grabbed, hovering);
43
- else if (fromOutside && fromOutside.predicate(event, hovering))
44
- fromOutside.acceptDrop(event, hovering);
45
- },
46
- };
47
- get grabbed() {
48
- return this.#$grabbed();
49
- }
50
- get hovering() {
51
- return this.#$hovering();
52
- }
53
- }
54
- //# sourceMappingURL=drag-drop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drag-drop.js","sourceRoot":"","sources":["../../s/loot/drag-drop.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AACnC,OAAO,EAAC,0BAA0B,EAAC,MAAM,cAAc,CAAA;AAEvD,kEAAkE;AAClE,MAAM,OAAO,QAAQ;IAIA;IAHpB,SAAS,GAAG,MAAM,CAAsB,SAAS,CAAC,CAAA;IAClD,UAAU,GAAG,MAAM,CAAuB,SAAS,CAAC,CAAA;IAEpD,YAAoB,MAUnB;QAVmB,WAAM,GAAN,MAAM,CAUzB;IAAG,CAAC;IAEL,yDAAyD;IAChD,QAAQ,GAAG;QACnB,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM;QAEvB,SAAS,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,CAAY,EAAE,EAAE;YACjD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,OAAO,CAAA;QAC/B,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAY,EAAE,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAA;YAChC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAA;QAClC,CAAC;KACD,CAAA;IAED,0DAA0D;IACjD,QAAQ,GAAG;QACnB,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAY,EAAE,EAAE,GAAE,CAAC;QAErC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,KAAgB,EAAE,EAAE;YACrC,IAAI,0BAA0B,CAAC,KAAK,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAA;QACnC,CAAC;QAED,QAAQ,EAAE,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC,KAAgB,EAAE,EAAE;YACtD,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;YAEjC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC9E,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAA;QAClC,CAAC;QAED,IAAI,EAAE,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC,KAAgB,EAAE,EAAE;YAClD,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,MAAM,EAAC,UAAU,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;YAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;YAChC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAA;YAChC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAA;YAEjC,IAAI,OAAO;gBACV,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;iBAChC,IAAI,WAAW,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAC7D,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACzC,CAAC;KACD,CAAA;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;IACxB,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;IACzB,CAAC;CACD"}
package/x/loot/drop.js DELETED
@@ -1,32 +0,0 @@
1
- import { signal } from "@e280/strata";
2
- import { dragIsOutsideCurrentTarget } from "./helpers.js";
3
- /** dropzone that accepts dropped stuff like files */
4
- export class Drop {
5
- params;
6
- #$indicator = signal(false);
7
- constructor(params) {
8
- this.params = params;
9
- }
10
- get indicator() {
11
- return this.#$indicator.value;
12
- }
13
- resetIndicator = () => {
14
- this.#$indicator.value = false;
15
- };
16
- dragover = (event) => {
17
- event.preventDefault();
18
- if (this.params.predicate(event))
19
- this.#$indicator.value = true;
20
- };
21
- dragleave = (event) => {
22
- if (dragIsOutsideCurrentTarget(event))
23
- this.#$indicator.value = false;
24
- };
25
- drop = (event) => {
26
- event.preventDefault();
27
- this.#$indicator.value = false;
28
- if (this.params.predicate(event))
29
- this.params.acceptDrop(event);
30
- };
31
- }
32
- //# sourceMappingURL=drop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drop.js","sourceRoot":"","sources":["../../s/loot/drop.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AACnC,OAAO,EAAC,0BAA0B,EAAC,MAAM,cAAc,CAAA;AAEvD,qDAAqD;AACrD,MAAM,OAAO,IAAI;IAGI;IAFpB,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAE3B,YAAoB,MAOnB;QAPmB,WAAM,GAAN,MAAM,CAOzB;IAAG,CAAC;IAEL,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA;IAC9B,CAAC;IAED,cAAc,GAAG,GAAG,EAAE;QACrB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAA;IAC/B,CAAC,CAAA;IAED,QAAQ,GAAG,CAAC,KAAgB,EAAE,EAAE;QAC/B,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAA;IAC/B,CAAC,CAAA;IAED,SAAS,GAAG,CAAC,KAAgB,EAAE,EAAE;QAChC,IAAI,0BAA0B,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAA;IAChC,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAA;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;CACD"}