@blocklet/discuss-kit-ux 1.6.243 → 1.6.244

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.
@@ -9,10 +9,11 @@ import { Labels2, LabelPicker } from "@blocklet/labels";
9
9
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
10
10
  import { useTheme, ThemeProvider, styled } from "@mui/material/styles";
11
11
  import { create as create$1, styled as styled$1 } from "@arcblock/ux/lib/Theme";
12
- import { useEffect, useRef, lazy, useState, createElement, useContext, useMemo, isValidElement, Suspense, createContext, Fragment as Fragment$1, forwardRef, useCallback } from "react";
12
+ import require$$0, { useEffect, useRef, useState, createElement, useContext, useMemo, isValidElement, lazy, Suspense, createContext, Fragment as Fragment$1, forwardRef, useCallback } from "react";
13
13
  import { Box, useTheme as useTheme$1, useMediaQuery, Tooltip as Tooltip$1, Chip as Chip$1, alpha, ClickAwayListener, Dialog as Dialog$1, DialogTitle, DialogContent, DialogActions, DialogContentText, Button as Button$1, Divider, Skeleton, IconButton as IconButton$2, InputBase, tooltipClasses as tooltipClasses$1, Backdrop, Autocomplete, Typography as Typography$1, TextField as TextField$1, InputAdornment, Badge as Badge$1, Paper, ToggleButtonGroup, ToggleButton } from "@mui/material";
14
14
  import isNil from "lodash/isNil";
15
15
  import { useEditorConfig, EditorConfigProvider } from "@blocklet/editor/lib/config";
16
+ import { lazyWithPreload } from "react-lazy-with-preload";
16
17
  import { $getRoot, $createParagraphNode, $createTextNode, KEY_ENTER_COMMAND, COMMAND_PRIORITY_LOW, $getSelection } from "lexical";
17
18
  import { $isRootTextContentEmpty } from "@lexical/text";
18
19
  import joinUrl from "url-join";
@@ -65,6 +66,7 @@ import CircularProgress from "@mui/material/CircularProgress";
65
66
  import { Helmet } from "react-helmet";
66
67
  import { Flipper, Flipped } from "react-flip-toolkit";
67
68
  import grey$1 from "@mui/material/colors/grey";
69
+ import cmp from "semver-compare";
68
70
  import bridge from "@arcblock/bridge";
69
71
  import Fab from "@mui/material/Fab";
70
72
  import debounce from "lodash/debounce";
@@ -535,7 +537,8 @@ const useMeasure = () => {
535
537
  const size = useSize(ref);
536
538
  return [ref, size || { width: 0, height: 0 }];
537
539
  };
538
- const BlockletEditor$2 = lazy(() => import("@blocklet/editor"));
540
+ const BlockletEditor$2 = lazyWithPreload(() => import("@blocklet/editor"));
541
+ const preloadInput = () => BlockletEditor$2.preload();
539
542
  const Input = ({
540
543
  initialContent = "",
541
544
  send,
@@ -3913,9 +3916,915 @@ function ChannelGroup({ size = "normal", chat, children, ...rest }) {
3913
3916
  ] })
3914
3917
  ] });
3915
3918
  }
