fix(dees-element): Refactor project structure and update dependency versions. Internal modules (e.g. dees-element classes and directives) have been reorganized and deprecated paths removed, and package.json now includes an updated packageManager field.
This commit is contained in:
		| @@ -1,5 +1,13 @@ | |||||||
| # Changelog | # Changelog | ||||||
|  |  | ||||||
|  | ## 2025-04-18 - 2.0.40 - fix(dees-element) | ||||||
|  | Refactor project structure and update dependency versions. Internal modules (e.g. dees-element classes and directives) have been reorganized and deprecated paths removed, and package.json now includes an updated packageManager field. | ||||||
|  |  | ||||||
|  | - Updated versions for @git.zone/tsbuild, tsbundle, tstest, tapbundle, and lit. | ||||||
|  | - Changed dependency @design.estate/dees-domtools from ^2.0.61 to ^2.3.2. | ||||||
|  | - Reorganized internal file structure: moved code from dees-element.classes.* to classes.* and re-exported via index. | ||||||
|  | - Added packageManager field in package.json for pnpm configuration. | ||||||
|  |  | ||||||
| ## 2024-10-04 - 2.0.39 - fix(core) | ## 2024-10-04 - 2.0.39 - fix(core) | ||||||
| Update dependency version for @design.estate/dees-domtools | Update dependency version for @design.estate/dees-domtools | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								package.json
									
									
									
									
									
								
							| @@ -14,17 +14,17 @@ | |||||||
