@zelloptt/react-native-zello-sdk 2.0.0 → 3.0.0

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 (196) hide show
  1. package/README.md +58 -15
  2. package/android/build.gradle +29 -10
  3. package/android/gradle.properties +4 -4
  4. package/android/src/main/java/com/zellosdk/ZelloAndroidSdkModule.kt +93 -68
  5. package/android/src/main/java/com/zellosdk/ZelloAndroidSdkModuleHelper.kt +25 -0
  6. package/ios/Extensions/ZelloContact+Extension.swift +26 -3
  7. package/ios/Extensions/ZelloHistoryVoiceMessage+Extension.swift +3 -0
  8. package/ios/Extensions/ZelloIOSSdkModule+Extension.swift +8 -2
  9. package/ios/Extensions/ZelloIncomingEmergency+Extension.swift +1 -0
  10. package/ios/Extensions/ZelloTranscription+Extension.swift +18 -0
  11. package/ios/ZelloIOSSdkModule.swift +24 -7
  12. package/ios/ZelloIOSSdkModuleBridge.m +1 -0
  13. package/ios/ZelloSdkModule.h +8 -0
  14. package/ios/ZelloSdkModule.mm +189 -0
  15. package/ios/ZelloSdkModuleImpl.swift +280 -0
  16. package/lib/commonjs/docs/assets/highlight.css +1 -1
  17. package/lib/commonjs/docs/assets/icons.js +1 -1
  18. package/lib/commonjs/docs/assets/icons.js.map +1 -1
  19. package/lib/commonjs/docs/assets/icons.svg +1 -1
  20. package/lib/commonjs/docs/assets/main.js +220 -288
  21. package/lib/commonjs/docs/assets/main.js.map +1 -1
  22. package/lib/commonjs/docs/assets/navigation.js +1 -1
  23. package/lib/commonjs/docs/assets/navigation.js.map +1 -1
  24. package/lib/commonjs/docs/assets/search.js +1 -1
  25. package/lib/commonjs/docs/assets/search.js.map +1 -1
  26. package/lib/commonjs/docs/assets/style.css +12 -4
  27. package/lib/commonjs/docs/classes/sdk.Zello.html +793 -97
  28. package/lib/commonjs/docs/classes/types.ZelloAlertMessage.html +122 -9
  29. package/lib/commonjs/docs/classes/types.ZelloChannel.html +155 -10
  30. package/lib/commonjs/docs/classes/types.ZelloChannelUser.html +86 -4
  31. package/lib/commonjs/docs/classes/types.ZelloDispatchCall.html +90 -6
  32. package/lib/commonjs/docs/classes/types.ZelloDispatchChannel.html +163 -11
  33. package/lib/commonjs/docs/classes/types.ZelloGroupConversation.html +178 -13
  34. package/lib/commonjs/docs/classes/types.ZelloHistoryAlertMessage.html +131 -10
  35. package/lib/commonjs/docs/classes/types.ZelloHistoryImageMessage.html +123 -9
  36. package/lib/commonjs/docs/classes/types.ZelloHistoryLocationMessage.html +155 -13
  37. package/lib/commonjs/docs/classes/types.ZelloHistoryTextMessage.html +131 -10
  38. package/lib/commonjs/docs/classes/types.ZelloHistoryVoiceMessage.html +145 -10
  39. package/lib/commonjs/docs/classes/types.ZelloImageMessage.html +130 -10
  40. package/lib/commonjs/docs/classes/types.ZelloIncomingEmergency.html +114 -9
  41. package/lib/commonjs/docs/classes/types.ZelloIncomingVoiceMessage.html +124 -8
  42. package/lib/commonjs/docs/classes/types.ZelloLocationMessage.html +146 -12
  43. package/lib/commonjs/docs/classes/types.ZelloOutgoingEmergency.html +98 -7
  44. package/lib/commonjs/docs/classes/types.ZelloOutgoingVoiceMessage.html +120 -9
  45. package/lib/commonjs/docs/classes/types.ZelloRecentEntry.html +114 -9
  46. package/lib/commonjs/docs/classes/types.ZelloTextMessage.html +122 -9
  47. package/lib/commonjs/docs/classes/types.ZelloTranscription.html +122 -0
  48. package/lib/commonjs/docs/classes/types.ZelloTranslation.html +91 -0
  49. package/lib/commonjs/docs/classes/types.ZelloUser.html +142 -11
  50. package/lib/commonjs/docs/classes/types.ZelloUserSupportedFeatures.html +82 -5
  51. package/lib/commonjs/docs/enums/events.ZelloEvent.html +563 -95
  52. package/lib/commonjs/docs/enums/types.ZelloAccountStatus.html +67 -5
  53. package/lib/commonjs/docs/enums/types.ZelloChannelAlertLevel.html +67 -5
  54. package/lib/commonjs/docs/enums/types.ZelloChannelConnectionStatus.html +68 -3
  55. package/lib/commonjs/docs/enums/types.ZelloChannelType.html +84 -0
  56. package/lib/commonjs/docs/enums/types.ZelloConnectionError.html +68 -3
  57. package/lib/commonjs/docs/enums/types.ZelloConnectionState.html +73 -3
  58. package/lib/commonjs/docs/enums/types.ZelloContactType.html +73 -3
  59. package/lib/commonjs/docs/enums/types.ZelloDispatchCallStatus.html +73 -3
  60. package/lib/commonjs/docs/enums/types.ZelloOutgoingVoiceMessageError.html +63 -3
  61. package/lib/commonjs/docs/enums/types.ZelloOutgoingVoiceMessageState.html +78 -3
  62. package/lib/commonjs/docs/enums/types.ZelloRecentEntryType.html +78 -3
  63. package/lib/commonjs/docs/enums/types.ZelloUserStatus.html +81 -7
  64. package/lib/commonjs/docs/hierarchy.html +29 -1
  65. package/lib/commonjs/docs/index.html +127 -29
  66. package/lib/commonjs/docs/interfaces/specs_NativeZelloSdk.Spec.html +504 -0
  67. package/lib/commonjs/docs/modules/events.html +37 -1
  68. package/lib/commonjs/docs/modules/index.html +37 -1
  69. package/lib/commonjs/docs/modules/sdk.html +37 -1
  70. package/lib/commonjs/docs/modules/specs_NativeZelloSdk.html +41 -0
  71. package/lib/commonjs/docs/modules/types.html +45 -1
  72. package/lib/commonjs/docs/modules.html +36 -1
  73. package/lib/commonjs/docs/types/types.ZelloChannelOptions.html +114 -9
  74. package/lib/commonjs/docs/types/types.ZelloConfig.html +86 -7
  75. package/lib/commonjs/docs/types/types.ZelloConsoleSettings.html +96 -9
  76. package/lib/commonjs/docs/types/types.ZelloContact.html +80 -6
  77. package/lib/commonjs/docs/types/types.ZelloCredentials.html +75 -6
  78. package/lib/commonjs/docs/types/types.ZelloHistoryMessage.html +97 -8
  79. package/lib/commonjs/docs/types/types.ZelloMessage.html +91 -7
  80. package/lib/commonjs/docs/variables/specs_NativeZelloSdk.default.html +34 -0
  81. package/lib/commonjs/events/index.js +217 -0
  82. package/lib/commonjs/events/index.js.map +1 -1
  83. package/lib/commonjs/sdk/index.js +731 -911
  84. package/lib/commonjs/sdk/index.js.map +1 -1
  85. package/lib/commonjs/specs/NativeZelloSdk.js +27 -0
  86. package/lib/commonjs/specs/NativeZelloSdk.js.map +1 -0
  87. package/lib/commonjs/types/index.js +423 -302
  88. package/lib/commonjs/types/index.js.map +1 -1
  89. package/lib/commonjs/utils/index.js +27 -4
  90. package/lib/commonjs/utils/index.js.map +1 -1
  91. package/lib/module/docs/assets/highlight.css +1 -1
  92. package/lib/module/docs/assets/icons.js +1 -1
  93. package/lib/module/docs/assets/icons.js.map +1 -1
  94. package/lib/module/docs/assets/icons.svg +1 -1
  95. package/lib/module/docs/assets/main.js +220 -288
  96. package/lib/module/docs/assets/main.js.map +1 -1
  97. package/lib/module/docs/assets/navigation.js +1 -1
  98. package/lib/module/docs/assets/navigation.js.map +1 -1
  99. package/lib/module/docs/assets/search.js +1 -1
  100. package/lib/module/docs/assets/search.js.map +1 -1
  101. package/lib/module/docs/assets/style.css +12 -4
  102. package/lib/module/docs/classes/sdk.Zello.html +793 -97
  103. package/lib/module/docs/classes/types.ZelloAlertMessage.html +122 -9
  104. package/lib/module/docs/classes/types.ZelloChannel.html +155 -10
  105. package/lib/module/docs/classes/types.ZelloChannelUser.html +86 -4
  106. package/lib/module/docs/classes/types.ZelloDispatchCall.html +90 -6
  107. package/lib/module/docs/classes/types.ZelloDispatchChannel.html +163 -11
  108. package/lib/module/docs/classes/types.ZelloGroupConversation.html +178 -13
  109. package/lib/module/docs/classes/types.ZelloHistoryAlertMessage.html +131 -10
  110. package/lib/module/docs/classes/types.ZelloHistoryImageMessage.html +123 -9
  111. package/lib/module/docs/classes/types.ZelloHistoryLocationMessage.html +155 -13
  112. package/lib/module/docs/classes/types.ZelloHistoryTextMessage.html +131 -10
  113. package/lib/module/docs/classes/types.ZelloHistoryVoiceMessage.html +145 -10
  114. package/lib/module/docs/classes/types.ZelloImageMessage.html +130 -10
  115. package/lib/module/docs/classes/types.ZelloIncomingEmergency.html +114 -9
  116. package/lib/module/docs/classes/types.ZelloIncomingVoiceMessage.html +124 -8
  117. package/lib/module/docs/classes/types.ZelloLocationMessage.html +146 -12
  118. package/lib/module/docs/classes/types.ZelloOutgoingEmergency.html +98 -7
  119. package/lib/module/docs/classes/types.ZelloOutgoingVoiceMessage.html +120 -9
  120. package/lib/module/docs/classes/types.ZelloRecentEntry.html +114 -9
  121. package/lib/module/docs/classes/types.ZelloTextMessage.html +122 -9
  122. package/lib/module/docs/classes/types.ZelloTranscription.html +122 -0
  123. package/lib/module/docs/classes/types.ZelloTranslation.html +91 -0
  124. package/lib/module/docs/classes/types.ZelloUser.html +142 -11
  125. package/lib/module/docs/classes/types.ZelloUserSupportedFeatures.html +82 -5
  126. package/lib/module/docs/enums/events.ZelloEvent.html +563 -95
  127. package/lib/module/docs/enums/types.ZelloAccountStatus.html +67 -5
  128. package/lib/module/docs/enums/types.ZelloChannelAlertLevel.html +67 -5
  129. package/lib/module/docs/enums/types.ZelloChannelConnectionStatus.html +68 -3
  130. package/lib/module/docs/enums/types.ZelloChannelType.html +84 -0
  131. package/lib/module/docs/enums/types.ZelloConnectionError.html +68 -3
  132. package/lib/module/docs/enums/types.ZelloConnectionState.html +73 -3
  133. package/lib/module/docs/enums/types.ZelloContactType.html +73 -3
  134. package/lib/module/docs/enums/types.ZelloDispatchCallStatus.html +73 -3
  135. package/lib/module/docs/enums/types.ZelloOutgoingVoiceMessageError.html +63 -3
  136. package/lib/module/docs/enums/types.ZelloOutgoingVoiceMessageState.html +78 -3
  137. package/lib/module/docs/enums/types.ZelloRecentEntryType.html +78 -3
  138. package/lib/module/docs/enums/types.ZelloUserStatus.html +81 -7
  139. package/lib/module/docs/hierarchy.html +29 -1
  140. package/lib/module/docs/index.html +127 -29
  141. package/lib/module/docs/interfaces/specs_NativeZelloSdk.Spec.html +504 -0
  142. package/lib/module/docs/modules/events.html +37 -1
  143. package/lib/module/docs/modules/index.html +37 -1
  144. package/lib/module/docs/modules/sdk.html +37 -1
  145. package/lib/module/docs/modules/specs_NativeZelloSdk.html +41 -0
  146. package/lib/module/docs/modules/types.html +45 -1
  147. package/lib/module/docs/modules.html +36 -1
  148. package/lib/module/docs/types/types.ZelloChannelOptions.html +114 -9
  149. package/lib/module/docs/types/types.ZelloConfig.html +86 -7
  150. package/lib/module/docs/types/types.ZelloConsoleSettings.html +96 -9
  151. package/lib/module/docs/types/types.ZelloContact.html +80 -6
  152. package/lib/module/docs/types/types.ZelloCredentials.html +75 -6
  153. package/lib/module/docs/types/types.ZelloHistoryMessage.html +97 -8
  154. package/lib/module/docs/types/types.ZelloMessage.html +91 -7
  155. package/lib/module/docs/variables/specs_NativeZelloSdk.default.html +34 -0
  156. package/lib/module/events/index.js +217 -0
  157. package/lib/module/events/index.js.map +1 -1
  158. package/lib/module/sdk/index.js +730 -912
  159. package/lib/module/sdk/index.js.map +1 -1
  160. package/lib/module/specs/NativeZelloSdk.js +25 -0
  161. package/lib/module/specs/NativeZelloSdk.js.map +1 -0
  162. package/lib/module/types/index.js +378 -301
  163. package/lib/module/types/index.js.map +1 -1
  164. package/lib/module/utils/index.js +27 -5
  165. package/lib/module/utils/index.js.map +1 -1
  166. package/lib/typescript/commonjs/src/events/index.d.ts +9 -0
  167. package/lib/typescript/commonjs/src/events/index.d.ts.map +1 -1
  168. package/lib/typescript/commonjs/src/sdk/index.d.ts +10 -0
  169. package/lib/typescript/commonjs/src/sdk/index.d.ts.map +1 -1
  170. package/lib/typescript/commonjs/src/specs/NativeZelloSdk.d.ts +55 -0
  171. package/lib/typescript/commonjs/src/specs/NativeZelloSdk.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/src/types/index.d.ts +106 -4
  173. package/lib/typescript/commonjs/src/types/index.d.ts.map +1 -1
  174. package/lib/typescript/commonjs/src/utils/index.d.ts +2 -1
  175. package/lib/typescript/commonjs/src/utils/index.d.ts.map +1 -1
  176. package/lib/typescript/module/src/events/index.d.ts +9 -0
  177. package/lib/typescript/module/src/events/index.d.ts.map +1 -1
  178. package/lib/typescript/module/src/index.d.ts +4 -4
  179. package/lib/typescript/module/src/index.d.ts.map +1 -1
  180. package/lib/typescript/module/src/sdk/index.d.ts +11 -1
  181. package/lib/typescript/module/src/sdk/index.d.ts.map +1 -1
  182. package/lib/typescript/module/src/specs/NativeZelloSdk.d.ts +55 -0
  183. package/lib/typescript/module/src/specs/NativeZelloSdk.d.ts.map +1 -0
  184. package/lib/typescript/module/src/types/index.d.ts +106 -4
  185. package/lib/typescript/module/src/types/index.d.ts.map +1 -1
  186. package/lib/typescript/module/src/utils/algorithms/index.d.ts +1 -1
  187. package/lib/typescript/module/src/utils/algorithms/index.d.ts.map +1 -1
  188. package/lib/typescript/module/src/utils/index.d.ts +2 -1
  189. package/lib/typescript/module/src/utils/index.d.ts.map +1 -1
  190. package/package.json +31 -15
  191. package/react-native-zello-sdk.podspec +26 -1
  192. package/src/events/index.ts +9 -0
  193. package/src/sdk/index.ts +106 -226
  194. package/src/specs/NativeZelloSdk.ts +89 -0
  195. package/src/types/index.ts +153 -6
  196. package/src/utils/index.ts +50 -3