3919
+ function getAugmentedNamespace(n) {
3920
+ if (n.__esModule)
3921
+ return n;
3922
+ var f = n.default;
3923
+ if (typeof f == "function") {
3924
+ var a = function a2() {
3925
+ if (this instanceof a2) {
3926
+ return Reflect.construct(f, arguments, this.constructor);
3927
+ }
3928
+ return f.apply(this, arguments);
3929
+ };
3930
+ a.prototype = f.prototype;
3931
+ } else
3932
+ a = {};
3933
+ Object.defineProperty(a, "__esModule", { value: true });
3934
+ Object.keys(n).forEach(function(k) {
3935
+ var d = Object.getOwnPropertyDescriptor(n, k);
3936
+ Object.defineProperty(a, k, d.get ? d : {
3937
+ enumerable: true,
3938
+ get: function() {
3939
+ return n[k];
3940
+ }
3941
+ });
3942
+ });
3943
+ return a;
3944
+ }
3945
+ var lib = {};
3946
+ var useInterval$1 = {};
3947
+ Object.defineProperty(useInterval$1, "__esModule", {
3948
+ value: true
3949
+ });
3950
+ useInterval$1.default = useInterval;
3951
+ var _react$2 = require$$0;
3952
+ function useInterval(callback, delay) {
3953
+ const savedCallback = (0, _react$2.useRef)();
3954
+ (0, _react$2.useEffect)(() => {
3955
+ savedCallback.current = callback;
3956
+ }, [callback]);
3957
+ (0, _react$2.useEffect)(() => {
3958
+ function tick() {
3959
+ savedCallback.current();
3960
+ }
3961
+ if (delay !== null) {
3962
+ const id2 = setInterval(tick, delay);
3963
+ return () => clearInterval(id2);
3964
+ }
3965
+ }, [delay]);
3966
+ }
3967
+ var useStorage$1 = {};
3968
+ const privateData = /* @__PURE__ */ new WeakMap();
3969
+ const wrappers = /* @__PURE__ */ new WeakMap();
3970
+ function pd(event) {
3971
+ const retv = privateData.get(event);
3972
+ console.assert(
3973
+ retv != null,
3974
+ "'this' is expected an Event object, but got",
3975
+ event
3976
+ );
3977
+ return retv;
3978
+ }
3979
+ function setCancelFlag(data) {
3980
+ if (data.passiveListener != null) {
3981
+ if (typeof console !== "undefined" && typeof console.error === "function") {
3982
+ console.error(
3983
+ "Unable to preventDefault inside passive event listener invocation.",
3984
+ data.passiveListener
3985
+ );
3986
+ }
3987
+ return;
3988
+ }
3989
+ if (!data.event.cancelable) {
3990
+ return;
3991
+ }
3992
+ data.canceled = true;
3993
+ if (typeof data.event.preventDefault === "function") {
3994
+ data.event.preventDefault();
3995
+ }
3996
+ }
3997
+ function Event(eventTarget, event) {
3998
+ privateData.set(this, {
3999
+ eventTarget,
4000
+ event,
4001
+ eventPhase: 2,
4002
+ currentTarget: eventTarget,
4003
+ canceled: false,
4004
+ stopped: false,
4005
+ immediateStopped: false,
4006
+ passiveListener: null,
4007
+ timeStamp: event.timeStamp || Date.now()
4008
+ });
4009
+ Object.defineProperty(this, "isTrusted", { value: false, enumerable: true });
4010
+ const keys = Object.keys(event);
4011
+ for (let i = 0; i < keys.length; ++i) {
4012
+ const key = keys[i];
4013
+ if (!(key in this)) {
4014
+ Object.defineProperty(this, key, defineRedirectDescriptor(key));
4015
+ }
4016
+ }
4017
+ }
4018
+ Event.prototype = {
4019
+ /**
4020
+ * The type of this event.
4021
+ * @type {string}
4022
+ */
4023
+ get type() {
4024
+ return pd(this).event.type;
4025
+ },
4026
+ /**
4027
+ * The target of this event.
4028
+ * @type {EventTarget}
4029
+ */
4030
+ get target() {
4031
+ return pd(this).eventTarget;
4032
+ },
4033
+ /**
4034
+ * The target of this event.
4035
+ * @type {EventTarget}
4036
+ */
4037
+ get currentTarget() {
4038
+ return pd(this).currentTarget;
4039
+ },
4040
+ /**
4041
+ * @returns {EventTarget[]} The composed path of this event.
4042
+ */
4043
+ composedPath() {
4044
+ const currentTarget = pd(this).currentTarget;
4045
+ if (currentTarget == null) {
4046
+ return [];
4047
+ }
4048
+ return [currentTarget];
4049
+ },
4050
+ /**
4051
+ * Constant of NONE.
4052
+ * @type {number}
4053
+ */
4054
+ get NONE() {
4055
+ return 0;
4056
+ },
4057
+ /**
4058
+ * Constant of CAPTURING_PHASE.
4059
+ * @type {number}
4060
+ */
4061
+ get CAPTURING_PHASE() {
4062
+ return 1;
4063
+ },
4064
+ /**
4065
+ * Constant of AT_TARGET.
4066
+ * @type {number}
4067
+ */
4068
+ get AT_TARGET() {
4069
+ return 2;
4070
+ },
4071
+ /**
4072
+ * Constant of BUBBLING_PHASE.
4073
+ * @type {number}
4074
+ */
4075
+ get BUBBLING_PHASE() {
4076
+ return 3;
4077
+ },
4078
+ /**
4079
+ * The target of this event.
4080
+ * @type {number}
4081
+ */
4082
+ get eventPhase() {
4083
+ return pd(this).eventPhase;
4084
+ },
4085
+ /**
4086
+ * Stop event bubbling.
4087
+ * @returns {void}
4088
+ */
4089
+ stopPropagation() {
4090
+ const data = pd(this);
4091
+ data.stopped = true;
4092
+ if (typeof data.event.stopPropagation === "function") {
4093
+ data.event.stopPropagation();
4094
+ }
4095
+ },
4096
+ /**
4097
+ * Stop event bubbling.
4098
+ * @returns {void}
4099
+ */
4100
+ stopImmediatePropagation() {
4101
+ const data = pd(this);
4102
+ data.stopped = true;
4103
+ data.immediateStopped = true;
4104
+ if (typeof data.event.stopImmediatePropagation === "function") {
4105
+ data.event.stopImmediatePropagation();
4106
+ }
4107
+ },
4108
+ /**
4109
+ * The flag to be bubbling.
4110
+ * @type {boolean}
4111
+ */
4112
+ get bubbles() {
4113
+ return Boolean(pd(this).event.bubbles);
4114
+ },
4115
+ /**
4116
+ * The flag to be cancelable.
4117
+ * @type {boolean}
4118
+ */
4119
+ get cancelable() {
4120
+ return Boolean(pd(this).event.cancelable);
4121
+ },
4122
+ /**
4123
+ * Cancel this event.
4124
+ * @returns {void}
4125
+ */
4126
+ preventDefault() {
4127
+ setCancelFlag(pd(this));
4128
+ },
4129
+ /**
4130
+ * The flag to indicate cancellation state.
4131
+ * @type {boolean}
4132
+ */
4133
+ get defaultPrevented() {
4134
+ return pd(this).canceled;
4135
+ },
4136
+ /**
4137
+ * The flag to be composed.
4138
+ * @type {boolean}
4139
+ */
4140
+ get composed() {
4141
+ return Boolean(pd(this).event.composed);
4142
+ },
4143
+ /**
4144
+ * The unix time of this event.
4145
+ * @type {number}
4146
+ */
4147
+ get timeStamp() {
4148
+ return pd(this).timeStamp;
4149
+ },
4150
+ /**
4151
+ * The target of this event.
4152
+ * @type {EventTarget}
4153
+ * @deprecated
4154
+ */
4155
+ get srcElement() {
4156
+ return pd(this).eventTarget;
4157
+ },
4158
+ /**
4159
+ * The flag to stop event bubbling.
4160
+ * @type {boolean}
4161
+ * @deprecated
4162
+ */
4163
+ get cancelBubble() {
4164
+ return pd(this).stopped;
4165
+ },
4166
+ set cancelBubble(value) {
4167
+ if (!value) {
4168
+ return;
4169
+ }
4170
+ const data = pd(this);
4171
+ data.stopped = true;
4172
+ if (typeof data.event.cancelBubble === "boolean") {
4173
+ data.event.cancelBubble = true;
4174
+ }
4175
+ },
4176
+ /**
4177
+ * The flag to indicate cancellation state.
4178
+ * @type {boolean}
4179
+ * @deprecated
4180
+ */
4181
+ get returnValue() {
4182
+ return !pd(this).canceled;
4183
+ },
4184
+ set returnValue(value) {
4185
+ if (!value) {
4186
+ setCancelFlag(pd(this));
4187
+ }
4188
+ },
4189
+ /**
4190
+ * Initialize this event object. But do nothing under event dispatching.
4191
+ * @param {string} type The event type.
4192
+ * @param {boolean} [bubbles=false] The flag to be possible to bubble up.
4193
+ * @param {boolean} [cancelable=false] The flag to be possible to cancel.
4194
+ * @deprecated
4195
+ */
4196
+ initEvent() {
4197
+ }
4198
+ };
4199
+ Object.defineProperty(Event.prototype, "constructor", {
4200
+ value: Event,
4201
+ configurable: true,
4202
+ writable: true
4203
+ });
4204
+ if (typeof window !== "undefined" && typeof window.Event !== "undefined") {
4205
+ Object.setPrototypeOf(Event.prototype, window.Event.prototype);
4206
+ wrappers.set(window.Event.prototype, Event);
4207
+ }
4208
+ function defineRedirectDescriptor(key) {
4209
+ return {
4210
+ get() {
4211
+ return pd(this).event[key];
4212
+ },
4213
+ set(value) {
4214
+ pd(this).event[key] = value;
4215
+ },
4216
+ configurable: true,
4217
+ enumerable: true
4218
+ };
4219
+ }
4220
+ function defineCallDescriptor(key) {
4221
+ return {
4222
+ value() {
4223
+ const event = pd(this).event;
4224
+ return event[key].apply(event, arguments);
4225
+ },
4226
+ configurable: true,
4227
+ enumerable: true
4228
+ };
4229
+ }
4230
+ function defineWrapper(BaseEvent, proto) {
4231
+ const keys = Object.keys(proto);
4232
+ if (keys.length === 0) {
4233
+ return BaseEvent;
4234
+ }
4235
+ function CustomEvent2(eventTarget, event) {
4236
+ BaseEvent.call(this, eventTarget, event);
4237
+ }
4238
+ CustomEvent2.prototype = Object.create(BaseEvent.prototype, {
4239
+ constructor: { value: CustomEvent2, configurable: true, writable: true }
4240
+ });
4241
+ for (let i = 0; i < keys.length; ++i) {
4242
+ const key = keys[i];
4243
+ if (!(key in BaseEvent.prototype)) {
4244
+ const descriptor = Object.getOwnPropertyDescriptor(proto, key);
4245
+ const isFunc = typeof descriptor.value === "function";
4246
+ Object.defineProperty(
4247
+ CustomEvent2.prototype,
4248
+ key,
4249
+ isFunc ? defineCallDescriptor(key) : defineRedirectDescriptor(key)
4250
+ );
4251
+ }
4252
+ }
4253
+ return CustomEvent2;
4254
+ }
4255
+ function getWrapper(proto) {
4256
+ if (proto == null || proto === Object.prototype) {
4257
+ return Event;
4258
+ }
4259
+ let wrapper = wrappers.get(proto);
4260
+ if (wrapper == null) {
4261
+ wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto);
4262
+ wrappers.set(proto, wrapper);
4263
+ }
4264
+ return wrapper;
4265
+ }
4266
+ function wrapEvent(eventTarget, event) {
4267
+ const Wrapper = getWrapper(Object.getPrototypeOf(event));
4268
+ return new Wrapper(eventTarget, event);
4269
+ }
4270
+ function isStopped(event) {
4271
+ return pd(event).immediateStopped;
4272
+ }
4273
+ function setEventPhase(event, eventPhase) {
4274
+ pd(event).eventPhase = eventPhase;
4275
+ }
4276
+ function setCurrentTarget(event, currentTarget) {
4277
+ pd(event).currentTarget = currentTarget;
4278
+ }
4279
+ function setPassiveListener(event, passiveListener) {
4280
+ pd(event).passiveListener = passiveListener;
4281
+ }
4282
+ const listenersMap = /* @__PURE__ */ new WeakMap();
4283
+ const CAPTURE = 1;
4284
+ const BUBBLE = 2;
4285
+ const ATTRIBUTE = 3;
4286
+ function isObject(x) {
4287
+ return x !== null && typeof x === "object";
4288
+ }
4289
+ function getListeners(eventTarget) {
4290
+ const listeners = listenersMap.get(eventTarget);
4291
+ if (listeners == null) {
4292
+ throw new TypeError(
4293
+ "'this' is expected an EventTarget object, but got another value."
4294
+ );
4295
+ }
4296
+ return listeners;
4297
+ }
4298
+ function defineEventAttributeDescriptor(eventName) {
4299
+ return {
4300
+ get() {
4301
+ const listeners = getListeners(this);
4302
+ let node = listeners.get(eventName);
4303
+ while (node != null) {
4304
+ if (node.listenerType === ATTRIBUTE) {
4305
+ return node.listener;
4306
+ }
4307
+ node = node.next;
4308
+ }
4309
+ return null;
4310
+ },
4311
+ set(listener) {
4312
+ if (typeof listener !== "function" && !isObject(listener)) {
4313
+ listener = null;
4314
+ }
4315
+ const listeners = getListeners(this);
4316
+ let prev = null;
4317
+ let node = listeners.get(eventName);
4318
+ while (node != null) {
4319
+ if (node.listenerType === ATTRIBUTE) {
4320
+ if (prev !== null) {
4321
+ prev.next = node.next;
4322
+ } else if (node.next !== null) {
4323
+ listeners.set(eventName, node.next);
4324
+ } else {
4325
+ listeners.delete(eventName);
4326
+ }
4327
+ } else {
4328
+ prev = node;
4329
+ }
4330
+ node = node.next;
4331
+ }
4332
+ if (listener !== null) {
4333
+ const newNode = {
4334
+ listener,
4335
+ listenerType: ATTRIBUTE,
4336
+ passive: false,
4337
+ once: false,
4338
+ next: null
4339
+ };
4340
+ if (prev === null) {
4341
+ listeners.set(eventName, newNode);
4342
+ } else {
4343
+ prev.next = newNode;
4344
+ }
4345
+ }
4346
+ },
4347
+ configurable: true,
4348
+ enumerable: true
4349
+ };
4350
+ }
4351
+ function defineEventAttribute(eventTargetPrototype, eventName) {
4352
+ Object.defineProperty(
4353
+ eventTargetPrototype,
4354
+ `on${eventName}`,
4355
+ defineEventAttributeDescriptor(eventName)
4356
+ );
4357
+ }
4358
+ function defineCustomEventTarget(eventNames) {
4359
+ function CustomEventTarget() {
4360
+ EventTarget.call(this);
4361
+ }
4362
+ CustomEventTarget.prototype = Object.create(EventTarget.prototype, {
4363
+ constructor: {
4364
+ value: CustomEventTarget,
4365
+ configurable: true,
4366
+ writable: true
4367
+ }
4368
+ });
4369
+ for (let i = 0; i < eventNames.length; ++i) {
4370
+ defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);
4371
+ }
4372
+ return CustomEventTarget;
4373
+ }
4374
+ function EventTarget() {
4375
+ if (this instanceof EventTarget) {
4376
+ listenersMap.set(this, /* @__PURE__ */ new Map());
4377
+ return;
4378
+ }
4379
+ if (arguments.length === 1 && Array.isArray(arguments[0])) {
4380
+ return defineCustomEventTarget(arguments[0]);
4381
+ }
4382
+ if (arguments.length > 0) {
4383
+ const types = new Array(arguments.length);
4384
+ for (let i = 0; i < arguments.length; ++i) {
4385
+ types[i] = arguments[i];
4386
+ }
4387
+ return defineCustomEventTarget(types);
4388
+ }
4389
+ throw new TypeError("Cannot call a class as a function");
4390
+ }
4391
+ EventTarget.prototype = {
4392
+ /**
4393
+ * Add a given listener to this event target.
4394
+ * @param {string} eventName The event name to add.
4395
+ * @param {Function} listener The listener to add.
4396
+ * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.
4397
+ * @returns {void}
4398
+ */
4399
+ addEventListener(eventName, listener, options) {
4400
+ if (listener == null) {
4401
+ return;
4402
+ }
4403
+ if (typeof listener !== "function" && !isObject(listener)) {
4404
+ throw new TypeError("'listener' should be a function or an object.");
4405
+ }
4406
+ const listeners = getListeners(this);
4407
+ const optionsIsObj = isObject(options);
4408
+ const capture = optionsIsObj ? Boolean(options.capture) : Boolean(options);
4409
+ const listenerType = capture ? CAPTURE : BUBBLE;
4410
+ const newNode = {
4411
+ listener,
4412
+ listenerType,
4413
+ passive: optionsIsObj && Boolean(options.passive),
4414
+ once: optionsIsObj && Boolean(options.once),
4415
+ next: null
4416
+ };
4417
+ let node = listeners.get(eventName);
4418
+ if (node === void 0) {
4419
+ listeners.set(eventName, newNode);
4420
+ return;
4421
+ }
4422
+ let prev = null;
4423
+ while (node != null) {
4424
+ if (node.listener === listener && node.listenerType === listenerType) {
4425
+ return;
4426
+ }
4427
+ prev = node;
4428
+ node = node.next;
4429
+ }
4430
+ prev.next = newNode;
4431
+ },
4432
+ /**
4433
+ * Remove a given listener from this event target.
4434
+ * @param {string} eventName The event name to remove.
4435
+ * @param {Function} listener The listener to remove.
4436
+ * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.
4437
+ * @returns {void}
4438
+ */
4439
+ removeEventListener(eventName, listener, options) {
4440
+ if (listener == null) {
4441
+ return;
4442
+ }
4443
+ const listeners = getListeners(this);
4444
+ const capture = isObject(options) ? Boolean(options.capture) : Boolean(options);
4445
+ const listenerType = capture ? CAPTURE : BUBBLE;
4446
+ let prev = null;
4447
+ let node = listeners.get(eventName);
4448
+ while (node != null) {
4449
+ if (node.listener === listener && node.listenerType === listenerType) {
4450
+ if (prev !== null) {
4451
+ prev.next = node.next;
4452
+ } else if (node.next !== null) {
4453
+ listeners.set(eventName, node.next);
4454
+ } else {
4455
+ listeners.delete(eventName);
4456
+ }
4457
+ return;
4458
+ }
4459
+ prev = node;
4460
+ node = node.next;
4461
+ }
4462
+ },
4463
+ /**
4464
+ * Dispatch a given event.
4465
+ * @param {Event|{type:string}} event The event to dispatch.
4466
+ * @returns {boolean} `false` if canceled.
4467
+ */
4468
+ dispatchEvent(event) {
4469
+ if (event == null || typeof event.type !== "string") {
4470
+ throw new TypeError('"event.type" should be a string.');
4471
+ }
4472
+ const listeners = getListeners(this);
4473
+ const eventName = event.type;
4474
+ let node = listeners.get(eventName);
4475
+ if (node == null) {
4476
+ return true;
4477
+ }
4478
+ const wrappedEvent = wrapEvent(this, event);
4479
+ let prev = null;
4480
+ while (node != null) {
4481
+ if (node.once) {
4482
+ if (prev !== null) {
4483
+ prev.next = node.next;
4484
+ } else if (node.next !== null) {
4485
+ listeners.set(eventName, node.next);
4486
+ } else {
4487
+ listeners.delete(eventName);
4488
+ }
4489
+ } else {
4490
+ prev = node;
4491
+ }
4492
+ setPassiveListener(
4493
+ wrappedEvent,
4494
+ node.passive ? node.listener : null
4495
+ );
4496
+ if (typeof node.listener === "function") {
4497
+ try {
4498
+ node.listener.call(this, wrappedEvent);
4499
+ } catch (err) {
4500
+ if (typeof console !== "undefined" && typeof console.error === "function") {
4501
+ console.error(err);
4502
+ }
4503
+ }
4504
+ } else if (node.listenerType !== ATTRIBUTE && typeof node.listener.handleEvent === "function") {
4505
+ node.listener.handleEvent(wrappedEvent);
4506
+ }
4507
+ if (isStopped(wrappedEvent)) {
4508
+ break;
4509
+ }
4510
+ node = node.next;
4511
+ }
4512
+ setPassiveListener(wrappedEvent, null);
4513
+ setEventPhase(wrappedEvent, 0);
4514
+ setCurrentTarget(wrappedEvent, null);
4515
+ return !wrappedEvent.defaultPrevented;
4516
+ }
4517
+ };
4518
+ Object.defineProperty(EventTarget.prototype, "constructor", {
4519
+ value: EventTarget,
4520
+ configurable: true,
4521
+ writable: true
4522
+ });
4523
+ if (typeof window !== "undefined" && typeof window.EventTarget !== "undefined") {
4524
+ Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype);
4525
+ }
4526
+ const eventTargetShim = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4527
+ __proto__: null,
4528
+ EventTarget,
4529
+ default: EventTarget,
4530
+ defineEventAttribute
4531
+ }, Symbol.toStringTag, { value: "Module" }));
4532
+ const require$$1$1 = /* @__PURE__ */ getAugmentedNamespace(eventTargetShim);
4533
+ Object.defineProperty(useStorage$1, "__esModule", {
4534
+ value: true
4535
+ });
4536
+ useStorage$1.default = useStorage;
4537
+ var _react$1 = require$$0;
4538
+ var _eventTargetShim = require$$1$1;
4539
+ const evtTarget = new _eventTargetShim.EventTarget();
4540
+ function useStorage(storage, keyPrefix) {
4541
+ return (key, defaultValue) => {
4542
+ const storeKey = "".concat(keyPrefix, ".").concat(key);
4543
+ const raw = storage.getItem(storeKey);
4544
+ const [value, setValue] = (0, _react$1.useState)(raw ? JSON.parse(raw) : defaultValue);
4545
+ const updater = (updatedValue) => {
4546
+ setValue(updatedValue);
4547
+ storage.setItem(storeKey, JSON.stringify(updatedValue));
4548
+ evtTarget.dispatchEvent(new CustomEvent("storage_change", {
4549
+ detail: {
4550
+ key
4551
+ }
4552
+ }));
4553
+ };
4554
+ if (defaultValue != null && !raw) {
4555
+ updater(defaultValue);
4556
+ }
4557
+ (0, _react$1.useEffect)(() => {
4558
+ const listener = (_ref) => {
4559
+ let {
4560
+ detail
4561
+ } = _ref;
4562
+ if (detail.key === key) {
4563
+ const _raw = storage.getItem(storeKey);
4564
+ if (_raw !== raw) {
4565
+ setValue(JSON.parse(_raw));
4566
+ }
4567
+ }
4568
+ };
4569
+ evtTarget.addEventListener("storage_change", listener);
4570
+ return () => evtTarget.removeEventListener("storage_change", listener);
4571
+ });
4572
+ return [value, updater];
4573
+ };
4574
+ }
4575
+ var useBrowser$1 = {};
4576
+ var appleIphone = /iPhone/i;
4577
+ var appleIpod = /iPod/i;
4578
+ var appleTablet = /iPad/i;
4579
+ var appleUniversal = /\biOS-universal(?:.+)Mac\b/i;
4580
+ var androidPhone = /\bAndroid(?:.+)Mobile\b/i;
4581
+ var androidTablet = /Android/i;
4582
+ var amazonPhone = /(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i;
4583
+ var amazonTablet = /Silk/i;
4584
+ var windowsPhone = /Windows Phone/i;
4585
+ var windowsTablet = /\bWindows(?:.+)ARM\b/i;
4586
+ var otherBlackBerry = /BlackBerry/i;
4587
+ var otherBlackBerry10 = /BB10/i;
4588
+ var otherOpera = /Opera Mini/i;
4589
+ var otherChrome = /\b(CriOS|Chrome)(?:.+)Mobile/i;
4590
+ var otherFirefox = /Mobile(?:.+)Firefox\b/i;
4591
+ var isAppleTabletOnIos13 = function(navigator2) {
4592
+ return typeof navigator2 !== "undefined" && navigator2.platform === "MacIntel" && typeof navigator2.maxTouchPoints === "number" && navigator2.maxTouchPoints > 1 && typeof MSStream === "undefined";
4593
+ };
4594
+ function createMatch(userAgent) {
4595
+ return function(regex) {
4596
+ return regex.test(userAgent);
4597
+ };
4598
+ }
4599
+ function isMobile(param) {
4600
+ var nav = {
4601
+ userAgent: "",
4602
+ platform: "",
4603
+ maxTouchPoints: 0
4604
+ };
4605
+ if (!param && typeof navigator !== "undefined") {
4606
+ nav = {
4607
+ userAgent: navigator.userAgent,
4608
+ platform: navigator.platform,
4609
+ maxTouchPoints: navigator.maxTouchPoints || 0
4610
+ };
4611
+ } else if (typeof param === "string") {
4612
+ nav.userAgent = param;
4613
+ } else if (param && param.userAgent) {
4614
+ nav = {
4615
+ userAgent: param.userAgent,
4616
+ platform: param.platform,
4617
+ maxTouchPoints: param.maxTouchPoints || 0
4618
+ };
4619
+ }
4620
+ var userAgent = nav.userAgent;
4621
+ var tmp = userAgent.split("[FBAN");
4622
+ if (typeof tmp[1] !== "undefined") {
4623
+ userAgent = tmp[0];
4624
+ }
4625
+ tmp = userAgent.split("Twitter");
4626
+ if (typeof tmp[1] !== "undefined") {
4627
+ userAgent = tmp[0];
4628
+ }
4629
+ var match = createMatch(userAgent);
4630
+ var result = {
4631
+ apple: {
4632
+ phone: match(appleIphone) && !match(windowsPhone),
4633
+ ipod: match(appleIpod),
4634
+ tablet: !match(appleIphone) && (match(appleTablet) || isAppleTabletOnIos13(nav)) && !match(windowsPhone),
4635
+ universal: match(appleUniversal),
4636
+ device: (match(appleIphone) || match(appleIpod) || match(appleTablet) || match(appleUniversal) || isAppleTabletOnIos13(nav)) && !match(windowsPhone)
4637
+ },
4638
+ amazon: {
4639
+ phone: match(amazonPhone),
4640
+ tablet: !match(amazonPhone) && match(amazonTablet),
4641
+ device: match(amazonPhone) || match(amazonTablet)
4642
+ },
4643
+ android: {
4644
+ phone: !match(windowsPhone) && match(amazonPhone) || !match(windowsPhone) && match(androidPhone),
4645
+ tablet: !match(windowsPhone) && !match(amazonPhone) && !match(androidPhone) && (match(amazonTablet) || match(androidTablet)),
4646
+ device: !match(windowsPhone) && (match(amazonPhone) || match(amazonTablet) || match(androidPhone) || match(androidTablet)) || match(/\bokhttp\b/i)
4647
+ },
4648
+ windows: {
4649
+ phone: match(windowsPhone),
4650
+ tablet: match(windowsTablet),
4651
+ device: match(windowsPhone) || match(windowsTablet)
4652
+ },
4653
+ other: {
4654
+ blackberry: match(otherBlackBerry),
4655
+ blackberry10: match(otherBlackBerry10),
4656
+ opera: match(otherOpera),
4657
+ firefox: match(otherFirefox),
4658
+ chrome: match(otherChrome),
4659
+ device: match(otherBlackBerry) || match(otherBlackBerry10) || match(otherOpera) || match(otherFirefox) || match(otherChrome)
4660
+ },
4661
+ any: false,
4662
+ phone: false,
4663
+ tablet: false
4664
+ };
4665
+ result.any = result.apple.device || result.android.device || result.windows.device || result.other.device;
4666
+ result.phone = result.apple.phone || result.android.phone || result.windows.phone;
4667
+ result.tablet = result.apple.tablet || result.android.tablet || result.windows.tablet;
4668
+ return result;
4669
+ }
4670
+ const esm = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4671
+ __proto__: null,
4672
+ default: isMobile
4673
+ }, Symbol.toStringTag, { value: "Module" }));
4674
+ const require$$1 = /* @__PURE__ */ getAugmentedNamespace(esm);
4675
+ Object.defineProperty(useBrowser$1, "__esModule", {
4676
+ value: true
4677
+ });
4678
+ useBrowser$1.default = useBrowser;
4679
+ var _react = require$$0;
4680
+ var _ismobilejs = _interopRequireDefault(require$$1);
4681
+ function _interopRequireDefault(obj) {
4682
+ return obj && obj.__esModule ? obj : { default: obj };
4683
+ }
4684
+ function ownKeys(e, r) {
4685
+ var t = Object.keys(e);
4686
+ if (Object.getOwnPropertySymbols) {
4687
+ var o = Object.getOwnPropertySymbols(e);
4688
+ r && (o = o.filter(function(r2) {
4689
+ return Object.getOwnPropertyDescriptor(e, r2).enumerable;
4690
+ })), t.push.apply(t, o);
4691
+ }
4692
+ return t;
4693
+ }
4694
+ function _objectSpread(e) {
4695
+ for (var r = 1; r < arguments.length; r++) {
4696
+ var t = null != arguments[r] ? arguments[r] : {};
4697
+ r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
4698
+ _defineProperty(e, r2, t[r2]);
4699
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
4700
+ Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
4701
+ });
4702
+ }
4703
+ return e;
4704
+ }
4705
+ function _defineProperty(obj, key, value) {
4706
+ key = _toPropertyKey(key);
4707
+ if (key in obj) {
4708
+ Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
4709
+ } else {
4710
+ obj[key] = value;
4711
+ }
4712
+ return obj;
4713
+ }
4714
+ function _toPropertyKey(t) {
4715
+ var i = _toPrimitive(t, "string");
4716
+ return "symbol" == typeof i ? i : String(i);
4717
+ }
4718
+ function _toPrimitive(t, r) {
4719
+ if ("object" != typeof t || !t)
4720
+ return t;
4721
+ var e = t[Symbol.toPrimitive];
4722
+ if (void 0 !== e) {
4723
+ var i = e.call(t, r || "default");
4724
+ if ("object" != typeof i)
4725
+ return i;
4726
+ throw new TypeError("@@toPrimitive must return a primitive value.");
4727
+ }
4728
+ return ("string" === r ? String : Number)(t);
4729
+ }
4730
+ const DID_WALLET_TAG = "ABTWallet";
4731
+ function getDIDWalletVersion(userAgent) {
4732
+ var _result$groups;
4733
+ const reg = new RegExp("".concat(DID_WALLET_TAG, "/(?<version>[0-9.]+)"), "g");
4734
+ const result = reg.exec(userAgent);
4735
+ const version = result === null || result === void 0 ? void 0 : (_result$groups = result.groups) === null || _result$groups === void 0 ? void 0 : _result$groups.version;
4736
+ return version;
4737
+ }
4738
+ function useBrowser() {
4739
+ var _window, _window$navigator;
4740
+ const userAgent = (_window = window) === null || _window === void 0 ? void 0 : (_window$navigator = _window.navigator) === null || _window$navigator === void 0 ? void 0 : _window$navigator.userAgent;
4741
+ const [browser] = (0, _react.useState)({
4742
+ wallet: userAgent.indexOf(DID_WALLET_TAG) > -1,
4743
+ walletVersion: getDIDWalletVersion(userAgent),
4744
+ wechat: /MicroMessenger/i.test(userAgent),
4745
+ mobile: _objectSpread({
4746
+ apple: {
4747
+ phone: false,
4748
+ ipod: false,
4749
+ tablet: false,
4750
+ device: false
4751
+ },
4752
+ amazon: {
4753
+ phone: false,
4754
+ tablet: false,
4755
+ device: false
4756
+ },
4757
+ android: {
4758
+ phone: false,
4759
+ tablet: false,
4760
+ device: false
4761
+ },
4762
+ windows: {
4763
+ phone: false,
4764
+ tablet: false,
4765
+ device: false
4766
+ },
4767
+ other: {
4768
+ blackberry: false,
4769
+ blackberry10: false,
4770
+ opera: false,
4771
+ firefox: false,
4772
+ chrome: false,
4773
+ device: false
4774
+ },
4775
+ phone: false,
4776
+ tablet: false,
4777
+ any: false
4778
+ }, (0, _ismobilejs.default)(userAgent))
4779
+ });
4780
+ return browser;
4781
+ }
4782
+ (function(exports) {
4783
+ Object.defineProperty(exports, "__esModule", {
4784
+ value: true
4785
+ });
4786
+ Object.defineProperty(exports, "useBrowser", {
4787
+ enumerable: true,
4788
+ get: function get() {
4789
+ return _useBrowser.default;
4790
+ }
4791
+ });
4792
+ Object.defineProperty(exports, "useInterval", {
4793
+ enumerable: true,
4794
+ get: function get() {
4795
+ return _useInterval.default;
4796
+ }
4797
+ });
4798
+ Object.defineProperty(exports, "useStorage", {
4799
+ enumerable: true,
4800
+ get: function get() {
4801
+ return _useStorage.default;
4802
+ }
4803
+ });
4804
+ var _useInterval = _interopRequireDefault2(useInterval$1);
4805
+ var _useStorage = _interopRequireDefault2(useStorage$1);
4806
+ var _useBrowser = _interopRequireDefault2(useBrowser$1);
4807
+ function _interopRequireDefault2(obj) {
4808
+ return obj && obj.__esModule ? obj : { default: obj };
4809
+ }
4810
+ })(lib);
4811
+ const useChatInWallet = () => {
4812
+ const navigate = useNavigate();
4813
+ const { walletVersion, mobile } = lib.useBrowser();
4814
+ const navigateToChat = ({ id: id2, title }) => {
4815
+ const targetVersion = mobile.apple.device ? "5.3.2" : "5.3.0";
4816
+ if (walletVersion && cmp(walletVersion, targetVersion) === 1) {
4817
+ navigate(`/chat-in-wallet/${id2}`);
4818
+ } else {
4819
+ bridge.call("clickChat", { id: id2, title });
4820
+ }
4821
+ };
4822
+ return { navigateToChat };
4823
+ };
3916
4824
  function ChatList({ inWallet, ...rest }) {
3917
4825
  const { t } = useLocaleContext();
3918
4826
  const { orderedChats, activeChatId, setActiveChat, getOppositeUser, hasUnreadMessages, getLastMessageText } = useChatContext();
4827
+ const { navigateToChat } = useChatInWallet();
3919
4828
  const renderItem = (chat) => {
3920
4829
  if (chat.type === "notification") {
3921
4830
  return /* @__PURE__ */ jsx(SystemUser, { name: t("chat.notification") });
@@ -3985,7 +4894,7 @@ function ChatList({ inWallet, ...rest }) {
3985
4894
  const getTitle = webTitleMap[chat.type] || webTitleMap.default;
3986
4895
  return getTitle();
3987
4896
  };
3988
- bridge.call("clickChat", { id: chat.id, title: getWebTitle() });
4897
+ navigateToChat({ id: chat.id, title: getWebTitle() });
3989
4898
  } else {
3990
4899
  setActiveChat(chat);
3991
4900
  }
@@ -4898,6 +5807,7 @@ function UserSearch({ sx, ...rest }) {
4898
5807
  const { client: client2, isInWallet, chats, setActiveChat, createDM } = useChatContext();
4899
5808
  const [inputValue, setInputValue] = useState("");
4900
5809
  const [open, setOpen] = useState(false);
5810
+ const { navigateToChat } = useChatInWallet();
4901
5811
  const { data, loading } = useRequest(
4902
5812
  async () => {
4903
5813
  if (!open) {
@@ -4974,10 +5884,10 @@ function UserSearch({ sx, ...rest }) {
4974
5884
  const chat = chats.find((x) => x.id === chatId);
4975
5885
  if (isInWallet) {
4976
5886
  if (chat) {
4977
- bridge.call("clickChat", { id: chat.id, title: newValue.fullName });
5887
+ navigateToChat({ id: chat.id, title: newValue.fullName });
4978
5888
  } else {
4979
5889
  const dm = await createDM(newValue.did);
4980
- bridge.call("clickChat", { id: dm.id, title: newValue.fullName });
5890
+ navigateToChat({ id: dm.id, title: newValue.fullName });
4981
5891
  }
4982
5892
  } else if (chat) {
4983
5893
  setActiveChat(chat);
@@ -5546,7 +6456,7 @@ function Pagination({
5546
6456
  }
5547
6457
  );
5548
6458
  }
5549
- const Editor = lazy(() => import("./editor-N32Ffdew.mjs"));
6459
+ const Editor = lazy(() => import("./editor-T5YWV1te.mjs"));
5550
6460
  function LazyEditor(props) {
5551
6461
  const fallback = /* @__PURE__ */ jsxs(Box, { sx: { px: 3 }, children: [
5552
6462
  /* @__PURE__ */ jsx(Skeleton, {}),
@@ -11726,87 +12636,88 @@ function SegmentedControl({ value, options, onChange, sx, ...rest }) {
11726
12636
  ) });
11727
12637
  }
11728
12638
  export {
11729
- useChatContext as $,
12639
+ ChatHeaderAddon as $,
11730
12640
  Avatar as A,
11731
12641
  Badge as B,
11732
12642
  CommentInput as C,
11733
12643
  DefaultEditorConfigProvider as D,
11734
- BinaryThumb as E,
11735
- EmptyStatus as F,
12644
+ CommentsProvider as E,
12645
+ BinaryThumb as F,
11736
12646
  GithubReaction as G,
11737
- BlogListWrapper as H,
12647
+ EmptyStatus as H,
11738
12648
  ImagePathFixerPlugin as I,
11739
- BlogCard as J,
11740
- BlogPermaLink as K,
11741
- getBlogLink as L,
12649
+ BlogListWrapper as J,
12650
+ BlogCard as K,
12651
+ BlogPermaLink as L,
11742
12652
  Menu as M,
11743
- CoverImage as N,
11744
- CoverImageUpload as O,
12653
+ getBlogLink as N,
12654
+ CoverImage as O,
11745
12655
  Pagination as P,
11746
- AccessControl as Q,
12656
+ CoverImageUpload as Q,
11747
12657
  RelativeTime as R,
11748
12658
  ScrollableEditorWrapper as S,
11749
- useAuthzContext as T,
11750
- AuthzProvider as U,
12659
+ AccessControl as T,
12660
+ useAuthzContext as U,
11751
12661
  VideoPathFixerPlugin as V,
11752
- ChatClient as W,
11753
- Chat as X,
11754
- ChatInWallet as Y,
11755
- ChatListInWallet as Z,
11756
- ChatHeaderAddon as _,
12662
+ AuthzProvider as W,
12663
+ ChatClient as X,
12664
+ Chat as Y,
12665
+ ChatInWallet as Z,
12666
+ ChatListInWallet as _,
11757
12667
  isEmptyContent as a,
11758
- ChatProvider as a0,
11759
- UnreadNotificationContext as a1,
11760
- useUnreadNotification as a2,
11761
- UnreadNotificationProvider as a3,
11762
- Confirm as a4,
11763
- ConfirmContext as a5,
11764
- useConfirm as a6,
11765
- ConfirmProvider as a7,
11766
- SecureLabelPicker as a8,
11767
- useApiErrorHandler as a9,
11768
- useDefaultApiErrorHandler as aa,
11769
- DefaultApiErrorHandler as ab,
11770
- Back as ac,
11771
- LazyEditor as ad,
11772
- EditorPreview as ae,
11773
- DirtyPromptContainer as af,
11774
- ConfirmNavigation as ag,
11775
- UploaderContext as ah,
11776
- useUploader as ai,
11777
- UploaderTrigger as aj,
11778
- UploaderProvider as ak,
11779
- composeImageUrl as al,
11780
- usePointUpContext as am,
11781
- PointUpProvider as an,
11782
- ButtonGroup as ao,
11783
- SegmentedControl as ap,
11784
- create as aq,
11785
- getWsClient as ar,
11786
- useSubscription as as,
12668
+ useChatContext as a0,
12669
+ ChatProvider as a1,
12670
+ UnreadNotificationContext as a2,
12671
+ useUnreadNotification as a3,
12672
+ UnreadNotificationProvider as a4,
12673
+ Confirm as a5,
12674
+ ConfirmContext as a6,
12675
+ useConfirm as a7,
12676
+ ConfirmProvider as a8,
12677
+ SecureLabelPicker as a9,
12678
+ useApiErrorHandler as aa,
12679
+ useDefaultApiErrorHandler as ab,
12680
+ DefaultApiErrorHandler as ac,
12681
+ Back as ad,
12682
+ LazyEditor as ae,
12683
+ EditorPreview as af,
12684
+ DirtyPromptContainer as ag,
12685
+ ConfirmNavigation as ah,
12686
+ UploaderContext as ai,
12687
+ useUploader as aj,
12688
+ UploaderTrigger as ak,
12689
+ UploaderProvider as al,
12690
+ composeImageUrl as am,
12691
+ usePointUpContext as an,
12692
+ PointUpProvider as ao,
12693
+ ButtonGroup as ap,
12694
+ SegmentedControl as aq,
12695
+ create as ar,
12696
+ getWsClient as as,
12697
+ useSubscription as at,
11787
12698
  Input as b,
11788
12699
  useChanged as c,
11789
12700
  useSessionContext as d,
11790
12701
  utils as e,
11791
- typography as f,
12702
+ preferences as f,
11792
12703
  getExcerptSync as g,
11793
- themeOverrides as h,
12704
+ typography as h,
11794
12705
  inferInitialEditorState as i,
11795
- InternalThemeProvider as j,
11796
- Avatars as k,
12706
+ themeOverrides as j,
12707
+ InternalThemeProvider as k,
11797
12708
  lexical as l,
11798
- AuthorInfo as m,
11799
- SystemUser as n,
11800
- PostContent as o,
11801
- preferences as p,
11802
- PostComponent as q,
12709
+ Avatars as m,
12710
+ AuthorInfo as n,
12711
+ SystemUser as o,
12712
+ preloadInput as p,
12713
+ PostContent as q,
11803
12714
  routes as r,
11804
12715
  stringify as s,
11805
12716
  translations as t,
11806
12717
  useNow as u,
11807
- Comment as v,
11808
- CommentList as w,
11809
- CommentsContext as x,
11810
- useCommentsContext as y,
11811
- CommentsProvider as z
12718
+ PostComponent as v,
12719
+ Comment as w,
12720
+ CommentList as x,
12721
+ CommentsContext as y,
12722
+ useCommentsContext as z
11812
12723
  };