playhtml 1.1.0 → 1.2.0
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.
- package/CHANGELOG.md +7 -0
- package/README.md +6 -0
- package/dist/elements.d.ts +33 -13
- package/dist/main.d.ts +1 -1
- package/dist/playhtml.es.js +1235 -1151
- package/dist/playhtml.umd.js +7 -7
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
ADDED
package/README.md
CHANGED
|
@@ -42,6 +42,12 @@ If you have dynamic elements that are hydrated after the initial load, you can c
|
|
|
42
42
|
</script>
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
+
To create your own custom element, refer to the [can-play](#can-play) section.
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
Check out the [full gallery of community examples](https://gallery.playhtml.fun/) for more inspiration on what you can do! And [submit your own](https://coda.io/form/playhtml-example_dnUR7xNE7wz) once you've made one.
|
|
50
|
+
|
|
45
51
|
## Capabilities
|
|
46
52
|
|
|
47
53
|
A full list can be found in `types.ts` under `TagType`.
|
package/dist/elements.d.ts
CHANGED
|
@@ -1,48 +1,65 @@
|
|
|
1
1
|
/// <reference lib="dom" />
|
|
2
2
|
import { TagType } from "./types";
|
|
3
3
|
type ModifierKey = "ctrlKey" | "altKey" | "shiftKey" | "metaKey";
|
|
4
|
-
export interface ElementInitializer<T = any, U = any> {
|
|
4
|
+
export interface ElementInitializer<T = any, U = any, V = any> {
|
|
5
5
|
defaultData: T | ((element: HTMLElement) => T);
|
|
6
6
|
defaultLocalData?: U | ((element: HTMLElement) => U);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
myDefaultAwareness?: V | ((element: HTMLElement) => V);
|
|
8
|
+
updateElement: (data: ElementEventHandlerData<T, U, V>) => void;
|
|
9
|
+
updateElementAwareness?: (data: ElementAwarenessEventHandlerData<T, U, V>) => void;
|
|
10
|
+
onDrag?: (e: MouseEvent | TouchEvent, eventData: ElementEventHandlerData<T, U, V>) => void;
|
|
11
|
+
onClick?: (e: MouseEvent, eventData: ElementEventHandlerData<T, U, V>) => void;
|
|
12
|
+
onDragStart?: (e: MouseEvent | TouchEvent, eventData: ElementEventHandlerData<T, U, V>) => void;
|
|
13
|
+
additionalSetup?: (eventData: ElementSetupData<T, U, V>) => void;
|
|
12
14
|
resetShortcut?: ModifierKey;
|
|
13
15
|
debounceMs?: number;
|
|
14
16
|
}
|
|
15
|
-
export interface ElementData<T = any, U = any> extends ElementInitializer<T> {
|
|
17
|
+
export interface ElementData<T = any, U = any, V = any> extends ElementInitializer<T> {
|
|
16
18
|
data?: T;
|
|
17
19
|
localData?: U;
|
|
20
|
+
awareness?: V;
|
|
18
21
|
element: HTMLElement;
|
|
19
22
|
onChange: (data: T) => void;
|
|
23
|
+
onAwarenessChange: (data: V) => void;
|
|
24
|
+
triggerAwarenessUpdate: () => void;
|
|
20
25
|
}
|
|
21
|
-
interface ElementEventHandlerData<T = any, U = any> {
|
|
26
|
+
interface ElementEventHandlerData<T = any, U = any, V = any> {
|
|
22
27
|
data: T;
|
|
23
28
|
localData: U;
|
|
29
|
+
awareness: V[];
|
|
24
30
|
element: HTMLElement;
|
|
25
31
|
setData: (data: T) => void;
|
|
26
32
|
setLocalData: (data: U) => void;
|
|
33
|
+
setLocalAwareness: (data: V) => void;
|
|
27
34
|
}
|
|
28
|
-
interface
|
|
35
|
+
interface ElementAwarenessEventHandlerData<T = any, U = any, V = any> extends ElementEventHandlerData<T, U, V> {
|
|
36
|
+
myAwareness?: V;
|
|
37
|
+
}
|
|
38
|
+
interface ElementSetupData<T = any, U = any, V = any> {
|
|
29
39
|
getData: () => T;
|
|
30
40
|
getLocalData: () => U;
|
|
41
|
+
getAwareness: () => V[];
|
|
31
42
|
getElement: () => HTMLElement;
|
|
32
43
|
setData: (data: T) => void;
|
|
33
44
|
setLocalData: (data: U) => void;
|
|
45
|
+
setLocalAwareness: (data: V) => void;
|
|
34
46
|
}
|
|
35
47
|
export declare const TagTypeToElement: Record<Exclude<TagType, "can-play">, ElementInitializer>;
|
|
36
|
-
export declare class ElementHandler<T = any, U = any> {
|
|
48
|
+
export declare class ElementHandler<T = any, U = any, V = any> {
|
|
37
49
|
defaultData: T;
|
|
38
50
|
localData: U;
|
|
51
|
+
awareness: V[];
|
|
52
|
+
selfAwareness?: V;
|
|
39
53
|
element: HTMLElement;
|
|
40
54
|
_data: T;
|
|
41
55
|
onChange: (data: T) => void;
|
|
56
|
+
onAwarenessChange: (data: V) => void;
|
|
42
57
|
debouncedOnChange: (data: T) => void;
|
|
43
58
|
resetShortcut?: ModifierKey;
|
|
44
|
-
updateElement: (data: ElementEventHandlerData<T, U>) => void;
|
|
45
|
-
|
|
59
|
+
updateElement: (data: ElementEventHandlerData<T, U, V>) => void;
|
|
60
|
+
updateElementAwareness?: (data: ElementAwarenessEventHandlerData<T, U, V>) => void;
|
|
61
|
+
triggerAwarenessUpdate?: () => void;
|
|
62
|
+
constructor({ element, onChange, onAwarenessChange, defaultData, defaultLocalData, myDefaultAwareness, data, awareness: awarenessData, updateElement, updateElementAwareness, onClick, onDrag, onDragStart, additionalSetup, resetShortcut, debounceMs, triggerAwarenessUpdate, }: ElementData<T>);
|
|
46
63
|
get data(): T;
|
|
47
64
|
setLocalData(localData: U): void;
|
|
48
65
|
/**
|
|
@@ -53,12 +70,15 @@ export declare class ElementHandler<T = any, U = any> {
|
|
|
53
70
|
* (e.g. calling `updateElement` and `onChange`)
|
|
54
71
|
*/
|
|
55
72
|
set __data(data: T);
|
|
56
|
-
|
|
73
|
+
set __awareness(data: V[]);
|
|
74
|
+
getEventHandlerData(): ElementEventHandlerData<T, U, V>;
|
|
75
|
+
getAwarenessEventHandlerData(): ElementAwarenessEventHandlerData<T, U, V>;
|
|
57
76
|
getSetupData(): ElementSetupData<T, U>;
|
|
58
77
|
/**
|
|
59
78
|
* Public-use setter for data that makes the change to all clients.
|
|
60
79
|
*/
|
|
61
80
|
setData(data: T): void;
|
|
81
|
+
setLocalAwareness(data: V): void;
|
|
62
82
|
setDataDebounced(data: T): void;
|
|
63
83
|
/**
|
|
64
84
|
* Resets the element to its default state.
|
package/dist/main.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as Y from "yjs";
|
|
|
3
3
|
import { ElementHandler } from "./elements";
|
|
4
4
|
export declare const globalData: Y.Map<Y.Map<any>>;
|
|
5
5
|
export declare function getElementFromId(id: string): HTMLElement | null;
|
|
6
|
-
export declare const elementHandlers: Map<string, Map<string, ElementHandler<any, any>>>;
|
|
6
|
+
export declare const elementHandlers: Map<string, Map<string, ElementHandler<any, any, any>>>;
|
|
7
7
|
/**
|
|
8
8
|
* Sets up any playhtml elements that are currently on the page.
|
|
9
9
|
* Can be repeatedly called to set up new elements without affecting existing ones.
|