@juo/blocks 1.19.0 → 1.20.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/dist/core.js CHANGED
@@ -233,6 +233,45 @@ function uuid() {
233
233
  (c2) => (c2 ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c2 / 4).toString(16)
234
234
  );
235
235
  }
236
+ var AuthenticationErrorReason = /* @__PURE__ */ ((AuthenticationErrorReason2) => {
237
+ AuthenticationErrorReason2["Expired"] = "expired";
238
+ AuthenticationErrorReason2["IncorrectCode"] = "wrong-code";
239
+ AuthenticationErrorReason2["TooManyTries"] = "too-many-tries";
240
+ AuthenticationErrorReason2["NoEmail"] = "no-email";
241
+ AuthenticationErrorReason2["Unknown"] = "unknown";
242
+ AuthenticationErrorReason2["Missing"] = "missing";
243
+ return AuthenticationErrorReason2;
244
+ })(AuthenticationErrorReason || {});
245
+ class AuthenticationError extends Error {
246
+ constructor(reason, data) {
247
+ super("Authentication error");
248
+ __publicField(this, "reason");
249
+ __publicField(this, "data");
250
+ this.reason = reason;
251
+ this.data = data ?? {};
252
+ }
253
+ }
254
+ const OTP_ERROR_REASONS = {
255
+ INCORRECT_CODE: AuthenticationErrorReason.IncorrectCode,
256
+ TOO_MANY_TRIES: AuthenticationErrorReason.TooManyTries,
257
+ EXPIRED: AuthenticationErrorReason.Expired
258
+ };
259
+ function authenticationErrorFromBody(data) {
260
+ if (data == null || typeof data !== "object") {
261
+ return void 0;
262
+ }
263
+ const { code, connection } = data;
264
+ if (typeof code !== "string") {
265
+ return void 0;
266
+ }
267
+ if (code === "AUTH_ERROR") {
268
+ return new AuthenticationError(AuthenticationErrorReason.NoEmail, {
269
+ connection
270
+ });
271
+ }
272
+ const reason = OTP_ERROR_REASONS[code];
273
+ return reason == null ? void 0 : new AuthenticationError(reason);
274
+ }
236
275
  function createMockLoginAdapter(opts = {}) {
237
276
  const appUrl = opts.appUrl ?? "https://admin.juo.io";
238
277
  return {
@@ -272,19 +311,9 @@ function createApiLoginAdapter(fetcher, opts) {
272
311
  body: JSON.stringify(body)
273
312
  });
274
313
  if (res.status === 403) {
275
- const data = await res.json();
276
- if ("error_description" in data) {
277
- if (data.error_description === "Wrong email or verification code.") {
278
- throw new AuthenticationError(AuthenticationErrorReason.IncorrectCode);
279
- } else if (data.error_description === "You've reached the maximum number of attempts. Please try to login again.") {
280
- throw new AuthenticationError(AuthenticationErrorReason.TooManyTries);
281
- } else if (data.error_description === "The verification code has expired. Please try to login again.") {
282
- throw new AuthenticationError(AuthenticationErrorReason.Expired);
283
- }
284
- } else if ("code" in data && data.code === "AUTH_ERROR") {
285
- throw new AuthenticationError(AuthenticationErrorReason.NoEmail, {
286
- connection: data.connection
287
- });
314
+ const error = authenticationErrorFromBody(await res.json());
315
+ if (error != null) {
316
+ throw error;
288
317
  }
289
318
  }
290
319
  if (!res.ok) {
@@ -317,19 +346,9 @@ function createApiLoginAdapter(fetcher, opts) {
317
346
  body: JSON.stringify(params)
318
347
  });
319
348
  if (res.status === 403) {
320
- const data = await res.json();
321
- if ("error_description" in data) {
322
- if (data.error_description === "Wrong email or verification code.") {
323
- throw new AuthenticationError(AuthenticationErrorReason.IncorrectCode);
324
- } else if (data.error_description === "You've reached the maximum number of attempts. Please try to login again.") {
325
- throw new AuthenticationError(AuthenticationErrorReason.TooManyTries);
326
- } else if (data.error_description === "The verification code has expired. Please try to login again.") {
327
- throw new AuthenticationError(AuthenticationErrorReason.Expired);
328
- }
329
- } else if ("code" in data && data.code === "AUTH_ERROR") {
330
- throw new AuthenticationError(AuthenticationErrorReason.NoEmail, {
331
- connection: data.connection
332
- });
349
+ const error = authenticationErrorFromBody(await res.json());
350
+ if (error != null) {
351
+ throw error;
333
352
  }
334
353
  }
335
354
  if (res.status === 401) {
@@ -356,24 +375,6 @@ function createApiLoginAdapter(fetcher, opts) {
356
375
  };
357
376
  }
358
377
  const __vite_import_meta_env__ = {};
359
- var AuthenticationErrorReason = /* @__PURE__ */ ((AuthenticationErrorReason2) => {
360
- AuthenticationErrorReason2["Expired"] = "expired";
361
- AuthenticationErrorReason2["IncorrectCode"] = "wrong-code";
362
- AuthenticationErrorReason2["TooManyTries"] = "too-many-tries";
363
- AuthenticationErrorReason2["NoEmail"] = "no-email";
364
- AuthenticationErrorReason2["Unknown"] = "unknown";
365
- AuthenticationErrorReason2["Missing"] = "missing";
366
- return AuthenticationErrorReason2;
367
- })(AuthenticationErrorReason || {});
368
- class AuthenticationError extends Error {
369
- constructor(reason, data) {
370
- super("Authentication error");
371
- __publicField(this, "reason");
372
- __publicField(this, "data");
373
- this.reason = reason;
374
- this.data = data ?? {};
375
- }
376
- }
377
378
  const STORAGE_DELEGATED_TOKEN = "delegated-token";
378
379
  const STORAGE_REFRESH_TOKEN_KEY = "refresh-token";
379
380
  const STORAGE_STATE_KEY = "state";
@@ -579,10 +580,7 @@ function createLoginService(init) {
579
580
  return {
580
581
  _tag: "Failure",
581
582
  error: formatError(
582
- new AuthenticationError(
583
- "missing"
584
- /* Missing */
585
- )
583
+ new AuthenticationError(AuthenticationErrorReason.Missing)
586
584
  )
587
585
  };
588
586
  }
@@ -3727,8 +3725,7 @@ const MOCK_FLOWS = {
3727
3725
  actionType: "offer_pause",
3728
3726
  actionConfig: {
3729
3727
  headline: "Need a break?",
3730
- description: "Pause your subscription for up to 30 days instead of cancelling.",
3731
- pauseDurationDays: 30
3728
+ description: "Pause your subscription for up to 30 days instead of cancelling."
3732
3729
  },
3733
3730
  availableResponses: [
3734
3731
  { type: "accepted", label: "Pause subscription" },
@@ -4173,6 +4170,7 @@ export {
4173
4170
  T as TranslationContext,
4174
4171
  WorkflowServiceContext,
4175
4172
  A as attachEmptyTracking,
4173
+ authenticationErrorFromBody,
4176
4174
  d2 as backfillInstanceDefaults,
4177
4175
  b as buildGridLayout,
4178
4176
  F as buildLayoutCss,
@@ -1 +1 @@
1
- {"version":3,"file":"MockWorkflowApiAdapter.d.ts","sourceRoot":"","sources":["../../src/flows/MockWorkflowApiAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAKnB,MAAM,mBAAmB,CAAC;AA4L3B;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,IAAI,kBAAkB,CA0GjE"}
1
+ {"version":3,"file":"MockWorkflowApiAdapter.d.ts","sourceRoot":"","sources":["../../src/flows/MockWorkflowApiAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAKnB,MAAM,mBAAmB,CAAC;AA2L3B;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,IAAI,kBAAkB,CA0GjE"}
@@ -1,4 +1,5 @@
1
1
  import { ApiFetcher, Result } from '../../utils';
2
+ import { AuthenticationError } from './errors';
2
3
  export type AuthTokens = {
3
4
  access_token: string;
4
5
  refresh_token: string;
@@ -23,6 +24,15 @@ export interface LoginAdapter {
23
24
  shop: string;
24
25
  }): string;
25
26
  }
27
+ /**
28
+ * Turn a `403` body from the auth endpoints into an `AuthenticationError`, or
29
+ * `undefined` when the body says nothing we recognise.
30
+ *
31
+ * Every failure is identified by the backend's `code`. Nothing here reads the
32
+ * auth provider's `error_description` prose: that sentence is a vendor detail,
33
+ * and translating it to a code is the backend's job.
34
+ */
35
+ export declare function authenticationErrorFromBody(data: unknown): AuthenticationError | undefined;
26
36
  export declare function createMockLoginAdapter(opts?: {
27
37
  appUrl?: string;
28
38
  }): LoginAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/services/login/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,MAAM,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1B,YAAY,CACV,MAAM,EACF;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAC/B;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE/B,eAAe,CAAC,MAAM,EAAE;QACtB,UAAU,EAAE,UAAU,GAAG,eAAe,CAAC;QACzC,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,MAAM,CAAC;CACZ;AAED,wBAAgB,sBAAsB,CACpC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,YAAY,CAwBd;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C,YAAY,CAoId"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/services/login/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAA6B,MAAM,UAAU,CAAC;AAE1E,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,MAAM,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1B,YAAY,CACV,MAAM,EACF;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAC/B;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE/B,eAAe,CAAC,MAAM,EAAE;QACtB,UAAU,EAAE,UAAU,GAAG,eAAe,CAAC;QACzC,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,MAAM,CAAC;CACZ;AAQD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,GACZ,mBAAmB,GAAG,SAAS,CAoBjC;AAED,wBAAgB,sBAAsB,CACpC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,YAAY,CAwBd;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C,YAAY,CAoGd"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The login error taxonomy, kept in a module of its own with no imports.
3
+ *
4
+ * `loginService` and `adapter` import each other, so an enum declared in either
5
+ * one is not safely readable at the other's module scope. Living here, it is —
6
+ * which is what lets the adapter's code lookup be a plain table.
7
+ */
8
+ export declare enum AuthenticationErrorReason {
9
+ Expired = "expired",
10
+ IncorrectCode = "wrong-code",
11
+ TooManyTries = "too-many-tries",
12
+ NoEmail = "no-email",
13
+ Unknown = "unknown",
14
+ Missing = "missing"
15
+ }
16
+ export declare class AuthenticationError extends Error {
17
+ reason: AuthenticationErrorReason;
18
+ data: Record<string, unknown>;
19
+ constructor(reason: AuthenticationErrorReason, data?: Record<string, unknown>);
20
+ }
21
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/services/login/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oBAAY,yBAAyB;IACnC,OAAO,YAAY;IACnB,aAAa,eAAe;IAC5B,YAAY,mBAAmB;IAC/B,OAAO,aAAa;IACpB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,MAAM,EAAE,yBAAyB,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAG5B,MAAM,EAAE,yBAAyB,EACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMjC"}
@@ -20,6 +20,7 @@ type LoginService = {
20
20
  export declare const LoginServiceContext: {
21
21
  __context__: LoginService;
22
22
  };
23
- export { loginService, createLoginService, type LoginServiceDependencies, type ErrorFormatter, AuthenticationError, AuthenticationErrorReason, } from './loginService';
24
- export { type LoginAdapter, type AuthTokens, createApiLoginAdapter, createMockLoginAdapter, } from './adapter';
23
+ export { loginService, createLoginService, type LoginServiceDependencies, type ErrorFormatter, } from './loginService';
24
+ export { AuthenticationError, AuthenticationErrorReason } from './errors';
25
+ export { type LoginAdapter, type AuthTokens, authenticationErrorFromBody, createApiLoginAdapter, createMockLoginAdapter, } from './adapter';
25
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE;QACZ,KAAK,EAAE;YACL,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;SAC1E,CAAC;KACH,CAAC;IAEF,MAAM,EAAE;QACN,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;KAC3D,CAAC;IAEF,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEnC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAElD,iBAAiB,CACf,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEvC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;CACe,CAAC;AAEhD,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE;QACZ,KAAK,EAAE;YACL,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;SAC1E,CAAC;KACH,CAAC;IAEF,MAAM,EAAE;QACN,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;KAC3D,CAAC;IAEF,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEnC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAElD,iBAAiB,CACf,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEvC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;CACe,CAAC;AAEhD,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE1E,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,WAAW,CAAC"}
@@ -1,18 +1,6 @@
1
1
  import { Signal } from '@preact/signals-core';
2
2
  import { LoginAdapter } from './adapter';
3
- export declare enum AuthenticationErrorReason {
4
- Expired = "expired",
5
- IncorrectCode = "wrong-code",
6
- TooManyTries = "too-many-tries",
7
- NoEmail = "no-email",
8
- Unknown = "unknown",
9
- Missing = "missing"
10
- }
11
- export declare class AuthenticationError extends Error {
12
- reason: AuthenticationErrorReason;
13
- data: Record<string, unknown>;
14
- constructor(reason: AuthenticationErrorReason, data?: Record<string, unknown>);
15
- }
3
+ import { AuthenticationError, AuthenticationErrorReason } from './errors';
16
4
  interface RouterService {
17
5
  push(options: {
18
6
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"loginService.d.ts","sourceRoot":"","sources":["../../../src/services/login/loginService.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAKxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAI9C,oBAAY,yBAAyB;IACnC,OAAO,YAAY;IACnB,aAAa,eAAe;IAC5B,YAAY,mBAAmB;IAC/B,OAAO,aAAa;IACpB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,MAAM,EAAE,yBAAyB,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAG5B,MAAM,EAAE,yBAAyB,EACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMjC;AAED,UAAU,aAAa;IACrB,IAAI,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AA0BD,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,KAAK;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,WAAW,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,WAAW,EAAE,cAAc,CAAC;IAC5B,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;;;;;;;;;;;;;;;;EAmBA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,wBAAwB;;;;;;;;;;;;;;;;EAsNhE"}
1
+ {"version":3,"file":"loginService.d.ts","sourceRoot":"","sources":["../../../src/services/login/loginService.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAKxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE1E,UAAU,aAAa;IACrB,IAAI,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AA0BD,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,KAAK;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,WAAW,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,WAAW,EAAE,cAAc,CAAC;IAC5B,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;;;;;;;;;;;;;;;;EAmBA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,wBAAwB;;;;;;;;;;;;;;;;EAsNhE"}
@@ -1 +1 @@
1
- {"version":3,"file":"InlineText.d.ts","sourceRoot":"","sources":["../../../src/web-components/runtime/InlineText.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,OAAO,CAAC,OAAO,CAAC,CAAa;IAE7B,iBAAiB;IAsCjB,oBAAoB;CAIrB"}
1
+ {"version":3,"file":"InlineText.d.ts","sourceRoot":"","sources":["../../../src/web-components/runtime/InlineText.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,OAAO,CAAC,OAAO,CAAC,CAAa;IAE7B,iBAAiB;IAuCjB,oBAAoB;CAIrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=InlineText.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineText.test.d.ts","sourceRoot":"","sources":["../../../src/web-components/runtime/InlineText.test.ts"],"names":[],"mappings":""}
@@ -12,6 +12,7 @@ class InlineText extends HTMLElement {
12
12
  connectedCallback() {
13
13
  if (!this.style.display) this.style.display = "inline-block";
14
14
  if (!this.style.overflowWrap) this.style.overflowWrap = "anywhere";
15
+ if (!this.style.whiteSpace) this.style.whiteSpace = "pre-wrap";
15
16
  const key = this.getAttribute("prop");
16
17
  if (!key) return;
17
18
  let blockEl = this.closest("[data-block-type]");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@juo/blocks",
3
3
  "private": false,
4
- "version": "1.19.0",
4
+ "version": "1.20.1",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"