@lukso/up-connector 0.8.3 → 0.8.5-dev.2df3eae

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 (82) hide show
  1. package/dist/account-modal.cjs +3 -3
  2. package/dist/account-modal.js +2 -2
  3. package/dist/auto-setup.cjs +2 -3
  4. package/dist/auto-setup.cjs.map +1 -1
  5. package/dist/auto-setup.d.cts +1 -1
  6. package/dist/auto-setup.d.ts +1 -1
  7. package/dist/auto-setup.js +1 -2
  8. package/dist/backup-modal.cjs +3 -3
  9. package/dist/backup-modal.js +2 -2
  10. package/dist/chunk-3AIZSSEE.cjs +31 -0
  11. package/dist/chunk-3AIZSSEE.cjs.map +1 -0
  12. package/dist/{chunk-6W7FRKLF.js → chunk-43E6AVSP.js} +5 -4
  13. package/dist/chunk-43E6AVSP.js.map +1 -0
  14. package/dist/{chunk-4E7SPZWU.js → chunk-D7RI2CWB.js} +5 -4
  15. package/dist/chunk-D7RI2CWB.js.map +1 -0
  16. package/dist/{chunk-BLDF6KQ6.js → chunk-LXK6OUTM.js} +4 -7
  17. package/dist/chunk-LXK6OUTM.js.map +1 -0
  18. package/dist/{chunk-KSO3XK5R.cjs → chunk-PHRCQCEN.cjs} +5 -4
  19. package/dist/chunk-PHRCQCEN.cjs.map +1 -0
  20. package/dist/{chunk-2HIZGOPY.cjs → chunk-PPONAIJF.cjs} +5 -8
  21. package/dist/chunk-PPONAIJF.cjs.map +1 -0
  22. package/dist/{chunk-ODKUPDLA.cjs → chunk-UJDGQG6P.cjs} +5 -4
  23. package/dist/chunk-UJDGQG6P.cjs.map +1 -0
  24. package/dist/{chunk-2GXVRHI5.cjs → chunk-XCX7QWLC.cjs} +5 -4
  25. package/dist/chunk-XCX7QWLC.cjs.map +1 -0
  26. package/dist/chunk-XEZEZ62E.js +31 -0
  27. package/dist/chunk-XEZEZ62E.js.map +1 -0
  28. package/dist/{chunk-HYTGLJAK.js → chunk-XKSB6TPG.js} +5 -4
  29. package/dist/chunk-XKSB6TPG.js.map +1 -0
  30. package/dist/index.cjs +21 -11
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.cts +4 -4
  33. package/dist/index.d.ts +4 -4
  34. package/dist/index.js +29 -19
  35. package/dist/index.js.map +1 -1
  36. package/dist/restore-modal.cjs +3 -3
  37. package/dist/restore-modal.js +2 -2
  38. package/package.json +13 -18
  39. package/src/account-modal.ts +3 -2
  40. package/src/auto-setup.ts +3 -2
  41. package/src/backup-modal.ts +3 -2
  42. package/src/connector.ts +7 -4
  43. package/src/index.ts +19 -19
  44. package/src/restore-modal.ts +3 -2
  45. package/dist/chunk-2GXVRHI5.cjs.map +0 -1
  46. package/dist/chunk-2HIZGOPY.cjs.map +0 -1
  47. package/dist/chunk-4E7SPZWU.js.map +0 -1
  48. package/dist/chunk-6W7FRKLF.js.map +0 -1
  49. package/dist/chunk-AE2OVY26.js +0 -1186
  50. package/dist/chunk-AE2OVY26.js.map +0 -1
  51. package/dist/chunk-BLDF6KQ6.js.map +0 -1
  52. package/dist/chunk-GUAUME2K.js +0 -31
  53. package/dist/chunk-GUAUME2K.js.map +0 -1
  54. package/dist/chunk-HYTGLJAK.js.map +0 -1
  55. package/dist/chunk-IBS6LDIM.cjs +0 -31
  56. package/dist/chunk-IBS6LDIM.cjs.map +0 -1
  57. package/dist/chunk-KSO3XK5R.cjs.map +0 -1
  58. package/dist/chunk-ODKUPDLA.cjs.map +0 -1
  59. package/dist/chunk-R4L3CREG.cjs +0 -1186
  60. package/dist/chunk-R4L3CREG.cjs.map +0 -1
  61. package/dist/connect-modal/index.cjs +0 -22
  62. package/dist/connect-modal/index.cjs.map +0 -1
  63. package/dist/connect-modal/index.d.cts +0 -3
  64. package/dist/connect-modal/index.d.ts +0 -3
  65. package/dist/connect-modal/index.js +0 -22
  66. package/dist/connect-modal/index.js.map +0 -1
  67. package/dist/index-DZolGZOk.d.cts +0 -413
  68. package/dist/index-DZolGZOk.d.ts +0 -413
  69. package/src/connect-modal/components/connection-view.ts +0 -418
  70. package/src/connect-modal/components/eoa-connection-view.ts +0 -418
  71. package/src/connect-modal/components/qr-code-view.ts +0 -86
  72. package/src/connect-modal/connect-modal.base.ts +0 -18
  73. package/src/connect-modal/connect-modal.config.ts +0 -27
  74. package/src/connect-modal/connect-modal.templates.ts +0 -22
  75. package/src/connect-modal/connect-modal.ts +0 -227
  76. package/src/connect-modal/connect-modal.types.ts +0 -108
  77. package/src/connect-modal/images/up-cube-glass.png +0 -0
  78. package/src/connect-modal/index.ts +0 -25
  79. package/src/connect-modal/services/wagmi.ts +0 -377
  80. package/src/connect-modal/styles/styles.css +0 -1
  81. package/src/connect-modal/utils/chainParams.ts +0 -32
  82. package/src/connect-modal/utils/walletConnectDeepLinkUrl.ts +0 -43
