1
1
import { LitElement , css , unsafeCSS , html , PropertyValues } from 'lit' ;
2
2
import { customElement , property , state , query } from 'lit/decorators.js' ;
3
3
import { unsafeHTML } from 'lit/directives/unsafe-html.js' ;
4
- import { pipeline } from '@xenova/transformers' ;
4
+ import { EmbeddingModel } from '../../workers/embedding' ;
5
+
6
+ import type { EmbeddingWorkerMessage } from '../../workers/embedding' ;
5
7
6
8
import componentCSS from './prompt-panel.css?inline' ;
7
9
import EmbeddingWorkerInline from '../../workers/embedding?worker&inline' ;
@@ -17,12 +19,25 @@ export class MememoPromptPanel extends LitElement {
17
19
//==========================================================================||
18
20
embeddingWorker : Worker ;
19
21
22
+ embeddingWorkerRequestCount = 0 ;
23
+
24
+ get embeddingWorkerRequestID ( ) {
25
+ this . embeddingWorkerRequestCount ++ ;
26
+ return `prompt-panel-${ this . embeddingWorkerRequestCount } ` ;
27
+ }
28
+
20
29
//==========================================================================||
21
30
// Lifecycle Methods ||
22
31
//==========================================================================||
23
32
constructor ( ) {
24
33
super ( ) ;
25
34
this . embeddingWorker = new EmbeddingWorkerInline ( ) ;
35
+ this . embeddingWorker . addEventListener (
36
+ 'message' ,
37
+ ( e : MessageEvent < EmbeddingWorkerMessage > ) => {
38
+ this . embeddingWorkerMessageHandler ( e ) ;
39
+ }
40
+ ) ;
26
41
}
27
42
28
43
firstUpdated ( ) {
@@ -40,12 +55,43 @@ export class MememoPromptPanel extends LitElement {
40
55
//==========================================================================||
41
56
async initData ( ) { }
42
57
43
- async getEmbedding ( ) { }
58
+ getEmbedding ( ) {
59
+ const message : EmbeddingWorkerMessage = {
60
+ command : 'startExtractEmbedding' ,
61
+ payload : {
62
+ detail : '' ,
63
+ requestID : this . embeddingWorkerRequestID ,
64
+ model : EmbeddingModel . gteSmall ,
65
+ sentences : [ 'Hello, how are you' , 'yo' ]
66
+ }
67
+ } ;
68
+ this . embeddingWorker . postMessage ( message ) ;
69
+ }
44
70
45
71
//==========================================================================||
46
72
// Event Handlers ||
47
73
//==========================================================================||
48
74
75
+ embeddingWorkerMessageHandler ( e : MessageEvent < EmbeddingWorkerMessage > ) {
76
+ switch ( e . data . command ) {
77
+ case 'finishExtractEmbedding' : {
78
+ const embeddings = e . data . payload . embeddings ;
79
+ console . log ( embeddings ) ;
80
+ break ;
81
+ }
82
+
83
+ case 'error' : {
84
+ console . error ( 'Worker error: ' , e . data . payload . message ) ;
85
+ break ;
86
+ }
87
+
88
+ default : {
89
+ console . error ( 'Worker: unknown message' , e . data . command ) ;
90
+ break ;
91
+ }
92
+ }
93
+ }
94
+
49
95
//==========================================================================||
50
96
// Private Helpers ||
51
97
//==========================================================================||
0 commit comments