Skip to content

Commit

Permalink
[major] use observavir for asyncProp
Browse files Browse the repository at this point in the history
destroy state props on cleanup
change stateSetupKey to a symbol
simplify updateState interface
rename AsyncPropValue to AsyncValue
  • Loading branch information
electrovir committed Mar 30, 2024
1 parent 7a01630 commit da4b3dd
Show file tree
Hide file tree
Showing 45 changed files with 355 additions and 1,228 deletions.
1 change: 1 addition & 0 deletions cspell.config.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ module.exports = {
],
words: [
...baseConfig.words,
'observavir',
],
};
105 changes: 94 additions & 11 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@electrovir/element-vir-mono-repo",
"version": "20.0.9",
"version": "21.0.0",
"private": true,
"license": "(MIT or CC0 1.0)",
"author": {
Expand All @@ -12,12 +12,12 @@
],
"scripts": {
"build:pages": "npm run --workspace @electrovir/scripts build",
"compile": "mono-vir for-each \"rm -rf dist && rm -f tsconfig.tsbuildinfo && tsc -b --pretty\"",
"compile": "mono-vir for-each \"tsc -b -f --pretty\"",
"docs": "mono-vir for-each-async npm run --if-present docs",
"format": "virmator format",
"publish": "virmator publish \"npm run compile && npm run --workspace @electrovir/scripts update:deps && npm i && npm run test:all\"",
"test": "mono-vir for-each-async npm test",
"test:all": "concurrently -c auto -m 90% --kill-others-on-fail --colors --names tests,spelling,format,docs,build \"npm run test:coverage\" \"npm run test:spelling\" \"npm run test:format\" \"npm run test:docs\" \"npm run build:pages\"",
"test:all": "npm run compile && concurrently -c auto -m 90% --kill-others-on-fail --colors --names tests,spelling,format,docs,build \"npm run test:coverage\" \"npm run test:spelling\" \"npm run test:format\" \"npm run test:docs\" \"npm run build:pages\"",
"test:coverage": "npm run test coverage",
"test:deps": "virmator deps check",
"test:docs": "mono-vir for-each-async npm run --if-present test:docs",
Expand Down
2 changes: 1 addition & 1 deletion packages/element-book-example/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@electrovir/element-book-example",
"version": "20.0.9",
"version": "21.0.0",
"private": true,
"license": "(MIT or CC0 1.0)",
"scripts": {
Expand Down
4 changes: 2 additions & 2 deletions packages/element-book/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "element-book",
"version": "20.0.9",
"version": "21.0.0",
"keywords": [
"book",
"design system",
Expand Down Expand Up @@ -48,7 +48,7 @@
"lit-css-vars": "^3.0.9",
"spa-router-vir": "^3.0.4",
"typed-event-target": "^3.2.1",
"vira": "20.0.9"
"vira": "21.0.0"
},
"devDependencies": {
"@augment-vir/browser-testing": "^26.2.1",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {assert} from '@open-wc/testing';
import {createSetterObservableProp} from 'element-vir';
import {Observable} from 'element-vir';
import {assertTypeOf} from 'run-time-assertions';
import {BookPageControlTypeEnum, definePageControl} from './book-page-controls';
import {defineBookPage, defineBookPageWithGlobals} from './define-book-page';
Expand Down Expand Up @@ -34,7 +34,7 @@ describe(defineBookPage.name, () => {
defineExample({
title: 'example with observable property state',
stateInitStatic: {
observable: createSetterObservableProp<number | undefined>(undefined),
observable: new Observable<number | undefined>({defaultValue: undefined}),
},
descriptionParagraphs: [
'yo',
Expand Down
2 changes: 1 addition & 1 deletion packages/element-vir-example/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@electrovir/element-vir-example",
"version": "20.0.9",
"version": "21.0.0",
"private": true,
"license": "(MIT or CC0 1.0)",
"author": {
Expand Down
4 changes: 2 additions & 2 deletions packages/element-vir-example/src/element.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
DeclarativeElement,
DeclarativeElementDefinition,
EventObjectEventDetailExtractor,
ObservableProp,
Observable,
TemplateResult,
TypedEvent,
css,
Expand Down Expand Up @@ -110,7 +110,7 @@ describe('test elements', () => {
width: number;
showChild: boolean;
derp: Record<string, string>;
myObservable: ObservableProp<number>;
myObservable: Observable<number>;
};

const stateInitStatic: ReadonlyArray<keyof AppElementProps> = getObjectTypedKeys(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
import {randomInteger} from '@augment-vir/common';
import {defineBookPage} from 'element-book';
import {
createSetterObservableProp,
defineElement,
defineElementNoInputs,
html,
listen,
} from 'element-vir';
import {Observable, defineElement, defineElementNoInputs, html, listen} from 'element-vir';

const myObservableProp = createSetterObservableProp(5);
const myObservable = new Observable({defaultValue: 5});

const VirObservablePropsTestParent = defineElementNoInputs({
const VirObservablesTestParent = defineElementNoInputs({
tagName: 'vir-observable-prop-input-test-parent',
stateInitStatic: {
renderCount: 0,
Expand All @@ -20,14 +14,14 @@ const VirObservablePropsTestParent = defineElementNoInputs({
return html`
<p>Parent render count (should not change): ${state.renderCount}</p>
<p>
<${VirObservablePropsTestChild.assign({
observableProp: myObservableProp,
})}></${VirObservablePropsTestChild}>
<${VirObservablesTestChild.assign({
observableProp: myObservable,
})}></${VirObservablesTestChild}>
</p>
<p>
<button
${listen('click', () => {
myObservableProp.setValue(randomInteger({min: 1, max: 100}));
myObservable.setValue(randomInteger({min: 1, max: 100}));
})}
>
trigger update from parent
Expand All @@ -36,7 +30,7 @@ const VirObservablePropsTestParent = defineElementNoInputs({
`;
},
});
const VirObservablePropsTestChild = defineElement<{observableProp: typeof myObservableProp}>()({
const VirObservablesTestChild = defineElement<{observableProp: typeof myObservable}>()({
tagName: 'vir-observable-prop-input-test-child',
stateInitStatic: {
renderCount: 0,
Expand Down Expand Up @@ -67,7 +61,7 @@ export const observablePropInputTestPage = defineBookPage({
title: 'test',
renderCallback() {
return html`
<${VirObservablePropsTestParent}></${VirObservablePropsTestParent}>
<${VirObservablesTestParent}></${VirObservablesTestParent}>
`;
},
});
Expand Down
Loading

0 comments on commit da4b3dd

Please sign in to comment.