aberdeen 0.2.1 → 0.2.3

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 (51) hide show
  1. package/dist/aberdeen.d.ts +573 -0
  2. package/dist/aberdeen.js +1756 -0
  3. package/dist/aberdeen.js.map +1 -0
  4. package/dist/prediction.d.ts +29 -0
  5. package/dist/prediction.js +110 -0
  6. package/dist/prediction.js.map +1 -0
  7. package/dist/route.d.ts +16 -0
  8. package/dist/route.js +119 -0
  9. package/dist/route.js.map +1 -0
  10. package/dist/transitions.d.ts +18 -0
  11. package/dist/transitions.js +67 -0
  12. package/dist/transitions.js.map +1 -0
  13. package/package.json +5 -2
  14. package/.github/workflows/deploy.yml +0 -43
  15. package/.vscode/launch.json +0 -23
  16. package/examples/input/index.html +0 -8
  17. package/examples/input/input.css +0 -56
  18. package/examples/input/input.js +0 -66
  19. package/examples/list/index.html +0 -7
  20. package/examples/list/list.js +0 -47
  21. package/examples/router/index.html +0 -8
  22. package/examples/router/page-home.js +0 -12
  23. package/examples/router/page-list.js +0 -35
  24. package/examples/router/page-settings.js +0 -6
  25. package/examples/router/router.js +0 -76
  26. package/examples/router/style.css +0 -88
  27. package/examples/tic-tac-toe/index.html +0 -8
  28. package/examples/tic-tac-toe/tic-tac-toe.css +0 -50
  29. package/examples/tic-tac-toe/tic-tac-toe.js +0 -90
  30. package/tests/_fakedom.js +0 -255
  31. package/tests/_init.js +0 -81
  32. package/tests/array.js +0 -109
  33. package/tests/binding.js +0 -106
  34. package/tests/browsers.js +0 -22
  35. package/tests/clean.js +0 -26
  36. package/tests/count.js +0 -105
  37. package/tests/create.js +0 -92
  38. package/tests/destroy.js +0 -270
  39. package/tests/dom.js +0 -219
  40. package/tests/errors.js +0 -114
  41. package/tests/immediate.js +0 -87
  42. package/tests/map.js +0 -76
  43. package/tests/objmap.js +0 -40
  44. package/tests/onEach.js +0 -392
  45. package/tests/prediction.js +0 -97
  46. package/tests/props.js +0 -49
  47. package/tests/schedule.js +0 -44
  48. package/tests/scope.js +0 -277
  49. package/tests/sort.js +0 -105
  50. package/tests/store.js +0 -254
  51. package/tsconfig.json +0 -67
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aberdeen.js","sourceRoot":"","sources":["../src/aberdeen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ type ObsCollection = any;
2
+ type Patch = Map<ObsCollection, Map<any, [any, any]>>;
3
+ /**
4
+ * Run the provided function, while treating all changes to Observables as predictions,
5
+ * meaning they will be reverted when changes come back from the server (or some other
6
+ * async source).
7
+ * @param predictFunc The function to run. It will generally modify some Observables
8
+ * to immediately reflect state (as closely as possible) that we expect the server
9
+ * to communicate back to us later on.
10
+ * @returns A `Patch` object. Don't modify it. This is only meant to be passed to `applyCanon`.
11
+ */
12
+ export declare function applyPrediction(predictFunc: () => void): Patch;
13
+ /**
14
+ * Temporarily revert all outstanding predictions, optionally run the provided function
15
+ * (which will generally make authoritative changes to the data based on a server response),
16
+ * and then attempt to reapply the predictions on top of the new canonical state, dropping
17
+ * any predictions that can no longer be applied cleanly (the data has been modified) or
18
+ * that were specified in `dropPredictions`.
19
+ *
20
+ * All of this is done such that redraws are only triggered if the overall effect is an
21
+ * actual change to an `Observable`.
22
+ * @param canonFunc The function to run without any predictions applied. This will typically
23
+ * make authoritative changes to the data, based on a server response.
24
+ * @param dropPredictions An optional list of predictions (as returned by `applyPrediction`)
25
+ * to undo. Typically, when a server response for a certain request is being handled,
26
+ * you'd want to drop the prediction that was done for that request.
27
+ */
28
+ export declare function applyCanon(canonFunc?: (() => void), dropPredictions?: Array<Patch>): void;
29
+ export {};
@@ -0,0 +1,110 @@
1
+ import { withEmitHandler } from 'aberdeen';
2
+ function recordPatch(func) {
3
+ const recordingPatch = new Map();
4
+ withEmitHandler(function (index, newData, oldData) {
5
+ addToPatch(recordingPatch, this, index, newData, oldData);
6
+ }, func);
7
+ return recordingPatch;
8
+ }
9
+ function addToPatch(patch, collection, index, newData, oldData) {
10
+ let collectionMap = patch.get(collection);
11
+ if (!collectionMap) {
12
+ collectionMap = new Map();
13
+ patch.set(collection, collectionMap);
14
+ }
15
+ let prev = collectionMap.get(index);
16
+ if (prev)
17
+ oldData = prev[1];
18
+ if (newData === oldData)
19
+ collectionMap.delete(index);
20
+ else
21
+ collectionMap.set(index, [newData, oldData]);
22
+ }
23
+ function emitPatch(patch) {
24
+ for (let [collection, collectionMap] of patch) {
25
+ for (let [index, [newData, oldData]] of collectionMap) {
26
+ collection.emitChange(index, newData, oldData);
27
+ }
28
+ }
29
+ }
30
+ function mergePatch(target, source, reverse = false) {
31
+ for (let [collection, collectionMap] of source) {
32
+ for (let [index, [newData, oldData]] of collectionMap) {
33
+ addToPatch(target, collection, index, reverse ? oldData : newData, reverse ? newData : oldData);
34
+ }
35
+ }
36
+ }
37
+ function silentlyApplyPatch(patch, force = false) {
38
+ for (let [collection, collectionMap] of patch) {
39
+ for (let [index, [newData, oldData]] of collectionMap) {
40
+ let actualData = collection.rawGet(index);
41
+ if (actualData !== oldData) {
42
+ if (force)
43
+ setTimeout(() => { throw new Error(`Applying invalid patch: data ${actualData} is unequal to expected old data ${oldData} for index ${index}`); }, 0);
44
+ else
45
+ return false;
46
+ }
47
+ }
48
+ }
49
+ for (let [collection, collectionMap] of patch) {
50
+ for (let [index, [newData, oldData]] of collectionMap) {
51
+ collection.rawSet(index, newData);
52
+ }
53
+ }
54
+ return true;
55
+ }
56
+ const appliedPredictions = [];
57
+ /**
58
+ * Run the provided function, while treating all changes to Observables as predictions,
59
+ * meaning they will be reverted when changes come back from the server (or some other
60
+ * async source).
61
+ * @param predictFunc The function to run. It will generally modify some Observables
62
+ * to immediately reflect state (as closely as possible) that we expect the server
63
+ * to communicate back to us later on.
64
+ * @returns A `Patch` object. Don't modify it. This is only meant to be passed to `applyCanon`.
65
+ */
66
+ export function applyPrediction(predictFunc) {
67
+ let patch = recordPatch(predictFunc);
68
+ appliedPredictions.push(patch);
69
+ emitPatch(patch);
70
+ return patch;
71
+ }
72
+ /**
73
+ * Temporarily revert all outstanding predictions, optionally run the provided function
74
+ * (which will generally make authoritative changes to the data based on a server response),
75
+ * and then attempt to reapply the predictions on top of the new canonical state, dropping
76
+ * any predictions that can no longer be applied cleanly (the data has been modified) or
77
+ * that were specified in `dropPredictions`.
78
+ *
79
+ * All of this is done such that redraws are only triggered if the overall effect is an
80
+ * actual change to an `Observable`.
81
+ * @param canonFunc The function to run without any predictions applied. This will typically
82
+ * make authoritative changes to the data, based on a server response.
83
+ * @param dropPredictions An optional list of predictions (as returned by `applyPrediction`)
84
+ * to undo. Typically, when a server response for a certain request is being handled,
85
+ * you'd want to drop the prediction that was done for that request.
86
+ */
87
+ export function applyCanon(canonFunc, dropPredictions = []) {
88
+ let resultPatch = new Map();
89
+ for (let prediction of appliedPredictions)
90
+ mergePatch(resultPatch, prediction, true);
91
+ silentlyApplyPatch(resultPatch, true);
92
+ for (let prediction of dropPredictions) {
93
+ let pos = appliedPredictions.indexOf(prediction);
94
+ if (pos >= 0)
95
+ appliedPredictions.splice(pos, 1);
96
+ }
97
+ if (canonFunc)
98
+ mergePatch(resultPatch, recordPatch(canonFunc));
99
+ for (let idx = 0; idx < appliedPredictions.length; idx++) {
100
+ if (silentlyApplyPatch(appliedPredictions[idx])) {
101
+ mergePatch(resultPatch, appliedPredictions[idx]);
102
+ }
103
+ else {
104
+ appliedPredictions.splice(idx, 1);
105
+ idx--;
106
+ }
107
+ }
108
+ emitPatch(resultPatch);
109
+ }
110
+ //# sourceMappingURL=prediction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prediction.js","sourceRoot":"","sources":["../src/prediction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Store } from 'aberdeen';
2
+ /**
3
+ * A `Store` object that holds the following keys:
4
+ * - `path`: The current path of the URL split into components. For instance `/` or `/users/123/feed`. Updates will be reflected in the URL and will *push* a new entry to the browser history.
5
+ * - `p`: Array containing the path segments. For instance `[]` or `['users', 123, 'feed']`. Updates will be reflected in the URL and will *push* a new entry to the browser history. Also, the values of `p` and `path` will be synced.
6
+ * - `search`: An observable object containing search parameters (a split up query string). For instance `{order: "date", title: "something"}` or just `{}`. Updates will be reflected in the URL, modifying the current history state.
7
+ * - `hash`: The document hash part of the URL. For instance `"#section-title"`. It can also be an empty string. Updates will be reflected in the URL, modifying the current history state.
8
+ * - `state`: The browser history *state* object for the current page. Creating or removing top-level keys will cause *pushing* a new entry to the browser history.
9
+ *
10
+ * The following key may also be written to `route` but will be immediately and silently removed:
11
+ * - `mode`: As described above, this library takes a best guess about whether pushing an item to the browser history makes sense or not. When `mode` is...
12
+ * - `"push"`: Force creation of a new browser history entry.
13
+ * - `"replace"`: Update the current history entry, even when updates to other keys would normally cause a *push*.
14
+ * - `"back"`: Unwind the history (like repeatedly pressing the *back* button) until we find a page that matches the given `path`, `search` and top-level `state` keys, and then *replace* that state by the full given state.
15
+ */
16
+ export declare const route: Store;
package/dist/route.js ADDED
@@ -0,0 +1,119 @@
1
+ import { Store, observe, immediateObserve, inhibitEffects } from 'aberdeen';
2
+ /**
3
+ * A `Store` object that holds the following keys:
4
+ * - `path`: The current path of the URL split into components. For instance `/` or `/users/123/feed`. Updates will be reflected in the URL and will *push* a new entry to the browser history.
5
+ * - `p`: Array containing the path segments. For instance `[]` or `['users', 123, 'feed']`. Updates will be reflected in the URL and will *push* a new entry to the browser history. Also, the values of `p` and `path` will be synced.
6
+ * - `search`: An observable object containing search parameters (a split up query string). For instance `{order: "date", title: "something"}` or just `{}`. Updates will be reflected in the URL, modifying the current history state.
7
+ * - `hash`: The document hash part of the URL. For instance `"#section-title"`. It can also be an empty string. Updates will be reflected in the URL, modifying the current history state.
8
+ * - `state`: The browser history *state* object for the current page. Creating or removing top-level keys will cause *pushing* a new entry to the browser history.
9
+ *
10
+ * The following key may also be written to `route` but will be immediately and silently removed:
11
+ * - `mode`: As described above, this library takes a best guess about whether pushing an item to the browser history makes sense or not. When `mode` is...
12
+ * - `"push"`: Force creation of a new browser history entry.
13
+ * - `"replace"`: Update the current history entry, even when updates to other keys would normally cause a *push*.
14
+ * - `"back"`: Unwind the history (like repeatedly pressing the *back* button) until we find a page that matches the given `path`, `search` and top-level `state` keys, and then *replace* that state by the full given state.
15
+ */
16
+ export const route = new Store();
17
+ // Contains url (path+search) and state for all history entries for this session, with the current
18
+ // entry on top. It is used for `mode: "back"`, to know how many entries to go back.
19
+ let stack = [];
20
+ // Keep track of the initial history length, so we'll always know how long our `stack` should be.
21
+ const initialHistoryLength = history.length;
22
+ // Keep a copy of the last known history state, so we can tell if the user changed one of its
23
+ // top-level keys, so we can decide between push/replace when `mode` is not set.
24
+ let prevHistoryState;
25
+ // Reflect changes to the browser URL (back/forward navigation) in the `route` and `stack`.
26
+ function handleLocationUpdate(event) {
27
+ const search = {};
28
+ for (let [k, v] of new URLSearchParams(location.search)) {
29
+ search[k] = v;
30
+ }
31
+ prevHistoryState = event ? (event.state || {}) : {};
32
+ stack.length = Math.max(1, history.length - initialHistoryLength + 1);
33
+ stack[stack.length - 1] = { url: location.pathname + location.search, state: prevHistoryState };
34
+ route.set({
35
+ path: location.pathname,
36
+ p: location.pathname.slice(1).split('/'),
37
+ search: search,
38
+ hash: location.hash,
39
+ state: prevHistoryState,
40
+ });
41
+ }
42
+ handleLocationUpdate();
43
+ window.addEventListener("popstate", handleLocationUpdate);
44
+ // These immediate-mode observers will rewrite the data in `route` to its canonical form.
45
+ // We want to to this immediately, so that user-code running immediately after a user-code
46
+ // initiated `set` will see the canonical form (instead of doing a rerender shortly after,
47
+ // or crashing due to non-canonical data).
48
+ immediateObserve(() => {
49
+ let path = '' + route.get('path');
50
+ if (!path.startsWith('/'))
51
+ path = '/' + path;
52
+ route.set('path', path);
53
+ route.set('p', path.slice(1).split('/'));
54
+ });
55
+ immediateObserve(() => {
56
+ const p = route.get('p');
57
+ if (!(p instanceof Array)) {
58
+ console.error(`aberdeen route: 'p' must be a non-empty array, not ${JSON.stringify(p)}`);
59
+ route.set('p', ['']); // This will cause a recursive call this observer.
60
+ }
61
+ else if (p.length == 0) {
62
+ route.set('p', ['']); // This will cause a recursive call this observer.
63
+ }
64
+ else {
65
+ route.set('path', '/' + p.join('/'));
66
+ }
67
+ });
68
+ immediateObserve(() => {
69
+ if (route.getType('search') !== 'object')
70
+ route.set('search', {});
71
+ });
72
+ immediateObserve(() => {
73
+ if (route.getType('state') !== 'object')
74
+ route.set('state', {});
75
+ });
76
+ immediateObserve(() => {
77
+ let hash = '' + (route.get('hash') || '');
78
+ if (hash && !hash.startsWith('#'))
79
+ hash = '#' + hash;
80
+ route.set('hash', hash);
81
+ });
82
+ // This deferred-mode observer will update the URL and history based on `route` changes.
83
+ observe(() => {
84
+ // Get and delete mode without triggering anything.
85
+ const mode = route.get('mode');
86
+ if (mode)
87
+ inhibitEffects(() => route.delete('mode'));
88
+ const state = route.get('state');
89
+ // Construct the URL.
90
+ const path = route.get('path');
91
+ const search = new URLSearchParams(route.get('search')).toString();
92
+ const url = (search ? path + '?' + search : path) + route.get('hash');
93
+ // Change browser state, according to `mode`.
94
+ if (mode === 'back') {
95
+ let goDelta = 0;
96
+ while (stack.length > 1) {
97
+ const item = stack[stack.length - 1];
98
+ if (item.url === url && JSON.stringify(Object.keys(state || {})) === JSON.stringify(Object.keys(item.state || {})))
99
+ break; // Found it!
100
+ goDelta--;
101
+ stack.pop();
102
+ }
103
+ if (goDelta)
104
+ history.go(goDelta);
105
+ // We'll replace the state async, to give the history.go the time to take affect first.
106
+ setTimeout(() => history.replaceState(state, '', url), 0);
107
+ stack[stack.length - 1] = { url, state };
108
+ }
109
+ else if (mode === 'push' || (!mode && (location.pathname !== path || JSON.stringify(Object.keys(state || {})) !== JSON.stringify(Object.keys(prevHistoryState || {}))))) {
110
+ history.pushState(state, '', url);
111
+ stack.push({ url, state });
112
+ }
113
+ else {
114
+ history.replaceState(state, '', url);
115
+ stack[stack.length - 1] = { url, state };
116
+ }
117
+ prevHistoryState = state;
118
+ });
119
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** Do a grow transition for the given element. This is meant to be used as a
2
+ * handler for the `create` property.
3
+ *
4
+ * @param el The element to transition.
5
+ *
6
+ * The transition doesn't look great for table elements, and may have problems
7
+ * for other specific cases as well.
8
+ */
9
+ export declare function grow(el: HTMLElement): void;
10
+ /** Do a shrink transition for the given element, and remove it from the DOM
11
+ * afterwards. This is meant to be used as a handler for the `destroy` property.
12
+ *
13
+ * @param el The element to transition and remove.
14
+ *
15
+ * The transition doesn't look great for table elements, and may have problems
16
+ * for other specific cases as well.
17
+ */
18
+ export declare function shrink(el: HTMLElement): void;
@@ -0,0 +1,67 @@
1
+ import { scheduleDomReader, scheduleDomWriter } from 'aberdeen';
2
+ const FADE_TIME = 400;
3
+ const GROW_SHRINK_TRANSITION = `margin ${FADE_TIME}ms ease-out, transform ${FADE_TIME}ms ease-out`;
4
+ function getGrowShrinkProps(el) {
5
+ const parentStyle = el.parentElement ? getComputedStyle(el.parentElement) : {};
6
+ const isHorizontal = parentStyle.display === 'flex' && (parentStyle.flexDirection || '').startsWith('row');
7
+ return isHorizontal ?
8
+ { marginLeft: `-${el.offsetWidth / 2}px`, marginRight: `-${el.offsetWidth / 2}px`, transform: "scaleX(0)" } :
9
+ { marginBottom: `-${el.offsetHeight / 2}px`, marginTop: `-${el.offsetHeight / 2}px`, transform: "scaleY(0)" };
10
+ }
11
+ /** Do a grow transition for the given element. This is meant to be used as a
12
+ * handler for the `create` property.
13
+ *
14
+ * @param el The element to transition.
15
+ *
16
+ * The transition doesn't look great for table elements, and may have problems
17
+ * for other specific cases as well.
18
+ */
19
+ export function grow(el) {
20
+ // This timeout is to await all other elements having been added to the Dom
21
+ scheduleDomReader(() => {
22
+ // Make the element size 0 using transforms and negative margins.
23
+ // This causes a browser layout, as we're querying el.offset<>.
24
+ let props = getGrowShrinkProps(el);
25
+ // The timeout is in order to batch all reads and then all writes when there
26
+ // are multiple simultaneous grow transitions.
27
+ scheduleDomWriter(() => {
28
+ Object.assign(el.style, props);
29
+ // This timeout is to combine multiple transitions into a single browser layout
30
+ scheduleDomReader(() => {
31
+ // Make sure the layouting has been performed, to cause transitions to trigger
32
+ el.offsetHeight;
33
+ scheduleDomWriter(() => {
34
+ // Do the transitions
35
+ el.style.transition = GROW_SHRINK_TRANSITION;
36
+ for (let prop in props)
37
+ el.style[prop] = "";
38
+ setTimeout(() => {
39
+ // Reset the element to a clean state
40
+ el.style.transition = "";
41
+ }, FADE_TIME);
42
+ });
43
+ });
44
+ });
45
+ });
46
+ }
47
+ /** Do a shrink transition for the given element, and remove it from the DOM
48
+ * afterwards. This is meant to be used as a handler for the `destroy` property.
49
+ *
50
+ * @param el The element to transition and remove.
51
+ *
52
+ * The transition doesn't look great for table elements, and may have problems
53
+ * for other specific cases as well.
54
+ */
55
+ export function shrink(el) {
56
+ scheduleDomReader(() => {
57
+ const props = getGrowShrinkProps(el);
58
+ // The timeout is in order to batch all reads and then all writes when there
59
+ // are multiple simultaneous shrink transitions.
60
+ scheduleDomWriter(() => {
61
+ el.style.transition = GROW_SHRINK_TRANSITION;
62
+ Object.assign(el.style, props);
63
+ setTimeout(() => el.remove(), FADE_TIME);
64
+ });
65
+ });
66
+ }
67
+ //# sourceMappingURL=transitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../src/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,iBAAiB,EAAC,MAAM,UAAU,CAAA;AAE7D,MAAM,SAAS,GAAG,GAAG,CAAA;AACrB,MAAM,sBAAsB,GAAG,UAAU,SAAS,0BAA0B,SAAS,aAAa,CAAA;AAElG,SAAS,kBAAkB,CAAC,EAAe;IAC1C,MAAM,WAAW,GAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACnF,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,IAAE,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACxG,OAAO,YAAY,CAAC,CAAC;QACpB,EAAC,UAAU,EAAE,IAAI,EAAE,CAAC,WAAW,GAAC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,GAAC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAC,CAAC,CAAC;QACvG,EAAC,YAAY,EAAE,IAAI,EAAE,CAAC,YAAY,GAAC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,YAAY,GAAC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAC,CAAA;AAEzG,CAAC;AAED;;;;;;;EAOE;AACF,MAAM,UAAU,IAAI,CAAC,EAAe;IACnC,2EAA2E;IAC3E,iBAAiB,CAAC,GAAG,EAAE;QACtB,iEAAiE;QACjE,+DAA+D;QAC/D,IAAI,KAAK,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAElC,4EAA4E;QAC5E,8CAA8C;QAC9C,iBAAiB,CAAC,GAAG,EAAE;YACtB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAE9B,+EAA+E;YAC/E,iBAAiB,CAAC,GAAG,EAAE;gBACtB,8EAA8E;gBAC9E,EAAE,CAAC,YAAY,CAAA;gBACf,iBAAiB,CAAC,GAAG,EAAE;oBACtB,qBAAqB;oBACrB,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,sBAAsB,CAAA;oBAC5C,KAAI,IAAI,IAAI,IAAI,KAAK;wBAAE,EAAE,CAAC,KAAK,CAAC,IAAW,CAAC,GAAG,EAAE,CAAA;oBACjD,UAAU,CAAC,GAAG,EAAE;wBACf,qCAAqC;wBACrC,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAA;oBACzB,CAAC,EAAE,SAAS,CAAC,CAAA;gBACd,CAAC,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;EAOE;AACF,MAAM,UAAU,MAAM,CAAC,EAAe;IACrC,iBAAiB,CAAC,GAAG,EAAE;QACtB,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAA;QACpC,4EAA4E;QAC5E,gDAAgD;QAChD,iBAAiB,CAAC,GAAG,EAAE;YACtB,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,sBAAsB,CAAA;YAC5C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAE9B,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aberdeen",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "A TypeScript/JavaScript library for quickly building performant declarative user interfaces without the use of a virtual DOM nor any transpilation.",
5
5
  "type": "module",