@@ -1,418 +0,0 @@
1
- /**
2
- * Connection View - Lit Component
3
- *
4
- * Main connection view displaying primary Lukso connectors and option to show EOA connectors.
5
- */
6
-
7
- import {
8
- withDeviceService,
9
- withIntlService,
10
- withTheme,
11
- } from '@lukso/core/mixins'
12
- import { html, type TemplateResult } from 'lit'
13
- import { property } from 'lit/decorators.js'
14
-
15
- import { ConnectModalBase } from '../connect-modal.base'
16
- import {
17
- renderCloseButton,
18
- renderLogo,
19
- renderTitle,
20
- } from '../connect-modal.templates'
21
- import type { WalletConnector } from '../connect-modal.types'
22
- import '@lukso/web-components/dist/components/lukso-button'
23
- import '@lukso/web-components/dist/components/lukso-icon'
24
- import { type BrowserInfo, browserInfo } from '@lukso/core/utils'
25
- import { cn } from '@lukso/web-components/tools'
26
- import debug from 'debug'
27
- import { getWagmiSetup } from '../services/wagmi'
28
- import { walletConnectDeepLinkUrl } from '../utils/walletConnectDeepLinkUrl'
29
-
30
- const logInfo = debug('connect-modal:info')
31
-
32
- export class ConnectionView extends withTheme(
33
- withIntlService(withDeviceService(ConnectModalBase))
34
- ) {
35
- @property({ type: Boolean }) isConnecting = false
36
- @property({ type: String }) connectingRdns: string | undefined = undefined
37
- @property({ type: Array }) connectors: WalletConnector[] = []
38
-
39
- /**
40
- * Get WalletConnect connector
41
- */
42
- private get walletConnectConnector(): WalletConnector | undefined {
43
- return this.connectors.find((connector) => connector.type === 'mobile')
44
- }
45
-
46
- /**
47
- * Universal Profile browser extension connector
48
- */
49
- private get upExtensionConnector(): WalletConnector | undefined {
50
- return this.connectors.find((connector) => connector.type === 'extension')
51
- }
52
-
53
- /**
54
- * Passkey / Embedded wallet connector
55
- */
56
- private get embeddedWalletConnector(): WalletConnector | undefined {
57
- return this.connectors.find((connector) => connector.type === 'embedded')
58
- }
59
-
60
- /**
61
- * Get browser extension store info
62
- */
63
- private get extensionStore(): BrowserInfo {
64
- if (!this.device) {
65
- throw new Error('DeviceService not initialized')
66
- }
67
- const info = browserInfo(this.device)
68
- return info
69
- }
70
-
71
- /**
72
- * Check if browser supports extension installation
73
- */
74
- private get browserSupportExtension(): boolean {
75
- return this.extensionStore.storeLink !== ''
76
- }
77
-
78
- /**
79
- * Handle connect via embedded wallet
80
- */
81
- private handleConnectEmbedded = async (): Promise<void> => {
82
- const connector = this.embeddedWalletConnector
83
-
84
- try {
85
- logInfo('Connecting via connector:', connector)
86
- await connector?.connect()
87
-
88
- // Dispatch connect event
89
- this.dispatchEvent(
90
- new CustomEvent('on-connect', {
91
- detail: { connector },
92
- bubbles: true,
93
- composed: true,
94
- })
95
- )
96
- } catch (error) {
97
- // Dispatch error event
98
- this.dispatchEvent(
99
- new CustomEvent('on-error', {
100
- detail: { error },
101
- bubbles: true,
102
- composed: true,
103
- })
104
- )
105
- }
106
- }
107
-
108
- /**
109
- * Handle connect via UP Extension
110
- */
111
- private handleConnectExtension = async (): Promise<void> => {
112
- const connector = this.upExtensionConnector
113
-
114
- // If Lukso extension is not installed, open store link
115
- if (!window.lukso) {
116
- window.open(this.extensionStore.storeLink, '_blank')
117
- return
118
- }
119
-
120
- if (connector) {
121
- try {
122
- logInfo('Connecting via connector:', connector)
123
- this.isConnecting = true
124
- this.connectingRdns = connector.rdns
125
-
126
- const setup = getWagmiSetup()
127
-
128
- await connector.switchChain?.({ chainId: setup?.chainId })
129
- await connector.connect()
130
-
131
- // Dispatch connect event
132
- this.dispatchEvent(
133
- new CustomEvent('on-connect', {
134
- detail: { connector },
135
- bubbles: true,
136
- composed: true,
137
- })
138
- )
139
- } catch (error) {
140
- // Dispatch error event
141
- this.dispatchEvent(
142
- new CustomEvent('on-error', {
143
- detail: { error },
144
- bubbles: true,
145
- composed: true,
146
- })
147
- )
148
- } finally {
149
- this.isConnecting = false
150
- this.connectingRdns = undefined
151
- }
152
- }
153
- }
154
-
155
- /**
156
- * Handle connect via UP Mobile (WalletConnect)
157
- */
158
- private handleConnectMobile = async (): Promise<void> => {
159
- const connector = this.walletConnectConnector
160
-
161
- if (connector) {
162
- try {
163
- logInfo('Connecting via connector:', connector)
164
- this.isConnecting = true
165
- this.connectingRdns = connector.rdns
166
-
167
- // Start the connection - this initiates the WalletConnect flow
168
- // The promise will resolve when wallet approves or reject when user rejects
169
- const connectPromise = connector.connect()
170
-
171
- // Get the provider to listen for the display_uri event
172
- const provider = await connector.getProvider?.()
173
-
174
- // Listen for the display_uri event which is emitted after connect
175
- if (provider) {
176
- const handleDisplayUri = (displayUri: string) => {
177
- logInfo('WalletConnect original URI:', displayUri)
178
-
179
- const deepLink = walletConnectDeepLinkUrl(displayUri)
180
-
181
- logInfo('Mobile App Deep Link:', deepLink)
182
-
183
- if (this.device?.isMobile) {
184
- window.open(deepLink, '_blank')
185
- } else {
186
- this.handleShowQrCode(deepLink)
187
- }
188
-
189
- // Clean up listener
190
- provider.off('display_uri', handleDisplayUri)
191
- }
192
-
193
- provider.on('display_uri', handleDisplayUri)
194
- }
195
-
196
- // Wait for the connection to complete
197
- // This will throw if the user rejects the connection
198
- await connectPromise
199
-
200
- // Dispatch connect event only if connection succeeded
201
- this.dispatchEvent(
202
- new CustomEvent('on-connect', {
203
- detail: { connector },
204
- bubbles: true,
205
- composed: true,
206
- })
207
- )
208
- } catch (error) {
209
- // Dispatch error event
210
- this.dispatchEvent(
211
- new CustomEvent('on-error', {
212
- detail: { error },
213
- bubbles: true,
214
- composed: true,
215
- })
216
- )
217
-
218
- // Reset to connection view if on QR code view
219
- this.dispatchEvent(
220
- new CustomEvent('on-back', { bubbles: true, composed: true })
221
- )
222
- } finally {
223
- this.isConnecting = false
224
- this.connectingRdns = undefined
225
- }
226
- }
227
- }
228
-
229
- /**
230
- * Close modal
231
- */
232
- private handleClose(): void {
233
- this.dispatchEvent(
234
- new CustomEvent('on-close', { bubbles: true, composed: true })
235
- )
236
- }
237
-
238
- /**
239
- * Handle showing EOA connections
240
- */
241
- private handleShowEoaConnections(): void {
242
- this.dispatchEvent(
243
- new CustomEvent('on-show-eoa-connections-view', {
244
- bubbles: true,
245
- composed: true,
246
- })
247
- )
248
- }
249
-
250
- /**
251
- * Handle showing QR code
252
- */
253
- private handleShowQrCode(data: string): void {
254
- this.dispatchEvent(
255
- new CustomEvent('on-show-qr-code', {
256
- detail: { data },
257
- bubbles: true,
258
- composed: true,
259
- })
260
- )
261
- }
262
-
263
- /**
264
- * Render connector button
265
- *
266
- * @param iconName
267
- * @param label
268
- * @param onClick
269
- * @param isLoading
270
- * @param isDisabled
271
- */
272
- private renderConnectorButton(
273
- iconName: string,
274
- label: string,
275
- onClick: () => void,
276
- isLoading?: boolean,
277
- isDisabled?: boolean
278
- ): TemplateResult<1> {
279
- return html`
280
- <lukso-button
281
- variant="secondary"
282
- .theme=${this.theme}
283
- size=${this.device?.isMobile ? 'medium' : 'large'}
284
- is-full-width
285
- ?disabled=${isDisabled}
286
- ?is-loading=${isLoading}
287
- loading-text=${label}
288
- @click=${onClick}
289
- >
290
- <lukso-icon
291
- name=${iconName}
292
- size=${this.device?.isMobile ? 'small' : 'medium'}
293
- class="mr-2"
294
- color="${this.theme === 'dark' ? 'neutral-100' : 'neutral-20'}"
295
- secondary-color="${this.theme === 'dark' ? 'neutral-20' : 'neutral-100'}"
296
- ></lukso-icon>
297
- ${label}
298
- </lukso-button>
299
- `
300
- }
301
-
302
- private renderConnectors(): TemplateResult<1>[] {
303
- const templates: TemplateResult<1>[] = []
304
-
305
- // Passkey / Embedded wallet
306
- if (this.embeddedWalletConnector) {
307
- templates.push(
308
- this.renderConnectorButton(
309
- 'key-outline',
310
- this.formatMessage('connect_modal_connectors_passkey_wallet'),
311
- this.handleConnectEmbedded,
312
- false,
313
- this.isConnecting
314
- )
315
- )
316
- }
317
-
318
- // UP Extension
319
-
320
- templates.push(
321
- this.renderConnectorButton(
322
- this.extensionStore.icon,
323
- this.formatMessage('connect_modal_connectors_up_browser_extension'),
324
- this.handleConnectExtension,
325
- this.isConnecting &&
326
- this.connectingRdns === this.upExtensionConnector?.rdns,
327
- this.isConnecting ||
328
- this.device?.isMobile ||
329
- !this.browserSupportExtension
330
- )
331
- )
332
-
333
- // UP mobile (WalletConnect)
334
- if (this.walletConnectConnector) {
335
- templates.push(
336
- this.renderConnectorButton(
337
- 'phone-portrait-outline',
338
- this.formatMessage('connect_modal_connectors_up_mobile'),
339
- this.handleConnectMobile,
340
- this.isConnecting &&
341
- this.connectingRdns === this.walletConnectConnector.rdns,
342
- this.isConnecting
343
- )
344
- )
345
- }
346
-
347
- return templates
348
- }
349
-
350
- /**
351
- * Render divider with text
352
- */
353
- private renderDivider(): TemplateResult<1> {
354
- return html`
355
- <div class="relative w-full my-2">
356
- <div class="paragraph-inter-12-regular relative z-[1] bg-neutral-98 dark:bg-neutral-10 px-4 text-neutral-40 dark:text-neutral-95 inline-block">
357
- ${this.formatMessage('connect_modal_or')}
358
- </div>
359
- <div class="absolute top-[13px] left-0 right-0 h-px bg-neutral-80 dark:bg-neutral-80" />
360
- </div>
361
- <div class="paragraph-inter-16-regular py-4 text-neutral-20 dark:text-neutral-100">
362
- ${this.formatMessage('connect_modal_or_info')}
363
- </div>
364
- `
365
- }
366
-
367
- render(): TemplateResult<1> {
368
- return html`
369
- <div class="flex justify-end">
370
- <button
371
- @click=${this.handleClose}
372
- >
373
- ${renderCloseButton(this.theme)}
374
- </button>
375
- </div>
376
- <div class="flex flex-col items-center text-center">
377
- ${renderLogo()}
378
- ${renderTitle(this.formatMessage('connect_modal_title'))}
379
- <p class="mb-6 paragraph-inter-16-regular text-neutral-20 dark:text-neutral-100">
380
- ${this.formatMessage('connect_modal_description')}
381
- </p>
382
- <div class="${cn('flex w-full gap-2 mb-4', this.device?.isMobile ? 'flex-col-reverse' : 'flex-col')}">
383
- ${this.renderConnectors()}
384
- </div>
385
- ${this.renderDivider()}
386
- <lukso-button
387
- variant="secondary"
388
- size=${this.device?.isMobile ? 'medium' : 'large'}
389
- is-full-width
390
- .theme=${this.theme}
391
- ?disabled=${this.isConnecting}
392
- @click=${this.handleShowEoaConnections}
393
- >
394
- <lukso-icon
395
- name="wallet-outline"
396
- size=${this.device?.isMobile ? 'small' : 'medium'}
397
- class="mr-2"
398
- color="${this.theme === 'dark' ? 'neutral-100' : 'neutral-20'}"
399
- ></lukso-icon>
400
- ${this.formatMessage('connect_modal_other_connectors')}
401
- </lukso-button>
402
- </div>
403
- `
404
- }
405
- }
406
-
407
- // Register custom element
408
- customElements.define('connection-view', ConnectionView as any)
409
-
410
- declare global {
411
- interface Window {
412
- lukso?: any
413
- }
414
-
415
- interface HTMLElementTagNameMap {
416
- 'connection-view': ConnectionView
417
- }
418
- }