@@ -4,6 +4,7 @@ extension ZelloIncomingEmergency {
4
4
  var jsonDictionary: [AnyHashable: Any] {
5
5
  var body: [AnyHashable: Any] = [
6
6
  "channel": channel.jsonDictionary,
7
+ "channelUser": channelUser.jsonDictionary,
7
8
  "channelUserName": channelUser.name,
8
9
  "emergencyId": id,
9
10
  "startTimestamp": startTimestamp.bridgeTimestamp
@@ -0,0 +1,18 @@
1
+ import ZelloSDK
2
+
3
+ extension ZelloTranscription {
4
+ var jsonDictionary: [AnyHashable: Any] {
5
+ return [
6
+ "text": text,
7
+ "language": language,
8
+ "isTruncated": isTruncated,
9
+ "confidence": confidence,
10
+ "translations": translations.map { translation in
11
+ [
12
+ "text": translation.text,
13
+ "language": translation.language
14
+ ]
15
+ }
16
+ ]
17
+ }
18
+ }
@@ -1,10 +1,15 @@
1
1
  import ZelloSDK
2
2
 
3
- @objc(ZelloIOSSdkModule) class ZelloIOSSdkModule: RCTEventEmitter {
3
+ @objc(ZelloIOSSdkModule) class ZelloIOSSdkModule: NSObject {
4
4
 
5
5
  private let bridgeEventName = "zellosdk"
6
6
  private let eventName = "eventName"
7
7
 
8
+ // Injected by React Native. The bridgeless-safe way to call a JS module
9
+ // (here RCTDeviceEventEmitter) from native; RCTEventEmitter's sendEvent path
10
+ // is not callable under the bridgeless New Architecture.
11
+ @objc var callableJSModules: RCTCallableJSModules?
12
+
8
13
  let zello = Zello.shared
9
14
 
10
15
  override init() {
@@ -160,6 +165,18 @@ import ZelloSDK
160
165
  }
161
166
  }
162
167
 
168
+ @objc func stopIncomingEmergency(_ emergencyId: String) {
169
+ DispatchQueue.main.async { [weak self] in
170
+ guard
171
+ let self,
172
+ let incomingEmergency = self.zello.incomingEmergencies.first(where: { $0.id == emergencyId })
173
+ else {
174
+ return
175
+ }
176
+ self.zello.stopIncomingEmergency(incomingEmergency)
177
+ }
178
+ }
179
+
163
180
  @objc func getHistory(_ name: String, contactType: String, maxMessages: Int, callback: RCTResponseSenderBlock) {
164
181
  guard let contact = contactFromType(contactType, name: name) else {
165
182
  callback(nil)
@@ -271,14 +288,14 @@ extension ZelloIOSSdkModule {
271
288
  func sendSdkEvent(withName name: String, body: [AnyHashable: Any]?) {
272
289
  var eventBody = body ?? [:]
273
290
  eventBody[eventName] = name
274
- sendEvent(withName: bridgeEventName, body: eventBody)
275
- }
276
-
277
- override func supportedEvents() -> [String]! {
278
- return [bridgeEventName]
291
+ callableJSModules?.invokeModule(
292
+ "RCTDeviceEventEmitter",
293
+ method: "emit",
294
+ withArgs: [bridgeEventName, eventBody]
295
+ )
279
296
  }
280
297
 
281
- override class func requiresMainQueueSetup() -> Bool {
298
+ @objc static func requiresMainQueueSetup() -> Bool {
282
299
  return true
283
300
  }
284
301
  }
@@ -35,6 +35,7 @@ RCT_EXTERN_METHOD(unmuteContact:(NSString *)name contactType:(NSString *)contact
35
35
 
36
36
  RCT_EXTERN_METHOD(startEmergency)
37
37
  RCT_EXTERN_METHOD(stopEmergency)
38
+ RCT_EXTERN_METHOD(stopIncomingEmergency:(NSString *)emergencyId)
38
39
 
39
40
  RCT_EXTERN_METHOD(getHistory:(NSString *)name contactType:(NSString *)contactType maxMessages:(NSInteger)maxMessages callback:(RCTResponseSenderBlock)callback)
40
41
 
@@ -0,0 +1,8 @@
1
+ #import <React/RCTBridgeModule.h>
2
+
3
+ // Keep this header free of the generated spec import: the spec header
4
+ // (RNZelloSdkSpec.h) is Objective-C++ only, and this header is pulled into the
5
+ // pod's Swift umbrella. The `<NativeZelloSdkSpec>` conformance and the C++
6
+ // TurboModule glue live in ZelloSdkModule.mm instead.
7
+ @interface ZelloSdkModule : NSObject <RCTBridgeModule>
8
+ @end
@@ -0,0 +1,189 @@
1
+ #import "ZelloSdkModule.h"
2
+
3
+ // Generated Swift interface header for this pod (module name derived from the
4
+ // podspec name `react-native-zello-sdk`). Use the framework-style import when
5
+ // built with use_frameworks!, falling back to the flat header otherwise.
6
+ #if __has_include(<react_native_zello_sdk/react_native_zello_sdk-Swift.h>)
7
+ #import <react_native_zello_sdk/react_native_zello_sdk-Swift.h>
8
+ #else
9
+ #import "react_native_zello_sdk-Swift.h"
10
+ #endif
11
+
12
+ #ifdef RCT_NEW_ARCH_ENABLED
13
+ // The generated spec header is Objective-C++ only, so it is imported here in
14
+ // the .mm rather than in the public .h. Conformance is declared via a class
15
+ // extension so the public interface stays Swift-umbrella safe.
16
+ #import "RNZelloSdkSpec.h"
17
+
18
+ @interface ZelloSdkModule () <NativeZelloSdkSpec>
19
+ @end
20
+ #endif
21
+
22
+ @implementation ZelloSdkModule {
23
+ ZelloSdkModuleImpl *_impl;
24
+ }
25
+
26
+ RCT_EXPORT_MODULE(NativeZelloSdk)
27
+
28
+ - (instancetype)init {
29
+ if (self = [super init]) {
30
+ _impl = [ZelloSdkModuleImpl new];
31
+ }
32
+ return self;
33
+ }
34
+
35
+ + (BOOL)requiresMainQueueSetup {
36
+ return YES;
37
+ }
38
+
39
+ #ifdef RCT_NEW_ARCH_ENABLED
40
+
41
+ - (void)configure:(NSDictionary *)config {
42
+ [_impl configure:config];
43
+ }
44
+
45
+ - (void)connect:(NSString *)network username:(NSString *)username password:(NSString *)password {
46
+ [_impl connect:network username:username password:password];
47
+ }
48
+
49
+ - (void)disconnect {
50
+ [_impl disconnect];
51
+ }
52
+
53
+ - (void)setAccountStatus:(NSString *)status {
54
+ [_impl setAccountStatus:status];
55
+ }
56
+
57
+ - (void)selectContact:(NSString *)name contactType:(NSString *)contactType {
58
+ [_impl selectContact:name contactType:contactType];
59
+ }
60
+
61
+ - (void)startVoiceMessage:(NSString *)name contactType:(NSString *)contactType {
62
+ [_impl startVoiceMessage:name contactType:contactType];
63
+ }
64
+
65
+ - (void)stopVoiceMessage {
66
+ [_impl stopVoiceMessage];
67
+ }
68
+
69
+ - (void)sendImage:(NSString *)name contactType:(NSString *)contactType data:(NSArray *)data {
70
+ [_impl sendImage:name contactType:contactType data:data];
71
+ }
72
+
73
+ - (void)sendLocation:(NSString *)name contactType:(NSString *)contactType {
74
+ [_impl sendLocation:name contactType:contactType];
75
+ }
76
+
77
+ - (void)sendText:(NSString *)name contactType:(NSString *)contactType text:(NSString *)text {
78
+ [_impl sendText:name contactType:contactType text:text];
79
+ }
80
+
81
+ - (void)sendAlert:(NSString *)name
82
+ contactType:(NSString *)contactType
83
+ text:(NSString *)text
84
+ level:(NSString *)level {
85
+ [_impl sendAlert:name contactType:contactType text:text level:level];
86
+ }
87
+
88
+ - (void)connectChannel:(NSString *)name {
89
+ [_impl connectChannel:name];
90
+ }
91
+
92
+ - (void)disconnectChannel:(NSString *)name {
93
+ [_impl disconnectChannel:name];
94
+ }
95
+
96
+ - (void)connectGroupConversation:(NSString *)name {
97
+ [_impl connectGroupConversation:name];
98
+ }
99
+
100
+ - (void)disconnectGroupConversation:(NSString *)name {
101
+ [_impl disconnectGroupConversation:name];
102
+ }
103
+
104
+ - (void)submitProblemReport {
105
+ [_impl submitProblemReport];
106
+ }
107
+
108
+ - (void)muteContact:(NSString *)name contactType:(NSString *)contactType {
109
+ [_impl muteContact:name contactType:contactType];
110
+ }
111
+
112
+ - (void)unmuteContact:(NSString *)name contactType:(NSString *)contactType {
113
+ [_impl unmuteContact:name contactType:contactType];
114
+ }
115
+
116
+ - (void)startEmergency {
117
+ [_impl startEmergency];
118
+ }
119
+
120
+ - (void)stopEmergency {
121
+ [_impl stopEmergency];
122
+ }
123
+
124
+ - (void)stopIncomingEmergency:(NSString *)emergencyId {
125
+ [_impl stopIncomingEmergency:emergencyId];
126
+ }
127
+
128
+ - (void)getHistory:(NSString *)name
129
+ contactType:(NSString *)contactType
130
+ maxMessages:(double)maxMessages
131
+ resolve:(RCTPromiseResolveBlock)resolve
132
+ reject:(RCTPromiseRejectBlock)reject {
133
+ [_impl getHistory:name
134
+ contactType:contactType
135
+ maxMessages:(NSInteger)maxMessages
136
+ resolve:resolve
137
+ reject:reject];
138
+ }
139
+
140
+ - (void)playHistoryMessage:(NSString *)historyId
141
+ contactName:(NSString *)contactName
142
+ contactType:(NSString *)contactType {
143
+ [_impl playHistoryMessage:historyId contactName:contactName contactType:contactType];
144
+ }
145
+
146
+ - (void)stopHistoryMessagePlayback {
147
+ [_impl stopHistoryMessagePlayback];
148
+ }
149
+
150
+ - (void)getHistoryImageData:(NSString *)historyId
151
+ contactName:(NSString *)contactName
152
+ contactType:(NSString *)contactType
153
+ resolve:(RCTPromiseResolveBlock)resolve
154
+ reject:(RCTPromiseRejectBlock)reject {
155
+ [_impl getHistoryImageData:historyId
156
+ contactName:contactName
157
+ contactType:contactType
158
+ resolve:resolve
159
+ reject:reject];
160
+ }
161
+
162
+ - (void)endDispatchCall:(NSString *)channelName {
163
+ [_impl endDispatchCall:channelName];
164
+ }
165
+
166
+ - (void)createGroupConversation:(NSArray *)usernames displayName:(NSString *)displayName {
167
+ [_impl createGroupConversation:usernames displayName:displayName];
168
+ }
169
+
170
+ - (void)addUsersToGroupConversation:(NSString *)conversationName usernames:(NSArray *)usernames {
171
+ [_impl addUsersToGroupConversation:conversationName usernames:usernames];
172
+ }
173
+
174
+ - (void)leaveGroupConversation:(NSString *)conversationName {
175
+ [_impl leaveGroupConversation:conversationName];
176
+ }
177
+
178
+ - (void)renameGroupConversation:(NSString *)conversationName newName:(NSString *)newName {
179
+ [_impl renameGroupConversation:conversationName newName:newName];
180
+ }
181
+
182
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
183
+ (const facebook::react::ObjCTurboModule::InitParams &)params {
184
+ return std::make_shared<facebook::react::NativeZelloSdkSpecJSI>(params);
185
+ }
186
+
187
+ #endif
188
+
189
+ @end
@@ -0,0 +1,280 @@
1
+ import Foundation
2
+ import React
3
+ import ZelloSDK
4
+
5
+ /**
6
+ * Swift implementation backing the `NativeZelloSdk` TurboModule.
7
+ *
8
+ * The TurboModule itself is the Objective-C++ class `ZelloSdkModule` (see
9
+ * `ZelloSdkModule.mm`), which forwards each method here. All calls operate on
10
+ * the `Zello.shared` singleton, which is the same instance the event-emitter
11
+ * module (`ZelloIOSSdkModule`) observes as its delegate.
12
+ */
13
+ @objc(ZelloSdkModuleImpl)
14
+ public class ZelloSdkModuleImpl: NSObject {
15
+
16
+ private let zello = Zello.shared
17
+
18
+ @objc public func configure(_ config: NSDictionary) {
19
+ let options = Config(config)
20
+ // ZelloConfiguration is applied by assigning Zello.configuration; there is
21
+ // no configure() method on the SDK. (Master built this value but never
22
+ // assigned it, so appGroup/pushNotificationEnvironment were silently ignored.)
23
+ zello.configuration = ZelloConfiguration(
24
+ pushNotificationEnvironment: options.isDebugBuild ? .development : .production,
25
+ appGroup: options.appGroup
26
+ )
27
+ }
28
+
29
+ /// Typed view over the `configure(config)` payload.
30
+ ///
31
+ /// The TurboModule boundary is an untyped object — the codegen spec declares
32
+ /// `configure(config: UnsafeObject)` (→ `NSDictionary` here) because the
33
+ /// configuration is platform-specific and iOS only consumes the `ios` slice.
34
+ /// Decoding into this struct keeps the rest of the method type-safe and keeps
35
+ /// every assumption about the payload's shape in one place.
36
+ private struct Config {
37
+ let isDebugBuild: Bool
38
+ let appGroup: String?
39
+
40
+ init(_ config: NSDictionary) {
41
+ let ios = config["ios"] as? [String: Any]
42
+ isDebugBuild = ios?["isDebugBuild"] as? Bool ?? false
43
+ // Treat a missing or empty app group as "none".
44
+ appGroup = (ios?["appGroup"] as? String).flatMap { $0.isEmpty ? nil : $0 }
45
+ }
46
+ }
47
+
48
+ @objc public func connect(_ network: String, username: String, password: String) {
49
+ zello.connect(credentials: ZelloCredentials(username: username, network: network, password: password))
50
+ }
51
+
52
+ @objc public func disconnect() {
53
+ zello.disconnect()
54
+ }
55
+
56
+ @objc public func setAccountStatus(_ status: String) {
57
+ let accountStatus: ZelloAccountStatus
58
+ switch status {
59
+ case "available":
60
+ accountStatus = .available
61
+ case "busy":
62
+ accountStatus = .busy
63
+ default:
64
+ return
65
+ }
66
+ zello.setAccountStatus(status: accountStatus)
67
+ }
68
+
69
+ @objc public func selectContact(_ name: String, contactType: String) {
70
+ guard let contact = contactFromType(contactType, name: name) else { return }
71
+ zello.setSelectedContact(contact: contact)
72
+ }
73
+
74
+ @objc public func startVoiceMessage(_ name: String, contactType: String) {
75
+ guard let contact = contactFromType(contactType, name: name) else { return }
76
+ zello.startVoiceMessage(contact: contact)
77
+ }
78
+
79
+ @objc public func stopVoiceMessage() {
80
+ zello.stopVoiceMessage()
81
+ }
82
+
83
+ @objc public func sendImage(_ name: String, contactType: String, data: [Int]) {
84
+ guard let contact = contactFromType(contactType, name: name) else { return }
85
+ let byteArray = data.map { UInt8($0) }
86
+ let imageData = Data(byteArray)
87
+ guard let image = UIImage(data: imageData) else { return }
88
+ zello.send(image, to: contact)
89
+ }
90
+
91
+ @objc public func sendLocation(_ name: String, contactType: String) {
92
+ guard let contact = contactFromType(contactType, name: name) else { return }
93
+ zello.sendLocation(to: contact)
94
+ }
95
+
96
+ @objc public func sendText(_ name: String, contactType: String, text: String) {
97
+ guard let contact = contactFromType(contactType, name: name) else { return }
98
+ zello.send(textMessage: text, to: contact)
99
+ }
100
+
101
+ @objc public func sendAlert(_ name: String, contactType: String, text: String, level: String?) {
102
+ guard let contact = contactFromType(contactType, name: name) else { return }
103
+ var alertLevel: ZelloAlertMessage.ChannelLevel? = nil
104
+ if contact.isZelloChannel || contact.isZelloGroupConversation {
105
+ switch level {
106
+ case "all":
107
+ alertLevel = .all
108
+ case "connected":
109
+ alertLevel = .connected
110
+ default:
111
+ return
112
+ }
113
+ }
114
+ zello.send(alertMessage: text, to: contact, using: alertLevel)
115
+ }
116
+
117
+ @objc public func connectChannel(_ name: String) {
118
+ guard let channel = zello.channel(named: name) else { return }
119
+ zello.connect(to: channel)
120
+ }
121
+
122
+ @objc public func disconnectChannel(_ name: String) {
123
+ guard let channel = zello.channel(named: name) else { return }
124
+ zello.disconnect(from: channel)
125
+ }
126
+
127
+ @objc public func connectGroupConversation(_ name: String) {
128
+ guard let conversation = zello.conversation(named: name) else { return }
129
+ zello.connect(to: conversation)
130
+ }
131
+
132
+ @objc public func disconnectGroupConversation(_ name: String) {
133
+ guard let conversation = zello.conversation(named: name) else { return }
134
+ zello.disconnect(from: conversation)
135
+ }
136
+
137
+ @objc public func submitProblemReport() {
138
+ zello.submitReport()
139
+ }
140
+
141
+ @objc public func muteContact(_ name: String, contactType: String) {
142
+ guard let contact = contactFromType(contactType, name: name) else { return }
143
+ zello.muteContact(contact: contact)
144
+ }
145
+
146
+ @objc public func unmuteContact(_ name: String, contactType: String) {
147
+ guard let contact = contactFromType(contactType, name: name) else { return }
148
+ zello.unmuteContact(contact: contact)
149
+ }
150
+
151
+ @objc public func startEmergency() {
152
+ zello.startEmergency()
153
+ }
154
+
155
+ @objc public func stopEmergency() {
156
+ DispatchQueue.main.async { [weak self] in
157
+ self?.zello.stopEmergency()
158
+ }
159
+ }
160
+
161
+ @objc public func stopIncomingEmergency(_ emergencyId: String) {
162
+ DispatchQueue.main.async { [weak self] in
163
+ guard
164
+ let self,
165
+ let incomingEmergency = self.zello.incomingEmergencies.first(where: { $0.id == emergencyId })
166
+ else {
167
+ return
168
+ }
169
+ self.zello.stopIncomingEmergency(incomingEmergency)
170
+ }
171
+ }
172
+
173
+ @objc public func getHistory(
174
+ _ name: String,
175
+ contactType: String,
176
+ maxMessages: Int,
177
+ resolve: @escaping RCTPromiseResolveBlock,
178
+ reject: @escaping RCTPromiseRejectBlock
179
+ ) {
180
+ guard let contact = contactFromType(contactType, name: name) else {
181
+ resolve([])
182
+ return
183
+ }
184
+ let messages = zello.getHistory(contact: contact, maxMessages: maxMessages)
185
+ resolve(messages.compactMap { message in
186
+ if let message = message as? ZelloHistoryVoiceMessage {
187
+ return message.jsonDictionary
188
+ } else if let message = message as? ZelloHistoryImageMessage {
189
+ return message.jsonDictionary
190
+ } else if let message = message as? ZelloHistoryTextMessage {
191
+ return message.jsonDictionary
192
+ } else if let message = message as? ZelloHistoryAlertMessage {
193
+ return message.jsonDictionary
194
+ } else if let message = message as? ZelloHistoryLocationMessage {
195
+ return message.jsonDictionary
196
+ }
197
+ return nil
198
+ })
199
+ }
200
+
201
+ @objc public func playHistoryMessage(_ historyId: String, contactName: String, contactType: String) {
202
+ guard
203
+ let contact = contactFromType(contactType, name: contactName),
204
+ let message = zello.getHistoryMessage(historyId, contact: contact) as? ZelloHistoryVoiceMessage
205
+ else {
206
+ return
207
+ }
208
+ zello.playHistoryMessage(message)
209
+ }
210
+
211
+ @objc public func stopHistoryMessagePlayback() {
212
+ zello.stopHistoryMessagePlayback()
213
+ }
214
+
215
+ @objc public func getHistoryImageData(
216
+ _ historyId: String,
217
+ contactName: String,
218
+ contactType: String,
219
+ resolve: @escaping RCTPromiseResolveBlock,
220
+ reject: @escaping RCTPromiseRejectBlock
221
+ ) {
222
+ guard
223
+ let contact = contactFromType(contactType, name: contactName),
224
+ let message = zello.getHistoryMessage(historyId, contact: contact) as? ZelloHistoryImageMessage,
225
+ let image = zello.loadHistoryImage(for: message),
226
+ let base64String = image.base64String
227
+ else {
228
+ resolve(nil)
229
+ return
230
+ }
231
+ resolve(base64String)
232
+ }
233
+
234
+ @objc public func endDispatchCall(_ channelName: String) {
235
+ guard
236
+ let dispatchChannel = zello.channel(named: channelName),
237
+ let call = dispatchChannel.dispatchInfo?.currentCall
238
+ else {
239
+ return
240
+ }
241
+ zello.end(call, on: dispatchChannel)
242
+ }
243
+
244
+ @objc public func createGroupConversation(_ usernames: [Any], displayName: String?) {
245
+ let users = usernames.compactMap { username in zello.user(named: username as? String ?? "") }
246
+ zello.createGroupConversation(users: users, displayName: displayName)
247
+ }
248
+
249
+ @objc public func addUsersToGroupConversation(_ conversationName: String, usernames: [Any]) {
250
+ guard let conversation = zello.conversation(named: conversationName) else { return }
251
+ let users = usernames.compactMap { username in zello.user(named: username as? String ?? "") }
252
+ zello.add(users, to: conversation)
253
+ }
254
+
255
+ @objc public func leaveGroupConversation(_ conversationName: String) {
256
+ guard let conversation = zello.conversation(named: conversationName) else { return }
257
+ zello.leave(conversation)
258
+ }
259
+
260
+ @objc public func renameGroupConversation(_ conversationName: String, newName: String) {
261
+ guard let conversation = zello.conversation(named: conversationName) else { return }
262
+ zello.rename(conversation, to: newName)
263
+ }
264
+
265
+ // MARK: - Helpers
266
+
267
+ private func contactFromType(_ type: String, name: String) -> ZelloContact? {
268
+ if type == "user" {
269
+ guard let user = zello.user(named: name) else { return nil }
270
+ return ZelloContact.user(user)
271
+ } else if type == "channel" || type == "dispatchChannel" {
272
+ guard let channel = zello.channel(named: name) else { return nil }
273
+ return ZelloContact.channel(channel)
274
+ } else if type == "groupConversation" {
275
+ guard let conversation = zello.conversation(named: name) else { return nil }
276
+ return ZelloContact.conversation(conversation)
277
+ }
278
+ return nil
279
+ }
280
+ }
@@ -75,4 +75,4 @@
75
75
  .hl-5 { color: var(--hl-5); }
76
76
  .hl-6 { color: var(--hl-6); }
77
77
  .hl-7 { color: var(--hl-7); }
78
- pre, code { background: var(--code-background); }
78
+ pre, code, math[display='block'] { background: var(--code-background); }
@@ -5,7 +5,7 @@
5
5
  function addIcons() {
6
6
  if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons);
7
7
  const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg"));
8
- svg.innerHTML = `<g id="icon-1" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-2" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-4" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">N</text></g><g id="icon-8" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-enum)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">E</text></g><g id="icon-16" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-32" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-variable)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">V</text></g><g id="icon-64" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">F</text></g><g id="icon-128" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-256" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-interface)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">I</text></g><g id="icon-512" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-1024" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-2048" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-method)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-4096" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">F</text></g><g id="icon-8192" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-16384" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-32768" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-65536" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-131072" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-262144" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-524288" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-1048576" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-2097152" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-4194304" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-reference)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">R</text></g><g id="icon-8388608" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="6,5 6,19 18,19, 18,10 13,5"></polygon><line x1="9" y1="9" x2="13" y2="9"></line><line x1="9" y1="12" x2="15" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line></g></g><g id="icon-folder" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="5,5 10,5 12,8 19,8 19,18 5,18"></polygon></g></g><g id="icon-chevronDown" class="tsd-no-select"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-icon-text)"></path></g><g id="icon-chevronSmall" class="tsd-no-select"><path d="M1.5 5.50969L8 11.6609L14.5 5.50969L12.5466 3.66086L8 7.96494L3.45341 3.66086L1.5 5.50969Z" fill="var(--color-icon-text)"></path></g><g id="icon-checkbox" class="tsd-no-select"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></g><g id="icon-menu" class="tsd-no-select"><rect x="1" y="3" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-icon-text)"></rect></g><g id="icon-search" class="tsd-no-select"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 12.5238 10.7195 12.6644L13.8354 15.7797C14.1292 16.0734 14.6042 16.0734 14.8948 15.7797L15.7793 14.8954C16.0731 14.6017 16.0731 14.1267 15.7824 13.833ZM6.50048 10.499C4.29094 10.499 2.50018 8.71165 2.50018 6.49937C2.50018 4.29021 4.28781 2.49976 6.50048 2.49976C8.71001 2.49976 10.5008 4.28708 10.5008 6.49937C10.5008 8.70852 8.71314 10.499 6.50048 10.499Z" fill="var(--color-icon-text)"></path></g><g id="icon-anchor" class="tsd-no-select"><g stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></g></g><g id="icon-alertNote" class="tsd-no-select"><path fill="var(--color-alert-note)" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></g><g id="icon-alertTip" class="tsd-no-select"><path fill="var(--color-alert-tip)" d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></g><g id="icon-alertImportant" class="tsd-no-select"><path fill="var(--color-alert-important)" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></g><g id="icon-alertWarning" class="tsd-no-select"><path fill="var(--color-alert-warning)" d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></g><g id="icon-alertCaution" class="tsd-no-select"><path fill="var(--color-alert-caution)" d="M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></g>`;
8
+ svg.innerHTML = `<symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Module" id="icon-1"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">M</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Module" id="icon-2"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">M</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Namespace" id="icon-4"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">N</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Enumeration" id="icon-8"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-enum)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">E</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Enumeration Member" id="icon-16"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">P</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Variable" id="icon-32"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-variable)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">V</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Function" id="icon-64"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">F</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Class" id="icon-128"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">C</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Interface" id="icon-256"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-interface)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">I</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Constructor" id="icon-512"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">C</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Property" id="icon-1024"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">P</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Method" id="icon-2048"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-method)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">M</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Function" id="icon-4096"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">F</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Index Signature" id="icon-8192"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">P</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Constructor" id="icon-16384"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">C</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Property" id="icon-32768"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">P</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Type Alias" id="icon-65536"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">T</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Type Alias" id="icon-131072"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">T</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Accessor" id="icon-262144"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">A</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Accessor" id="icon-524288"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">A</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Accessor" id="icon-1048576"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">A</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Type Alias" id="icon-2097152"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">T</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Reference" id="icon-4194304"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-reference)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dy="0.35em" text-anchor="middle">R</text></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Document" id="icon-8388608"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="6,5 6,19 18,19, 18,10 13,5"></polygon><line x1="9" y1="9" x2="13" y2="9"></line><line x1="9" y1="12" x2="15" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line></g></symbol><symbol class="tsd-kind-icon tsd-no-select" viewBox="0 0 24 24" aria-label="Folder" id="icon-folder"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="5,5 10,5 12,8 19,8 19,18 5,18"></polygon></g></symbol><symbol width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true" id="icon-chevronDown" class="tsd-no-select"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-icon-text)"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" id="icon-chevronSmall" class="tsd-no-select"><path d="M1.5 5.50969L8 11.6609L14.5 5.50969L12.5466 3.66086L8 7.96494L3.45341 3.66086L1.5 5.50969Z" fill="var(--color-icon-text)"></path></symbol><symbol width="32" height="32" viewBox="0 0 32 32" aria-hidden="true" id="icon-checkbox" class="tsd-no-select"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" id="icon-menu" class="tsd-no-select"><rect x="1" y="3" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-icon-text)"></rect></symbol><symbol width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" id="icon-search" class="tsd-no-select"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 12.5238 10.7195 12.6644L13.8354 15.7797C14.1292 16.0734 14.6042 16.0734 14.8948 15.7797L15.7793 14.8954C16.0731 14.6017 16.0731 14.1267 15.7824 13.833ZM6.50048 10.499C4.29094 10.499 2.50018 8.71165 2.50018 6.49937C2.50018 4.29021 4.28781 2.49976 6.50048 2.49976C8.71001 2.49976 10.5008 4.28708 10.5008 6.49937C10.5008 8.70852 8.71314 10.499 6.50048 10.499Z" fill="var(--color-icon-text)"></path></symbol><symbol viewBox="0 0 24 24" aria-hidden="true" id="icon-anchor" class="tsd-no-select"><g stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></g></symbol><symbol xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertNote" class="tsd-no-select"><path fill="var(--color-alert-note)" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertTip" class="tsd-no-select"><path fill="var(--color-alert-tip)" d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertImportant" class="tsd-no-select"><path fill="var(--color-alert-important)" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertWarning" class="tsd-no-select"><path fill="var(--color-alert-warning)" d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></symbol><symbol width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" id="icon-alertCaution" class="tsd-no-select"><path fill="var(--color-alert-caution)" d="M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></symbol>`;
9
9
  svg.style.display = "none";
10
10
  if (location.protocol === "file:") updateUseElements();
11
11
  }