6
6
  "main": "dist-min/aberdeen.js",
@@ -45,5 +45,8 @@
45
45
  "terser": "^5.37.0",
46
46
  "typedoc": "^0.23.28",
47
47
  "typescript": "^4.9.5"
48
- }
48
+ },
49
+ "files": [
50
+ "dist", "dist-min", "src"
51
+ ]
49
52
  }
@@ -1,43 +0,0 @@
1
- name: Build, test and deploy
2
-
3
- on:
4
- push:
5
- branches:
6
- - master
7
-
8
- env:
9
- NODE_VERSION: 20.x
10
- ENTRY_FILE: 'src/aberdeen.ts'
11
-
12
- permissions:
13
- contents: read
14
- pages: write
15
- id-token: write
16
-
17
- jobs:
18
- deploy:
19
- environment:
20
- name: github-pages
21
- url: ${{ steps.deployment.outputs.page_url }}
22
- runs-on: ubuntu-latest
23
- steps:
24
- - uses: actions/checkout@v3
25
- - name: Setup node.js
26
- uses: actions/setup-node@v4
27
- with:
28
- node-version: '20.x'
29
- registry-url: 'https://registry.npmjs.org'
30
- - name: Install dependencies
31
- run: npm ci
32
- - name: Build docs
33
- run: npm run build && cp -rav examples dist docs/
34
- - name: Upload docs artifact
35
- uses: actions/upload-pages-artifact@v3
36
- with:
37
- path: './docs'
38
- - name: Deploy docs to GitHub Pages
39
- uses: actions/deploy-pages@v4
40
- - name: Test, build and deploy code to NPM
41
- run: npm publish
42
- env:
43
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -1,23 +0,0 @@
1
- {
2
- // Use IntelliSense to learn about possible attributes.
3
- // Hover to view descriptions of existing attributes.
4
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
- "version": "0.2.0",
6
- "configurations": [
7
- {
8
- "type": "node",
9
- "request": "launch",
10
- "name": "Run Mocha Tests",
11
- "skipFiles": [
12
- "<node_internals>/**"
13
- ],
14
- "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
15
- "args": [
16
- "--file", "tests/_init.js", "tests/[^_]*.js"
17
- ],
18
- "outFiles": [
19
- "${workspaceFolder}/**/*.js"
20
- ]
21
- }
22
- ]
23
- }
@@ -1,8 +0,0 @@
1
- <!doctype html>
2
- <head>
3
- <meta charset="utf-8">
4
- <link rel="stylesheet" href="input.css">
5
- </head>
6
- <body>
7
- <script type="module" src="input.js"></script>
8
- </body>
@@ -1,56 +0,0 @@
1
- * {
2
- box-sizing: border-box;
3
- }
4
-
5
- body {
6
- max-width: 400px;
7
- margin: 0 auto;
8
- }
9
-
10
- pre {
11
- overflow-x: scroll;
12
- }
13
-
14
- input, textarea, label, fieldset {
15
- display: block;
16
- margin: 1rem 0;
17
- width: 100%;
18
- }
19
-
20
- input, textarea {
21
- padding: 0.5rem;
22
- border: 1px solid #ccc;
23
- outline: none;
24
- }
25
-
26
- textarea {
27
- min-height: 8rem;
28
- }
29
-
30
- fieldset {
31
- padding: 0;
32
- border: none;
33
- }
34
-
35
- fieldset > * {
36
- margin: 0.25rem 0;
37
- }
38
-
39
- label > input {
40
- display: inline-block;
41
- margin: 0;
42
- }
43
-
44
- label > input:first-child {
45
- margin-right: 0.5rem;
46
- width: initial;
47
- }
48
-
49
- label > input[type=color]:first-child {
50
- width: 50px;
51
- }
52
-
53
-
54
- input[type=checkbox], input[type=radio], input[type=color] {
55
- padding: 0;
56
- }