|     "buildDocs": "tsdoc" |     "buildDocs": "tsdoc" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@git.zone/tsbuild": "^2.1.84", |     "@git.zone/tsbuild": "^2.3.2", | ||||||
|     "@git.zone/tsbundle": "^2.0.15", |     "@git.zone/tsbundle": "^2.2.5", | ||||||
|     "@git.zone/tstest": "^1.0.90", |     "@git.zone/tstest": "^1.0.96", | ||||||
|     "@push.rocks/tapbundle": "^5.3.0", |     "@push.rocks/tapbundle": "^5.6.3", | ||||||
|     "@types/node": "^22.7.4" |     "@types/node": "^22.14.1" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@design.estate/dees-domtools": "^2.0.61", |     "@design.estate/dees-domtools": "^2.3.2", | ||||||
|     "@push.rocks/isounique": "^1.0.5", |     "@push.rocks/isounique": "^1.0.5", | ||||||
|     "@push.rocks/smartrx": "^3.0.7", |     "@push.rocks/smartrx": "^3.0.7", | ||||||
|     "lit": "^3.2.0" |     "lit": "^3.3.0" | ||||||
|   }, |   }, | ||||||
|   "browserslist": [ |   "browserslist": [ | ||||||
|     "last 1 chrome versions" |     "last 1 chrome versions" | ||||||
| @@ -52,5 +52,6 @@ | |||||||
|     "web components", |     "web components", | ||||||
|     "reactive programming", |     "reactive programming", | ||||||
|     "DOM manipulation" |     "DOM manipulation" | ||||||
|   ] |   ], | ||||||
|  |   "packageManager": "pnpm@10.7.0+sha512.6b865ad4b62a1d9842b61d674a393903b871d9244954f652b8842c2b553c72176b278f64c463e52d40fff8aba385c235c8c9ecf5cc7de4fd78b8bb6d49633ab6" | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										6406
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6406
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -3,6 +3,6 @@ | |||||||
|  */ |  */ | ||||||
| export const commitinfo = { | export const commitinfo = { | ||||||
|   name: '@design.estate/dees-element', |   name: '@design.estate/dees-element', | ||||||
|   version: '2.0.39', |   version: '2.0.40', | ||||||
|   description: 'A library for creating custom elements extending the lit element class with additional functionalities.' |   description: 'A library for creating custom elements extending the lit element class with additional functionalities.' | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| import { CSSResult, unsafeCSS } from 'lit'; | import { CSSResult, unsafeCSS } from 'lit'; | ||||||
| import * as plugins from './dees-element.plugins.js'; | import * as plugins from './plugins.js'; | ||||||
| import * as domtools from '@design.estate/dees-domtools'; | import * as domtools from '@design.estate/dees-domtools'; | ||||||
| 
 | 
 | ||||||
| export interface IBdVarTriplet { | export interface IBdVarTriplet { | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| import * as plugins from './dees-element.plugins.js'; | import * as plugins from './plugins.js'; | ||||||
| 
 | 
 | ||||||
| export class DeesElement extends plugins.lit.LitElement { | export class DeesElement extends plugins.lit.LitElement { | ||||||
|   // INSTANCE
 |   // INSTANCE
 | ||||||
| @@ -1,6 +1,9 @@ | |||||||
| import { type TemplateResult, noChange } from 'lit'; | import { type TemplateResult, noChange } from 'lit'; | ||||||
| import { AsyncDirective, directive } from 'lit/async-directive.js'; | import { AsyncDirective, directive } from 'lit/async-directive.js'; | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * Resolves a promise and sets the value of the directive | ||||||
|  |  */ | ||||||
| class ResolveDirective extends AsyncDirective { | class ResolveDirective extends AsyncDirective { | ||||||
|   promise: Promise<unknown> | undefined; |   promise: Promise<unknown> | undefined; | ||||||
|   hasPromiseSettled: boolean = false; |   hasPromiseSettled: boolean = false; | ||||||
| @@ -2,6 +2,9 @@ import { noChange } from 'lit'; | |||||||
| import { AsyncDirective, directive } from 'lit/async-directive.js'; | import { AsyncDirective, directive } from 'lit/async-directive.js'; | ||||||
| import { rxjs } from '@push.rocks/smartrx'; | import { rxjs } from '@push.rocks/smartrx'; | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * Subscribes to an observable | ||||||
|  |  */ | ||||||
| class SubscribeDirective extends AsyncDirective { | class SubscribeDirective extends AsyncDirective { | ||||||
|   observable: rxjs.Observable<unknown> | undefined; |   observable: rxjs.Observable<unknown> | undefined; | ||||||
|   sub: rxjs.Subscription | null = null; |   sub: rxjs.Subscription | null = null; | ||||||
							
								
								
									
										51
									
								
								ts/directives/classes.subscribewithtemplate.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								ts/directives/classes.subscribewithtemplate.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | import { type TemplateResult, noChange } from 'lit'; | ||||||
|  | import { AsyncDirective, directive } from 'lit/async-directive.js'; | ||||||
|  | import { rxjs } from '@push.rocks/smartrx'; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Subscribes to an observable and applies a template function to each emission. | ||||||
|  |  * @param observable - the source Observable | ||||||
|  |  * @param templateFn - function mapping each emitted value to a TemplateResult or other renderable content | ||||||
|  |  */ | ||||||
|  | class SubscribeWithTemplateDirective extends AsyncDirective { | ||||||
|  |   private observable?: rxjs.Observable<unknown>; | ||||||
|  |   private templateFn?: (value: unknown) => TemplateResult | unknown; | ||||||
|  |   private sub: rxjs.Subscription | null = null; | ||||||
|  |  | ||||||
|  |   render( | ||||||
|  |     observable: rxjs.Observable<unknown>, | ||||||
|  |     templateFn: (value: unknown) => TemplateResult | unknown | ||||||
|  |   ) { | ||||||
|  |     const changed = this.observable !== observable || this.templateFn !== templateFn; | ||||||
|  |     if (changed) { | ||||||
|  |       this.sub?.unsubscribe(); | ||||||
|  |       this.observable = observable; | ||||||
|  |       this.templateFn = templateFn; | ||||||
|  |       if (this.isConnected) { | ||||||
|  |         this.startSubscription(); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return noChange; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private startSubscription() { | ||||||
|  |     this.sub = this.observable!.subscribe((v: unknown) => { | ||||||
|  |       const out = this.templateFn!(v); | ||||||
|  |       this.setValue(out); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   disconnected() { | ||||||
|  |     this.sub?.unsubscribe(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   reconnected() { | ||||||
|  |     this.startSubscription(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Directive that renders templates for each emission of an Observable. | ||||||
|  |  * Usage: html`${subscribeWithTemplate(myObservable, v => html`<span>${v}</span>`)}` | ||||||
|  |  */ | ||||||
|  | export const subscribeWithTemplate = directive(SubscribeWithTemplateDirective); | ||||||
							
								
								
									
										13
									
								
								ts/directives/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								ts/directives/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | // better scoped exports | ||||||
|  | import { resolve } from './classes.resolvedirective.js'; | ||||||
|  | import { subscribe } from './classes.subscribedirective.js'; | ||||||
|  |  | ||||||
|  | export { | ||||||
|  |   resolve, | ||||||
|  |   subscribe, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export { subscribeWithTemplate } from './classes.subscribewithtemplate.js'; | ||||||
|  |  | ||||||
|  | export { until } from 'lit/directives/until.js'; | ||||||
|  | export { asyncAppend } from 'lit/directives/async-append.js'; | ||||||
							
								
								
									
										21
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								ts/index.ts
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| import { CssManager } from './dees-element.classes.cssmanager.js'; | import { CssManager } from './classes.cssmanager.js'; | ||||||
|  |  | ||||||
| // lit exports | // lit exports | ||||||
| export { html, type TemplateResult, css, unsafeCSS, render, type CSSResult } from 'lit'; | export { html, type TemplateResult, css, unsafeCSS, render, type CSSResult } from 'lit'; | ||||||
| @@ -8,31 +8,24 @@ export { customElement } from 'lit/decorators/custom-element.js'; | |||||||
|  |  | ||||||
| export { property, state, query, queryAll, queryAsync } from 'lit/decorators.js'; | export { property, state, query, queryAll, queryAsync } from 'lit/decorators.js'; | ||||||
|  |  | ||||||
| export { until } from 'lit/directives/until.js'; |  | ||||||
| export { asyncAppend } from 'lit/directives/async-append.js'; |  | ||||||
|  |  | ||||||
| // domtools exports | // domtools exports | ||||||
| import * as domtools from '@design.estate/dees-domtools'; | import * as domtools from '@design.estate/dees-domtools'; | ||||||
| export { domtools }; | export { domtools }; | ||||||
|  |  | ||||||
| // DeesElements exports | // DeesElements exports | ||||||
| export * from './dees-element.classes.dees-element.js'; | export * from './classes.dees-element.js'; | ||||||
| export * from './dees-element.classes.subscribedirective.js'; |  | ||||||
| export * from './dees-element.classes.resolvedirective.js'; | // directives exports | ||||||
|  | import * as directives from './directives/index.js'; | ||||||
|  |  | ||||||
|  | export { directives }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * a singleton instance of CssManager |  * a singleton instance of CssManager | ||||||
|  */ |  */ | ||||||
| export const cssManager = new CssManager(); | export const cssManager = new CssManager(); | ||||||
|  |  | ||||||
| // better scoped exports |  | ||||||
| import { resolve } from './dees-element.classes.resolvedirective.js'; |  | ||||||
| import { subscribe } from './dees-element.classes.subscribedirective.js'; |  | ||||||
|  |  | ||||||
| export const directives = { |  | ||||||
|   resolve, |  | ||||||
|   subscribe, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // type exports | // type exports | ||||||
| import type { rxjs } from '@push.rocks/smartrx'; | import type { rxjs } from '@push.rocks/smartrx'; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user