element-vir 20.0.0 → 20.0.1

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/README.md CHANGED
@@ -28,7 +28,7 @@ Make sure to install this as a normal dependency (not just a dev dependency) bec
28
28
 
29
29
  # Usage
30
30
 
31
- Most usage of this package is done through the `defineElement` or `defineElementNoInputs` functions. See the [`DeclarativeElementInit`](https://github.com/electrovir/element-vir/blob/main/src/declarative-element/declarative-element-init.ts) type for that function's full inputs. The inputs are also described below with examples.
31
+ Most usage of this package is done through the `defineElement` or `defineElementNoInputs` functions. See the [`DeclarativeElementInit`](https://github.com/electrovir/element-vir/blob/dev/packages/src/declarative-element/declarative-element-init.ts) type for that function's full inputs. The inputs are also described below with examples.
32
32
 
33
33
  All of [`lit`](https://lit.dev)'s syntax and functionality is available for use if you wish.
34
34
 
@@ -1,4 +1,5 @@
1
- import { RequiredAndNotNullBy } from '@augment-vir/common';
1
+ import { AnyFunction, RequiredAndNotNullBy } from '@augment-vir/common';
2
+ import { IsAny, IsEmptyObject } from 'type-fest';
2
3
  import { CSSResult, LitElement } from '../lit-exports/all-lit-exports';
3
4
  import { MinimalDefinitionWithInputs } from '../template-transforms/minimal-element-definition';
4
5
  import { CustomElementTagName } from './custom-tag-name';
@@ -43,11 +44,13 @@ export declare abstract class DeclarativeElement<TagName extends CustomElementTa
43
44
  abstract readonly instanceInputs: Inputs;
44
45
  abstract assignInputs(inputs: {} extends Required<Inputs> ? never : Partial<Inputs>): void;
45
46
  abstract _haveInputsBeenSet: boolean;
47
+ /** The element definition for this element instance. */
46
48
  abstract readonly definition: DeclarativeElementDefinition<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>;
47
49
  }
48
- export interface StaticDeclarativeElementProperties<TagName extends CustomElementTagName, Inputs extends PropertyInitMapBase, StateInit extends PropertyInitMapBase, EventsInit extends EventsInitMap, HostClassKeys extends BaseCssPropertyName<TagName>, CssVarKeys extends BaseCssPropertyName<TagName>, SlotNames extends ReadonlyArray<string>> {
50
+ export type AssignMethod<Inputs extends PropertyInitMapBase> = IsAny<Inputs> extends true ? AnyFunction : IsEmptyObject<Required<Inputs>> extends true ? (inputsObject: never) => never : (inputsObject: IsEmptyObject<Required<Inputs>> extends true ? never : Inputs) => MinimalDefinitionWithInputs;
51
+ export type StaticDeclarativeElementProperties<TagName extends CustomElementTagName, Inputs extends PropertyInitMapBase, StateInit extends PropertyInitMapBase, EventsInit extends EventsInitMap, HostClassKeys extends BaseCssPropertyName<TagName>, CssVarKeys extends BaseCssPropertyName<TagName>, SlotNames extends ReadonlyArray<string>> = {
49
52
  /** Assign inputs to an element directly on its interpolated tag. */
50
- readonly assign: (inputsObject: {} extends Required<Inputs> ? never : Inputs) => MinimalDefinitionWithInputs;
53
+ readonly assign: AssignMethod<Inputs>;
51
54
  assignedInputs: Inputs | undefined;
52
55
  /** Pass through the render callback for direct unit testability */
53
56
  readonly renderCallback: RenderCallback<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>;
@@ -64,4 +67,4 @@ export interface StaticDeclarativeElementProperties<TagName extends CustomElemen
64
67
  readonly cssVars: CssVars<TagName, CssVarKeys>;
65
68
  readonly tagName: string;
66
69
  readonly styles: CSSResult;
67
- }
70
+ };
@@ -5,4 +5,4 @@ import { BaseCssPropertyName } from './properties/css-properties';
5
5
  import { EventsInitMap } from './properties/element-events';
6
6
  import { PropertyInitMapBase } from './properties/element-properties';
7
7
  export type VerifiedElementNoInputsInit<TagName extends CustomElementTagName, Inputs extends PropertyInitMapBase, StateInit extends PropertyInitMapBase, EventsInit extends EventsInitMap, HostClassKeys extends BaseCssPropertyName<TagName>, CssVarKeys extends BaseCssPropertyName<TagName>, SlotNames extends ReadonlyArray<string>> = Extract<keyof StateInit, keyof HTMLElement> extends never ? DeclarativeElementInit<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames> : 'ERROR: Cannot define an element state property that clashes with native HTMLElement properties.';
8
- export declare function defineElementNoInputs<const TagName extends CustomElementTagName = '-', Inputs extends PropertyInitMapBase = {}, StateInit extends PropertyInitMapBase = {}, EventsInit extends EventsInitMap = {}, const HostClassKeys extends BaseCssPropertyName<TagName> = `${TagName}-`, const CssVarKeys extends BaseCssPropertyName<TagName> = `${TagName}-`, const SlotNames extends ReadonlyArray<string> = []>(initInput: VerifiedElementNoInputsInit<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>): DeclarativeElementDefinition<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>;
8
+ export declare function defineElementNoInputs<const TagName extends CustomElementTagName = '-', Inputs extends PropertyInitMapBase = {}, StateInit extends PropertyInitMapBase = {}, EventsInit extends EventsInitMap = {}, const HostClassKeys extends BaseCssPropertyName<TagName> = `${TagName}-`, const CssVarKeys extends BaseCssPropertyName<TagName> = `${TagName}-`, const SlotNames extends ReadonlyArray<string> = Readonly<[]>>(initInput: VerifiedElementNoInputsInit<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>): DeclarativeElementDefinition<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>;
@@ -5,4 +5,4 @@ import { BaseCssPropertyName } from './properties/css-properties';
5
5
  import { EventsInitMap } from './properties/element-events';
6
6
  import { PropertyInitMapBase } from './properties/element-properties';
7
7
  export type VerifiedElementInit<TagName extends CustomElementTagName, Inputs extends PropertyInitMapBase, StateInit extends PropertyInitMapBase, EventsInit extends EventsInitMap, HostClassKeys extends BaseCssPropertyName<TagName>, CssVarKeys extends BaseCssPropertyName<TagName>, SlotNames extends ReadonlyArray<string>> = Extract<keyof StateInit, keyof Inputs> extends never ? Extract<keyof Inputs, keyof HTMLElement> extends never ? VerifiedElementNoInputsInit<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames> : 'ERROR: Cannot define an element input property that clashes with native HTMLElement properties.' : "ERROR: Cannot define an element state property that clashes with the element's input properties.";
8
- export declare function defineElement<Inputs extends PropertyInitMapBase = {}>(): <TagName extends `${string}-${string}`, StateInit extends PropertyInitMapBase = {}, EventsInit extends EventsInitMap = {}, HostClassKeys extends `${TagName}-${string}` = `${TagName}-`, CssVarKeys extends `${TagName}-${string}` = `${TagName}-`, SlotNames extends readonly string[] = []>(initInput: VerifiedElementInit<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>) => DeclarativeElementDefinition<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>;
8
+ export declare function defineElement<Inputs extends PropertyInitMapBase = {}>(): <TagName extends `${string}-${string}`, StateInit extends PropertyInitMapBase = {}, EventsInit extends EventsInitMap = {}, HostClassKeys extends `${TagName}-${string}` = `${TagName}-`, CssVarKeys extends `${TagName}-${string}` = `${TagName}-`, SlotNames extends readonly string[] = readonly []>(initInput: VerifiedElementInit<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>) => DeclarativeElementDefinition<TagName, Inputs, StateInit, EventsInit, HostClassKeys, CssVarKeys, SlotNames>;
@@ -12,4 +12,4 @@ export type DirectiveOutput = EmptyObject;
12
12
  * This is used in order to block accidental object interpolations into HTML, which get stringified
13
13
  * into `'[object Object]'`, which nobody ever wants that.
14
14
  */
15
- export type HtmlInterpolation = null | undefined | string | number | boolean | bigint | CSSResult | TemplateResult | MinimalDefinitionWithInputs | DeclarativeElementDefinition | DirectiveOutput | AnyFunction | HtmlInterpolation[];
15
+ export type HtmlInterpolation = null | undefined | string | number | boolean | bigint | CSSResult | Element | TemplateResult | MinimalDefinitionWithInputs | DeclarativeElementDefinition | DirectiveOutput | AnyFunction | HtmlInterpolation[];
package/package.json CHANGED
@@ -1,15 +1,18 @@
1
1
  {
2
2
  "name": "element-vir",
3
- "version": "20.0.0",
3
+ "version": "20.0.1",
4
4
  "keywords": [
5
5
  "custom",
6
6
  "web",
7
7
  "components",
8
8
  "elements",
9
9
  "declarative",
10
- "lit"
10
+ "reactive",
11
+ "lit",
12
+ "lit-html",
13
+ "html"
11
14
  ],
12
- "homepage": "https://github.com/electrovir/element-vir",
15
+ "homepage": "https://electrovir.github.io/element-vir/element-vir",
13
16
  "bugs": {
14
17
  "url": "https://github.com/electrovir/element-vir/issues"
15
18
  },
@@ -25,19 +28,14 @@
25
28
  "main": "dist/index.js",
26
29
  "types": "dist/index.d.ts",
27
30
  "scripts": {
28
- "compile": "virmator compile",
31
+ "build:pages": "npm run docs",
32
+ "compile": "rm -rf dist && tsc -b -f --pretty",
29
33
  "docs": "virmator docs",
30
- "format": "virmator format",
31
- "publish": "virmator publish \"npm run compile && npm run test:all\"",
32
- "start": "npm run compile && npm install && virmator frontend",
34
+ "start": "cd ../element-vir-example && npm start",
33
35
  "test": "virmator test-web",
34
- "test:all": "concurrently -c auto --kill-others-on-fail --colors --names types,tests,spelling,format,docs \"npm run test:types\" \"npm run test:coverage\" \"npm run test:spelling\" \"npm run test:format\" \"npm run test:docs\"",
35
- "test:coverage": "virmator test-web coverage",
36
- "test:deps": "virmator deps check",
36
+ "test:coverage": "npm run test coverage",
37
37
  "test:docs": "virmator docs check",
38
- "test:format": "virmator format check",
39
- "test:spelling": "virmator spellcheck",
40
- "test:types": "tsc --noEmit"
38
+ "test:types": "npm run compile"
41
39
  },
42
40
  "dependencies": {
43
41
  "@augment-vir/common": "^22.4.0",
@@ -60,37 +58,12 @@
60
58
  "@web/test-runner-commands": "^0.9.0",
61
59
  "@web/test-runner-playwright": "^0.11.0",
62
60
  "@web/test-runner-visual-regression": "^0.9.0",
63
- "ansi-colors": "^4.1.3",
64
- "concurrently": "^8.2.2",
65
- "cspell": "^8.3.2",
66
- "dependency-cruiser": "^16.0.0",
67
- "element-book": "^10.1.10",
68
- "element-vir": "file:./",
69
- "esbuild": "^0.19.11",
70
61
  "istanbul-smart-text-reporter": "^1.1.3",
71
62
  "markdown-code-example-inserter": "^0.3.3",
72
- "mocha-spec-reporter-with-file-names": "^0.0.3",
73
- "npm-check-updates": "~16.12.3",
74
- "nyc": "^15.1.0",
75
- "prettier": "^3.2.1",
76
- "prettier-plugin-interpolated-html-tags": "^1.0.3",
77
- "prettier-plugin-jsdoc": "^1.3.0",
78
- "prettier-plugin-multiline-arrays": "^3.0.1",
79
- "prettier-plugin-organize-imports": "^3.2.4",
80
- "prettier-plugin-packagejson": "^2.4.9",
81
- "prettier-plugin-sort-json": "^3.1.0",
82
- "prettier-plugin-toml": "^2.0.1",
83
- "ts-node": "^10.9.2",
84
63
  "type-fest": "^4.9.0",
85
64
  "typedoc": "^0.25.7",
86
65
  "typescript": "^5.3.3",
87
- "vira": "^2.5.5",
88
- "virmator": "^11.2.0",
89
66
  "vite": "^4.5.0",
90
67
  "vite-tsconfig-paths": "^4.2.3"
91
- },
92
- "overrides": {
93
- "lit": "^3.1.1",
94
- "element-vir": "*"
95
68
  }
96
69
  }
package/cspell.config.cjs DELETED
@@ -1,11 +0,0 @@
1
- const {baseConfig} = require('virmator/base-configs/base-cspell.js');
2
-
3
- module.exports = {
4
- ...baseConfig,
5
- ignorePaths: [
6
- ...baseConfig.ignorePaths,
7
- ],
8
- words: [
9
- ...baseConfig.words,
10
- ],
11
- };