@kaspernj/api-maker 1.0.2087 → 1.0.2089
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +231 -16
- package/build/collection.js +2 -2
- package/build/draggable-sort/index.js +2 -2
- package/build/draggable-sort/item.js +2 -2
- package/build/event-emitter-listener.js +2 -2
- package/build/super-admin/edit-page/edit-attribute-content.js +15 -5
- package/build/super-admin/layout/header/index.js +3 -3
- package/build/super-admin/layout/index.js +2 -2
- package/build/super-admin/layout/menu/index.js +2 -2
- package/build/table/components/row.js +2 -2
- package/build/table/filters/filter-form.js +2 -2
- package/build/table/header-column.js +2 -2
- package/build/table/model-column.js +2 -2
- package/build/table/table.js +3 -3
- package/build/use-can-can.js +2 -2
- package/build/use-current-user-context.js +2 -2
- package/build/use-screen-layout.js +2 -2
- package/build/use-styles.js +2 -2
- package/build/use-validation-errors.js +2 -2
- package/build/utils/modal.js +2 -2
- package/package.json +6 -3
- package/build/use-breakpoint.d.ts +0 -3
- package/build/use-breakpoint.d.ts.map +0 -1
- package/build/use-breakpoint.js +0 -86
- package/build/use-event-emitter.d.ts +0 -8
- package/build/use-event-emitter.d.ts.map +0 -1
- package/build/use-event-emitter.js +0 -28
- package/build/use-event-listener.d.ts +0 -9
- package/build/use-event-listener.d.ts.map +0 -1
- package/build/use-event-listener.js +0 -30
package/README.md
CHANGED
|
@@ -1,35 +1,250 @@
|
|
|
1
|
-
# api-maker
|
|
1
|
+
# @kaspernj/api-maker
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Client-side library for ApiMaker-powered Rails APIs. It provides model classes, collections, and UI helpers for web and React Native apps, backed by the JSON payloads generated by the ApiMaker server gem.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
```bash
|
|
8
|
+
npm install @kaspernj/api-maker
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick start
|
|
12
|
+
|
|
13
|
+
ApiMaker models are generated from `model-recipes.json` (usually emitted by the Rails gem). Import the models and set up the shared config before making requests.
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
import config from "@kaspernj/api-maker/build/config"
|
|
17
|
+
import Models from "@kaspernj/api-maker/build/models"
|
|
18
|
+
import history from "./history"
|
|
19
|
+
import routes from "./routes"
|
|
20
|
+
|
|
21
|
+
const {Account, Project, User} = Models
|
|
22
|
+
|
|
23
|
+
config.setHistory(history)
|
|
24
|
+
config.setLinkTo((path) => history.push(path))
|
|
25
|
+
config.setNavigation({
|
|
26
|
+
navigate: (routeName, params) => history.push(routes[routeName](params))
|
|
27
|
+
})
|
|
28
|
+
config.setRoutes(routes)
|
|
29
|
+
config.setCurrenciesCollection([
|
|
30
|
+
["US Dollar", "usd"],
|
|
31
|
+
["Euro", "eur"]
|
|
32
|
+
])
|
|
33
|
+
|
|
34
|
+
const users = await User.ransack({name_cont: "sam"}).per(20).toArray()
|
|
35
|
+
const user = await User.find("a0f3842b-1e4c-4e9d-8f2d-cd021e5a9b6a")
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Models and collections
|
|
39
|
+
|
|
40
|
+
Models are generated from the server recipes and inherit `BaseModel`. Collections let you compose queries fluently and then execute them with `toArray()`.
|
|
41
|
+
|
|
42
|
+
```js
|
|
43
|
+
const activeProjects = await Project
|
|
44
|
+
.ransack({state_eq: "active"})
|
|
45
|
+
.preload(["owner"])
|
|
46
|
+
.sort("created_at desc")
|
|
47
|
+
.toArray()
|
|
48
|
+
|
|
49
|
+
const firstProject = await Project.ransack({name_cont: "api"}).first()
|
|
50
|
+
const totalCount = await Project.ransack().count()
|
|
51
|
+
```
|
|
9
52
|
|
|
10
|
-
|
|
53
|
+
## Relationship loading and preloading
|
|
11
54
|
|
|
12
|
-
|
|
55
|
+
Relationship accessors are generated from the recipe. For a relationship named `account`, you get:
|
|
13
56
|
|
|
14
|
-
|
|
57
|
+
- `user.account()` to read a cached relationship.
|
|
58
|
+
- `user.loadAccount()` to fetch it from the API.
|
|
15
59
|
|
|
16
|
-
|
|
60
|
+
Reading a relationship before it is loaded raises `NotLoadedError` unless the model is new.
|
|
17
61
|
|
|
18
|
-
###
|
|
62
|
+
### Requesting preloads from the server
|
|
19
63
|
|
|
64
|
+
Use `preload` on a collection to have the server include related records in the response. ApiMaker stores those models in the relationship cache automatically.
|
|
65
|
+
|
|
66
|
+
```js
|
|
67
|
+
const users = await User
|
|
68
|
+
.ransack()
|
|
69
|
+
.preload(["account", "roles"])
|
|
70
|
+
.toArray()
|
|
71
|
+
|
|
72
|
+
users[0].account()
|
|
20
73
|
```
|
|
21
|
-
|
|
74
|
+
|
|
75
|
+
### Manually preloading with `preloadRelationship`
|
|
76
|
+
|
|
77
|
+
When you already have related model instances (for example after creating records or from another response), you can mark a relationship as loaded without another request.
|
|
78
|
+
|
|
79
|
+
```js
|
|
80
|
+
const user = await User.find("a0f3842b-1e4c-4e9d-8f2d-cd021e5a9b6a")
|
|
81
|
+
const account = await Account.find("f6c0b2b3-0a37-4e6e-ae3a-2e6a38e3953d")
|
|
82
|
+
|
|
83
|
+
user.preloadRelationship("account", account)
|
|
84
|
+
user.account()
|
|
22
85
|
```
|
|
23
86
|
|
|
24
|
-
|
|
87
|
+
`preloadRelationship` accepts:
|
|
88
|
+
|
|
89
|
+
- A single model (for `belongs_to` / `has_one` relationships).
|
|
90
|
+
- An array of models (for `has_many` relationships).
|
|
91
|
+
- `null` when the relationship is known to be empty.
|
|
25
92
|
|
|
93
|
+
The relationship name is stored in `snake_case`, so `preloadRelationship("Account", account)` and `preloadRelationship("account", account)` are equivalent. After preloading, both `account()` and `loadAccount()` return the cached value without hitting the network.
|
|
26
94
|
|
|
95
|
+
## Configuration notes
|
|
27
96
|
|
|
97
|
+
`config` is a shared singleton. Some helpers (forms, routing, navigation, and money inputs) require config values like `history`, `linkTo`, `navigation`, and `currenciesCollection` to be set. If a required value is missing, the getter throws an error to avoid silent failures.
|
|
28
98
|
|
|
29
|
-
|
|
99
|
+
## API reference
|
|
30
100
|
|
|
31
|
-
|
|
101
|
+
ApiMaker generates model classes from your recipes. The classes inherit `BaseModel` and expose relationship helpers based on your server-side associations.
|
|
32
102
|
|
|
33
|
-
|
|
103
|
+
### Relationship helpers (generated)
|
|
104
|
+
|
|
105
|
+
For a relationship named `account`, the model class gets:
|
|
106
|
+
|
|
107
|
+
- `user.account()` to read the cached relationship.
|
|
108
|
+
- `user.loadAccount()` to fetch it from the API.
|
|
109
|
+
|
|
110
|
+
For `has_many`, the getter returns a `Collection` for that relationship:
|
|
111
|
+
|
|
112
|
+
```js
|
|
113
|
+
const user = await User.find("a0f3842b-1e4c-4e9d-8f2d-cd021e5a9b6a")
|
|
114
|
+
|
|
115
|
+
const tasksCollection = user.tasks()
|
|
116
|
+
const tasks = await tasksCollection.toArray()
|
|
117
|
+
```
|
|
34
118
|
|
|
35
|
-
|
|
119
|
+
### BaseModel static methods
|
|
120
|
+
|
|
121
|
+
- `attributes()`: Returns attribute metadata for the model. Example: `User.attributes()`
|
|
122
|
+
- `hasAttribute(attributeName)`: Checks if the attribute exists on the model. Example: `User.hasAttribute("email")`
|
|
123
|
+
- `modelClassData()`: Returns recipe data for the model class. Example: `User.modelClassData()`
|
|
124
|
+
- `newCustomEvent(validationErrors)`: Creates a validation-errors event. Example: `BaseModel.newCustomEvent(errors)`
|
|
125
|
+
- `sendValidationErrorsEvent(validationErrors, options)`: Dispatches the validation error event to a form. Example: `BaseModel.sendValidationErrorsEvent(errors, {form})`
|
|
126
|
+
- `find(id)`: Loads a record by primary key. Example: `User.find("a0f3842b-1e4c-4e9d-8f2d-cd021e5a9b6a")`
|
|
127
|
+
- `findOrCreateBy(findOrCreateByArgs, args)`: Find or create a record server-side. Example: `User.findOrCreateBy({email: "sam@example.com"}, {additionalData: {invite: true}})`
|
|
128
|
+
- `modelName()`: Returns a `ModelName` helper for inflection. Example: `User.modelName().human()`
|
|
129
|
+
- `primaryKey()`: Returns the primary key column name. Example: `User.primaryKey()`
|
|
130
|
+
- `ransack(query)`: Starts a collection query. Example: `User.ransack({email_cont: "@example.com"})`
|
|
131
|
+
- `select(select)`: Adds a `select` clause to a new query. Example: `User.select({users: ["id", "email"]})`
|
|
132
|
+
- `ransackableAssociations()`: Returns associations that are searchable. Example: `User.ransackableAssociations()`
|
|
133
|
+
- `ransackableAttributes()`: Returns attributes that are searchable. Example: `User.ransackableAttributes()`
|
|
134
|
+
- `ransackableScopes()`: Returns scopes that are searchable. Example: `User.ransackableScopes()`
|
|
135
|
+
- `reflections()`: Returns relationship metadata. Example: `User.reflections()`
|
|
136
|
+
- `reflection(name)`: Looks up a relationship by name. Example: `User.reflection("account")`
|
|
137
|
+
- `_token()`: Reads the CSRF token from the page. Example: `BaseModel._token()`
|
|
138
|
+
- `all()`: Alias for `ransack()`. Example: `User.all().toArray()`
|
|
139
|
+
- `parseValidationErrors({error, model, options})`: Converts server validation errors to `ValidationErrors`. Example: `BaseModel.parseValidationErrors({error, model: user, options: {form}})`
|
|
140
|
+
- `humanAttributeName(attributeName)`: Returns a translated attribute name. Example: `User.humanAttributeName("email")`
|
|
141
|
+
- `snakeCase(string)`: Underscores a string. Example: `BaseModel.snakeCase("AccountOwner")`
|
|
142
|
+
- `_objectDataFromGivenRawData(rawData, options)`: Normalizes form data or objects. Example: `BaseModel._objectDataFromGivenRawData(form, {})`
|
|
143
|
+
- `_callCollectionCommand(args, commandArgs)`: Executes a command and parses validation errors. Example: `BaseModel._callCollectionCommand({args: {save: payload}}, {})`
|
|
144
|
+
- `_postDataFromArgs(args)`: Serializes args for a command request. Example: `BaseModel._postDataFromArgs({save: payload})`
|
|
145
|
+
|
|
146
|
+
### BaseModel instance methods
|
|
147
|
+
|
|
148
|
+
- `constructor(args)`: Creates a model instance. Example: `const user = new User({id: "123"})`
|
|
149
|
+
- `modelClass()`: Returns the model class. Example: `user.modelClass().modelName().name`
|
|
150
|
+
- `modelClassData()`: Returns the recipe data for the model. Example: `user.modelClassData().name`
|
|
151
|
+
- `primaryKey()`: Reads the primary key value. Example: `user.primaryKey()`
|
|
152
|
+
- `identifierKey()`: Returns a stable key for UI lists. Example: `user.identifierKey()`
|
|
153
|
+
- `uniqueKey()`: Generates a random unique key. Example: `user.uniqueKey()`
|
|
154
|
+
- `cacheKey()`: Returns cache key based on id and updated_at. Example: `user.cacheKey()`
|
|
155
|
+
- `localCacheKey()`: Returns a local cache key. Example: `user.localCacheKey()`
|
|
156
|
+
- `fullCacheKey()`: Returns a full cache key. Example: `user.fullCacheKey()`
|
|
157
|
+
- `clone()`: Returns a shallow clone of the model. Example: `const clone = user.clone()`
|
|
158
|
+
- `attributes()`: Returns merged attributes and changes. Example: `user.attributes()`
|
|
159
|
+
- `getAttributes()`: Returns attributes merged with changes. Example: `user.getAttributes()`
|
|
160
|
+
- `assignAttributes(newAttributes)`: Assigns changes and tracks diffs. Example: `user.assignAttributes({email: "sam@example.com"})`
|
|
161
|
+
- `readAttribute(attributeName)`: Reads a camelCase or snake_case attribute. Example: `user.readAttribute("email")`
|
|
162
|
+
- `readAttributeUnderscore(attributeName)`: Reads a snake_case attribute. Example: `user.readAttributeUnderscore("email")`
|
|
163
|
+
- `isAttributeLoaded(attributeName)`: Checks if an attribute is loaded. Example: `user.isAttributeLoaded("email")`
|
|
164
|
+
- `isAttributeChanged(attributeName)`: Checks if an attribute changed. Example: `user.isAttributeChanged("email")`
|
|
165
|
+
- `savedChangeToAttribute(attributeName)`: Checks if an attribute changed in the last save. Example: `user.savedChangeToAttribute("email")`
|
|
166
|
+
- `isChanged()`: Returns true if any attributes changed. Example: `user.isChanged()`
|
|
167
|
+
- `isNewRecord()`: Returns true if the model is not persisted. Example: `user.isNewRecord()`
|
|
168
|
+
- `isPersisted()`: Returns true if the model has been saved. Example: `user.isPersisted()`
|
|
169
|
+
- `can(abilityName)`: Checks a loaded ability. Example: `user.can("update")`
|
|
170
|
+
- `ensureAbilities(listOfAbilities)`: Loads missing abilities from the server. Example: `await user.ensureAbilities(["update"])`
|
|
171
|
+
- `isAssociationLoaded(associationName)`: Checks if a relationship is cached. Example: `user.isAssociationLoaded("account")`
|
|
172
|
+
- `isAssociationLoadedUnderscore(associationName)`: Checks a relationship cache using snake_case. Example: `user.isAssociationLoadedUnderscore("account")`
|
|
173
|
+
- `isAssociationPresent(associationName)`: Checks if the relationship is present in memory. Example: `user.isAssociationPresent("account")`
|
|
174
|
+
- `create(attributes, options)`: Creates the record on the server. Example: `await user.create({email: "sam@example.com"})`
|
|
175
|
+
- `createRaw(rawData, options)`: Creates the record with raw form data. Example: `await user.createRaw(formElement)`
|
|
176
|
+
- `update(newAttributes, options)`: Updates only changed attributes. Example: `await user.update({email: "new@example.com"})`
|
|
177
|
+
- `updateRaw(rawData, options)`: Updates with raw form data. Example: `await user.updateRaw(formElement)`
|
|
178
|
+
- `save()`: Creates or updates based on `isNewRecord()`. Example: `await user.save()`
|
|
179
|
+
- `saveRaw(rawData, options)`: Creates or updates using raw data. Example: `await user.saveRaw(formElement)`
|
|
180
|
+
- `destroy()`: Deletes the record. Example: `await user.destroy()`
|
|
181
|
+
- `reload()`: Reloads the record with the same query params. Example: `await user.reload()`
|
|
182
|
+
- `isValid()`: Not implemented and throws. Example: `user.isValid()`
|
|
183
|
+
- `isValidOnServer()`: Runs server-side validation. Example: `await user.isValidOnServer()`
|
|
184
|
+
- `handleResponseError(response)`: Raises a structured error from a response. Example: `user.handleResponseError(response)`
|
|
185
|
+
- `preloadRelationship(relationshipName, model)`: Marks a relationship as loaded. Example: `user.preloadRelationship("account", account)`
|
|
186
|
+
- `markForDestruction()`: Marks a record for later deletion. Example: `user.markForDestruction()`
|
|
187
|
+
- `markedForDestruction()`: Returns destruction flag. Example: `user.markedForDestruction()`
|
|
188
|
+
- `_callMemberCommand(args, commandArgs)`: Executes a member command. Example: `user._callMemberCommand({args: {}}, {})`
|
|
189
|
+
- `_isPresent(value)`: Presence helper used internally. Example: `user._isPresent("hi")`
|
|
190
|
+
- `_isDateChanged(oldValue, newValue)`: Date change helper. Example: `user._isDateChanged("2024-01-01", "2024-02-01")`
|
|
191
|
+
- `_isIntegerChanged(oldValue, newValue)`: Integer change helper. Example: `user._isIntegerChanged(1, 2)`
|
|
192
|
+
- `_isStringChanged(oldValue, newValue)`: String change helper. Example: `user._isStringChanged("a", "b")`
|
|
193
|
+
- `setNewModel(model)`: Copies data + relationships from another instance. Example: `user.setNewModel(newUser)`
|
|
194
|
+
- `setNewModelData(model)`: Copies only attributes from another instance. Example: `user.setNewModelData(newUser)`
|
|
195
|
+
- `_refreshModelFromResponse(response)`: Updates model from a command response. Example: `user._refreshModelFromResponse(response)`
|
|
196
|
+
- `_refreshModelDataFromResponse(response)`: Updates attributes from a command response. Example: `user._refreshModelDataFromResponse(response)`
|
|
197
|
+
- `_readModelDataFromArgs(args)`: Populates model from API payload. Example: `user._readModelDataFromArgs({data: payload})`
|
|
198
|
+
- `_readPreloadedRelationships(preloaded)`: Populates relationship cache from preloads. Example: `user._readPreloadedRelationships(preloaded)`
|
|
199
|
+
- `_loadBelongsToReflection(args, queryArgs)`: Loads a belongs_to relationship. Example: `user._loadBelongsToReflection({reflectionName: "account", model: user, modelClass: Account})`
|
|
200
|
+
- `_readBelongsToReflection({reflectionName})`: Reads a belongs_to relationship. Example: `user._readBelongsToReflection({reflectionName: "account"})`
|
|
201
|
+
- `_loadHasManyReflection(args, queryArgs)`: Loads a has_many relationship. Example: `user._loadHasManyReflection({reflectionName: "tasks", model: user, modelClass: Task})`
|
|
202
|
+
- `_loadHasOneReflection(args, queryArgs)`: Loads a has_one relationship. Example: `user._loadHasOneReflection({reflectionName: "profile", model: user, modelClass: Profile})`
|
|
203
|
+
- `_readHasOneReflection({reflectionName})`: Reads a has_one relationship. Example: `user._readHasOneReflection({reflectionName: "profile"})`
|
|
204
|
+
|
|
205
|
+
### Collection methods
|
|
206
|
+
|
|
207
|
+
- `constructor(args, queryArgs)`: Creates a collection query. Example: `new Collection({modelClass: User})`
|
|
208
|
+
- `modelClass()`: Returns the model class for the collection. Example: `collection.modelClass()`
|
|
209
|
+
- `clone()`: Returns a copy of the collection. Example: `const next = collection.clone()`
|
|
210
|
+
- `abilities(abilities)`: Adds ability filters to the query. Example: `User.ransack().abilities({User: ["update"]})`
|
|
211
|
+
- `accessibleBy(abilityName)`: Restricts by ability. Example: `User.ransack().accessibleBy("read")`
|
|
212
|
+
- `ransack(params)`: Adds ransack params. Example: `User.ransack().ransack({email_cont: "@example.com"})`
|
|
213
|
+
- `search(params)`: Adds search params. Example: `User.ransack().search({q: "sam"})`
|
|
214
|
+
- `searchKey(searchKey)`: Sets the search key. Example: `User.ransack().searchKey("query")`
|
|
215
|
+
- `select(select)`: Selects attributes per model. Example: `User.ransack().select({users: ["id", "email"]})`
|
|
216
|
+
- `selectColumns(selectColumns)`: Selects columns per table. Example: `User.ransack().selectColumns({users: ["id", "email"]})`
|
|
217
|
+
- `preload(preloadValue)`: Preloads relationships. Example: `User.ransack().preload(["account"])`
|
|
218
|
+
- `groupBy(...columns)`: Adds group-by columns. Example: `User.ransack().groupBy("users.id")`
|
|
219
|
+
- `sort(sortBy)`: Adds sort to ransack params. Example: `User.ransack().sort("created_at desc")`
|
|
220
|
+
- `distinct()`: Enables distinct results. Example: `User.ransack().distinct()`
|
|
221
|
+
- `limit(amount)`: Limits the result count. Example: `User.ransack().limit(10)`
|
|
222
|
+
- `page(page)`: Sets the page number. Example: `User.ransack().page(2)`
|
|
223
|
+
- `per(per)`: Sets the page size. Example: `User.ransack().per(50)`
|
|
224
|
+
- `pageKey(pageKey)`: Sets a custom page param key. Example: `User.ransack().pageKey("p")`
|
|
225
|
+
- `perKey(perKey)`: Sets a custom per param key. Example: `User.ransack().perKey("per_page")`
|
|
226
|
+
- `except(...keys)`: Removes query keys. Example: `User.ransack().page(2).except("page")`
|
|
227
|
+
- `params()`: Returns request params. Example: `User.ransack().limit(5).params()`
|
|
228
|
+
- `isFiltered()`: Returns true when filters are set. Example: `User.ransack().limit(5).isFiltered()`
|
|
229
|
+
- `count()`: Returns count for the query. Example: `await User.ransack().count()`
|
|
230
|
+
- `first()`: Returns the first record. Example: `await User.ransack().first()`
|
|
231
|
+
- `toArray()`: Executes and returns models. Example: `await User.ransack().toArray()`
|
|
232
|
+
- `result()`: Executes and returns a `Result` wrapper. Example: `const result = await User.ransack().result()`
|
|
233
|
+
- `each(callback)`: Iterates over the loaded array. Example: `await User.ransack().each((user) => console.log(user.id()))`
|
|
234
|
+
- `ensureLoaded()`: Loads and sets relationship models. Example: `await user.tasks().ensureLoaded()`
|
|
235
|
+
- `isLoaded()`: Checks if a relationship is loaded. Example: `user.tasks().isLoaded()`
|
|
236
|
+
- `preloaded()`: Returns cached models for a relationship. Example: `user.tasks().preloaded()`
|
|
237
|
+
- `loaded()`: Returns the loaded relationship value. Example: `user.tasks().loaded()`
|
|
238
|
+
- `loadedArray()`: Returns loaded relationship array. Example: `user.tasks().loadedArray()`
|
|
239
|
+
- `set(newCollection)`: Replaces the relationship collection. Example: `user.tasks().set([task])`
|
|
240
|
+
- `push(newModel)`: Pushes a model onto the relationship collection. Example: `user.tasks().push(task)`
|
|
241
|
+
- `find(callback)`: Finds within the loaded array. Example: `user.tasks().find((task) => task.id() == "1")`
|
|
242
|
+
- `forEach(callback)`: Iterates the loaded array. Example: `user.tasks().forEach((task) => console.log(task.id()))`
|
|
243
|
+
- `map(callback)`: Maps the loaded array. Example: `user.tasks().map((task) => task.title())`
|
|
244
|
+
- `_addQueryToModels(models)`: Assigns the collection to returned models. Example: `collection._addQueryToModels(models)`
|
|
245
|
+
- `_merge(newQueryArgs)`: Merges query args. Example: `collection._merge({limit: 5})`
|
|
246
|
+
- `_response()`: Executes the request and returns the raw response. Example: `await collection._response()`
|
|
247
|
+
|
|
248
|
+
## Related docs
|
|
249
|
+
|
|
250
|
+
The server-side setup, resource definitions, and serializers live in the main ApiMaker repository README.
|
package/build/collection.js
CHANGED
|
@@ -186,7 +186,7 @@ export default class ApiMakerCollection {
|
|
|
186
186
|
}
|
|
187
187
|
else {
|
|
188
188
|
const relationshipsLoaded = uniqunize(Object.keys(model.relationships).concat(Object.keys(model.relationshipsCache)));
|
|
189
|
-
throw new Error(`${reflectionName}
|
|
189
|
+
throw new Error(`${reflectionName} hasn't been loaded yet on ${model.modelClassData().name}. Loaded was: ${relationshipsLoaded.join(", ")}`);
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
/** @returns {Array<ModelOf<MC>>} */
|
|
@@ -446,4 +446,4 @@ export default class ApiMakerCollection {
|
|
|
446
446
|
}, {});
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY29sbGVjdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUEsQ0FBQyxtQ0FBbUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQSxDQUFDLG1DQUFtQztBQUM1RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQSxDQUFDLG1DQUFtQztBQUNwRSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUE7QUFFakM7OztHQUdHO0FBRUg7Ozs7OztHQU1HO0FBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sa0JBQWtCO0lBQ3JDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO0lBRWxDOzs7T0FHRztJQUNILFlBQVksSUFBSSxFQUFFLFNBQVMsR0FBRyxFQUFFO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUUvRixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQsU0FBUyxDQUFDLGlCQUFpQjtRQUN6QixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUE7UUFFdkIsS0FBSyxNQUFNLG1CQUFtQixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDcEQsTUFBTSxZQUFZLEdB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VUFBVSxFQUFFLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQTtRQUUzSixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUU1RCxPQUFPLFlBQVksQ0FBQyxVQUFVLENBQzVCO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbkIsT0FBTyxFQUFFLEdBQUcsY0FBYyxDQUFDLGNBQWMsUUFBUTtZQUNqRCxjQUFjLEVBQUUsY0FBYyxDQUFDLGNBQWM7WUFDN0MsSUFBSSxFQUFFLE9BQU87U0FDZCxFQUNELEVBQUUsQ0FDSCxDQUFBO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbG9uZURlZXAgZnJvbSBcImNsb25lLWRlZXBcIlxuaW1wb3J0IENvbW1hbmRzUG9vbCBmcm9tIFwiLi9jb21tYW5kcy1wb29sLmpzXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcbmltcG9ydCB7aW5jb3Jwb3JhdGV9IGZyb20gXCJpbmNvcnBvcmF0b3JcIlxuaW1wb3J0IFJlc3VsdCBmcm9tIFwiLi9yZXN1bHQuanNcIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuaW1wb3J0IHVuaXF1bml6ZSBmcm9tIFwidW5pcXVuaXplXCJcblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gTUNcbiAqIEB0eXBlZGVmIHtJbnN0YW5jZVR5cGU8TUM+fSBNb2RlbE9mXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gTUNcbiAqIEB0eXBlZGVmIHtvYmplY3R9IENvbGxlY3Rpb25BcmdzVHlwZVxuICogQHByb3BlcnR5IHtNb2RlbE9mPE1DPn0gW21vZGVsXVxuICogQHByb3BlcnR5IHtNQ30gbW9kZWxDbGFzc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZWZsZWN0aW9uTmFtZV1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFF1ZXJ5QXJnc1R5cGVcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbYWJpbGl0aWVzXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthY2Nlc3NpYmxlQnldXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2NvdW50XVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkaXN0aW5jdF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtncm91cEJ5XVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtsaW1pdF1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcGFnZV1cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW3BhcmFtc11cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcGVyXVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW3ByZWxvYWRdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIGFueT59IFtyYW5zYWNrXVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbc2VhcmNoXVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFtzZWxlY3RdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW3NlbGVjdENvbHVtbnNdXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gTUNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDb2xsZWN0aW9uIHtcbiAgc3RhdGljIGFwaU1ha2VyVHlwZSA9IFwiQ29sbGVjdGlvblwiXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29sbGVjdGlvbkFyZ3NUeXBlPE1DPn0gYXJnc1xuICAgKiBAcGFyYW0ge1F1ZXJ5QXJnc1R5cGV9IHF1ZXJ5QXJnc1xuICAgKi9cbiAgY29uc3RydWN0b3IoYXJncywgcXVlcnlBcmdzID0ge30pIHtcbiAgICBpZiAoIWFyZ3MubW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbENsYXNzIGdpdmVuIGluICR7T2JqZWN0LmtleXMoYXJncykuam9pbihcIiwgXCIpfWApXG5cbiAgICB0aGlzLnF1ZXJ5QXJncyA9IHF1ZXJ5QXJnc1xuICAgIHRoaXMuYXJncyA9IGFyZ3NcbiAgfVxuXG4gIGFiaWxpdGllcyhvcmlnaW5hbEFiaWxpdGllcykge1xuICAgIGNvbnN0IG5ld0FiaWxpdGllcyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IG9yaWdpbmFsQWJpbGl0eU5hbWUgaW4gb3JpZ2luYWxBYmlsaXRpZXMpIHtcbiAgICAgIGNvbnN0IG5ld01vZGVsTmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbEFiaWxpdHlOYW1lKVxuICAgICAgY29uc3QgbmV3VmFsdWVzID0gW11cbiAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWVzID0gb3JpZ2luYWxBYmlsaXRpZXNbb3JpZ2luYWxBYmlsaXR5TmFtZV1cblxuICAgICAgZm9yIChjb25zdCBvcmlnaW5hbEFiaWxpdHlOYW1lIG9mIG9yaWdpbmFsVmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IG5ld0FiaWxpdHlOYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKG9yaWdpbmFsQWJpbGl0eU5hbWUpXG4gICAgICAgIG5ld1ZhbHVlcy5wdXNoKG5ld0FiaWxpdHlOYW1lKVxuICAgICAgfVxuXG4gICAgICBuZXdBYmlsaXRpZXNbbmV3TW9kZWxOYW1lXSA9IG5ld1ZhbHVlc1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7YWJpbGl0aWVzOiBuZXdBYmlsaXRpZXN9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhYmlsaXR5TmFtZVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIGFjY2Vzc2libGVCeShhYmlsaXR5TmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7YWNjZXNzaWJsZUJ5OiBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYWJpbGl0eU5hbWUpfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fVxuICAgKi9cbiAgYXN5bmMgY291bnQoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsb25lKClcbiAgICAgIC5fbWVyZ2Uoe2NvdW50OiB0cnVlfSlcbiAgICAgIC5fcmVzcG9uc2UoKVxuXG4gICAgcmV0dXJuIGRpZ2cocmVzcG9uc2UsIFwiY291bnRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIGRpc3RpbmN0KCkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7ZGlzdGluY3Q6IHRydWV9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHQpIDogdm9pZH0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBlYWNoKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYXJyYXkgPSBhd2FpdCB0aGlzLnRvQXJyYXkoKVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBpbiBhcnJheSkge1xuICAgICAgY2FsbGJhY2suY2FsbChtb2RlbClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsuLi5zdHJpbmd9IGtleXNcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBleGNlcHQoLi4ua2V5cykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGlmIChrZXkgPT0gXCJwYWdlXCIpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMucXVlcnlBcmdzW2tleV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIGtleTogJHtrZXl9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVsT2Y8TUM+Pn1cbiAgICovXG4gIGFzeW5jIGZpcnN0KCkge1xuICAgIGNvbnN0IG1vZGVscyA9IGF3YWl0IHRoaXMudG9BcnJheSgpXG4gICAgcmV0dXJuIG1vZGVsc1swXVxuICB9XG5cbiAgZ3JvdXBCeSguLi5hcnJheU9mVGFibGVzQW5kQ29sdW1ucykge1xuICAgIGNvbnN0IGFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zV2l0aExvd2VyY2FzZUNvbHVtbnMgPSBhcnJheU9mVGFibGVzQW5kQ29sdW1ucy5tYXAoKHRhYmxlQW5kQ29sdW1uKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0YWJsZUFuZENvbHVtbikpIHtcbiAgICAgICAgcmV0dXJuIFt0YWJsZUFuZENvbHVtblswXSwgdGFibGVBbmRDb2x1bW5bMV0udG9Mb3dlckNhc2UoKV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0YWJsZUFuZENvbHVtbi50b0xvd2VyQ2FzZSgpXG4gICAgICB9XG4gICAgfSlcbiAgICBjb25zdCBjdXJyZW50R3JvdXBCeSA9IHRoaXMucXVlcnlBcmdzLmdyb3VwQnkgfHwgW11cbiAgICBjb25zdCBuZXdHcm91cEJ5ID0gY3VycmVudEdyb3VwQnkuY29uY2F0KGFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zV2l0aExvd2VyY2FzZUNvbHVtbnMpXG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe1xuICAgICAgZ3JvdXBCeTogbmV3R3JvdXBCeVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBlbnN1cmVMb2FkZWQoKSB7XG4gICAgaWYgKCF0aGlzLmlzTG9hZGVkKCkpIHtcbiAgICAgIGNvbnN0IG1vZGVscyA9IGF3YWl0IHRoaXMudG9BcnJheSgpXG5cbiAgICAgIHRoaXMuc2V0KG1vZGVscylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkZWQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNMb2FkZWQoKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmIChyZWZsZWN0aW9uTmFtZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChyZWZsZWN0aW9uTmFtZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnRcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBsaW1pdChhbW91bnQpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe2xpbWl0OiBhbW91bnR9KVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtBcnJheTxNb2RlbE9mPE1DPj59XG4gICAqL1xuICBwcmVsb2FkZWQoKSB7XG4gICAgaWYgKCEodGhpcy5hcmdzLnJlZmxlY3Rpb25OYW1lIGluIHRoaXMuYXJncy5tb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5hcmdzLnJlZmxlY3Rpb25OYW1lfSBoYXNudCBiZWVuIGxvYWRlZCB5ZXRgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFyZ3MubW9kZWwucmVsYXRpb25zaGlwc0NhY2hlW3RoaXMuYXJncy5yZWZsZWN0aW9uTmFtZV1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7TW9kZWxPZjxNQz4gfCBBcnJheTxNb2RlbE9mPE1DPj59XG4gICAqL1xuICBsb2FkZWQoKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmIChyZWZsZWN0aW9uTmFtZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gbW9kZWwucmVsYXRpb25zaGlwc1tyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZSkge1xuICAgICAgcmV0dXJuIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKG1vZGVsLmlzTmV3UmVjb3JkKCkpIHtcbiAgICAgIGNvbnN0IHJlZmxlY3Rpb25OYW1lVW5kZXJzY29yZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShyZWZsZWN0aW9uTmFtZSlcblxuICAgICAgLy8gSW5pdGlhbGl6ZSBhcyBlbXB0eSBhbmQgdHJ5IGFnYWluIHRvIHJldHVybiB0aGUgZW1wdHkgcmVzdWx0XG4gICAgICB0aGlzLnNldChbXSlcblxuICAgICAgcmV0dXJuIGRpZ2cobW9kZWwucmVsYXRpb25zaGlwcywgcmVmbGVjdGlvbk5hbWVVbmRlcnNjb3JlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBzTG9hZGVkID0gdW5pcXVuaXplKE9iamVjdC5rZXlzKG1vZGVsLnJlbGF0aW9uc2hpcHMpLmNvbmNhdChPYmplY3Qua2V5cyhtb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpKSlcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlZmxlY3Rpb25OYW1lfSBoYXNudCBiZWVuIGxvYWRlZCB5ZXQgb24gJHttb2RlbC5tb2RlbENsYXNzRGF0YSgpLm5hbWV9LiBMb2FkZWQgd2FzOiAke3JlbGF0aW9uc2hpcHNMb2FkZWQuam9pbihcIiwgXCIpfWApXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtBcnJheTxNb2RlbE9mPE1DPj59ICovXG4gIGxvYWRlZEFycmF5KCkge1xuICAgIGNvbnN0IGxvYWRlZCA9IHRoaXMubG9hZGVkKClcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGxvYWRlZCkpIHtcbiAgICAgIHJldHVybiBsb2FkZWRcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiJ2xvYWRlZCcgd2Fzbid0IGFuIGFycmF5XCIpXG4gICAgfVxuICB9XG5cbiAgLy8gUmVwbGFjZXMgdGhlIHJlbGF0aW9uc2hpcHMgd2l0aCB0aGUgZ2l2ZW4gbmV3IGNvbGxlY3Rpb24uXG4gIHNldChuZXdDb2xsZWN0aW9uKSB7XG4gICAgdGhpcy5hcmdzLm1vZGVsLnJlbGF0aW9uc2hpcHNbdGhpcy5hcmdzLnJlZmxlY3Rpb25OYW1lXSA9IG5ld0NvbGxlY3Rpb25cbiAgfVxuXG4gIC8vIFB1c2hlcyBhbm90aGVyIG1vZGVsIG9udG8gdGhlIGdpdmVuIGNvbGxlY3Rpb24uXG4gIHB1c2gobmV3TW9kZWwpIHtcbiAgICBjb25zdCB7bW9kZWwsIHJlZmxlY3Rpb25OYW1lfSA9IHRoaXMuYXJnc1xuXG4gICAgaWYgKCEocmVmbGVjdGlvbk5hbWUgaW4gbW9kZWwucmVsYXRpb25zaGlwcykpIHtcbiAgICAgIG1vZGVsLnJlbGF0aW9uc2hpcHNbcmVmbGVjdGlvbk5hbWVdID0gW11cbiAgICB9XG5cbiAgICBpZiAoIW1vZGVsLnJlbGF0aW9uc2hpcHNbcmVmbGVjdGlvbk5hbWVdLmluY2x1ZGVzKG5ld01vZGVsKSkge1xuICAgICAgbW9kZWwucmVsYXRpb25zaGlwc1tyZWZsZWN0aW9uTmFtZV0ucHVzaChuZXdNb2RlbClcbiAgICB9XG4gIH1cblxuICAvLyBBcnJheSBzaG9ydGN1dHNcbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHQpOiBib29sZWFufSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHR9XG4gICAqL1xuICBmaW5kKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmxvYWRlZEFycmF5KCkuZmluZChjYWxsYmFjaykgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0KTogdm9pZH0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmb3JFYWNoKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmxvYWRlZEFycmF5KCkuZm9yRWFjaChjYWxsYmFjaykgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0KTogdm9pZH0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge2FueVtdfVxuICAgKi9cbiAgbWFwKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmxvYWRlZEFycmF5KCkubWFwKGNhbGxiYWNrKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHByZWxvYWRWYWx1ZVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHByZWxvYWQocHJlbG9hZFZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtwcmVsb2FkOiBwcmVsb2FkVmFsdWV9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcGFnZShwYWdlKSB7XG4gICAgY29uc3QgcGFnZVRvVXNlID0gcGFnZSB8fCAxXG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3BhZ2U6IHBhZ2VUb1VzZX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VLZXlcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwYWdlS2V5KHBhZ2VLZXkpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3BhZ2VLZXl9KVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNGaWx0ZXJlZCgpIHtcbiAgICBjb25zdCB7cXVlcnlBcmdzfSA9IHRoaXNcblxuICAgIGlmIChcbiAgICAgIHF1ZXJ5QXJncy5hY2Nlc3NpYmxlQnkgfHxcbiAgICAgIHF1ZXJ5QXJncy5jb3VudCB8fFxuICAgICAgcXVlcnlBcmdzLmxpbWl0IHx8XG4gICAgICBxdWVyeUFyZ3MucGFnZSB8fFxuICAgICAgcXVlcnlBcmdzLnBhcmFtcyB8fFxuICAgICAgcXVlcnlBcmdzLnBlciB8fFxuICAgICAgcXVlcnlBcmdzLnJhbnNhY2sgfHxcbiAgICAgIHF1ZXJ5QXJncy5zZWFyY2hcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueT59XG4gICAqL1xuICBwYXJhbXMoKSB7XG4gICAgbGV0IHBhcmFtcyA9IHt9XG5cbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucGFyYW1zKSBwYXJhbXMgPSBpbmNvcnBvcmF0ZShwYXJhbXMsIHRoaXMucXVlcnlBcmdzLnBhcmFtcylcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MuYWJpbGl0aWVzKSBwYXJhbXMuYWJpbGl0aWVzID0gdGhpcy5xdWVyeUFyZ3MuYWJpbGl0aWVzXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmFjY2Vzc2libGVCeSkgcGFyYW1zLmFjY2Vzc2libGVfYnkgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUodGhpcy5xdWVyeUFyZ3MuYWNjZXNzaWJsZUJ5KVxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5jb3VudCkgcGFyYW1zLmNvdW50ID0gdGhpcy5xdWVyeUFyZ3MuY291bnRcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MuZGlzdGluY3QpIHBhcmFtcy5kaXN0aW5jdCA9IHRoaXMucXVlcnlBcmdzLmRpc3RpbmN0XG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmdyb3VwQnkpIHBhcmFtcy5ncm91cF9ieSA9IHRoaXMucXVlcnlBcmdzLmdyb3VwQnlcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucmFuc2FjaykgcGFyYW1zLnEgPSB0aGlzLnF1ZXJ5QXJncy5yYW5zYWNrXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmxpbWl0KSBwYXJhbXMubGltaXQgPSB0aGlzLnF1ZXJ5QXJncy5saW1pdFxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5wcmVsb2FkKSBwYXJhbXMucHJlbG9hZCA9IHRoaXMucXVlcnlBcmdzLnByZWxvYWRcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucGFnZSkgcGFyYW1zLnBhZ2UgPSB0aGlzLnF1ZXJ5QXJncy5wYWdlXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnBlcikgcGFyYW1zLnBlciA9IHRoaXMucXVlcnlBcmdzLnBlclxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5zZWFyY2gpIHBhcmFtcy5zZWFyY2ggPSB0aGlzLnF1ZXJ5QXJncy5zZWFyY2hcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3Muc2VsZWN0KSBwYXJhbXMuc2VsZWN0ID0gdGhpcy5xdWVyeUFyZ3Muc2VsZWN0XG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnNlbGVjdENvbHVtbnMpIHBhcmFtcy5zZWxlY3RfY29sdW1ucyA9IHRoaXMucXVlcnlBcmdzLnNlbGVjdENvbHVtbnNcblxuICAgIHJldHVybiBwYXJhbXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcGVyXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcGVyKHBlcikge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cGVyfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGVyS2V5XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcGVyS2V5KHBlcktleSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cGVyS2V5fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHBhcmFtc1xuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHJhbnNhY2socGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcykgdGhpcy5fbWVyZ2Uoe3JhbnNhY2s6IHBhcmFtc30pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZXN1bHQ+fVxuICAgKi9cbiAgYXN5bmMgcmVzdWx0KCkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5fcmVzcG9uc2UoKVxuICAgIGNvbnN0IG1vZGVscyA9IGRpZ2cocmVzcG9uc2UsIFwiY29sbGVjdGlvblwiKVxuXG4gICAgdGhpcy5fYWRkUXVlcnlUb01vZGVscyhtb2RlbHMpXG5cbiAgICBjb25zdCByZXN1bHQgPSBuZXcgUmVzdWx0KHtjb2xsZWN0aW9uOiB0aGlzLCBtb2RlbHMsIHJlc3BvbnNlfSlcblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHBhcmFtc1xuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHNlYXJjaChwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zKSB0aGlzLl9tZXJnZSh7c2VhcmNoOiBwYXJhbXN9KVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaEtleVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHNlYXJjaEtleShzZWFyY2hLZXkpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3NlYXJjaEtleX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IG9yaWdpbmFsU2VsZWN0XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgc2VsZWN0KG9yaWdpbmFsU2VsZWN0KSB7XG4gICAgY29uc3QgbmV3U2VsZWN0ID0ge31cblxuICAgIGZvciAoY29uc3Qgb3JpZ2luYWxNb2RlbE5hbWUgaW4gb3JpZ2luYWxTZWxlY3QpIHtcbiAgICAgIGNvbnN0IG5ld01vZGVsTmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbE1vZGVsTmFtZSlcbiAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IFtdXG4gICAgICBjb25zdCBvcmlnaW5hbFZhbHVlcyA9IG9yaWdpbmFsU2VsZWN0W29yaWdpbmFsTW9kZWxOYW1lXVxuXG4gICAgICBmb3IgKGNvbnN0IG9yaWdpbmFsQXR0cmlidXRlTmFtZSBvZiBvcmlnaW5hbFZhbHVlcykge1xuICAgICAgICBjb25zdCBuZXdBdHRyaWJ1dGVOYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKG9yaWdpbmFsQXR0cmlidXRlTmFtZSlcbiAgICAgICAgbmV3VmFsdWVzLnB1c2gobmV3QXR0cmlidXRlTmFtZSlcbiAgICAgIH1cblxuICAgICAgbmV3U2VsZWN0W25ld01vZGVsTmFtZV0gPSBuZXdWYWx1ZXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3NlbGVjdDogbmV3U2VsZWN0fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gb3JpZ2luYWxTZWxlY3RcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBzZWxlY3RDb2x1bW5zKG9yaWdpbmFsU2VsZWN0KSB7XG4gICAgY29uc3QgbmV3U2VsZWN0ID0ge31cblxuICAgIGZvciAoY29uc3Qgb3JpZ2luYWxNb2RlbE5hbWUgaW4gb3JpZ2luYWxTZWxlY3QpIHtcbiAgICAgIGNvbnN0IG5ld01vZGVsTmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUob3JpZ2luYWxNb2RlbE5hbWUpKVxuICAgICAgY29uc3QgbmV3VmFsdWVzID0gW11cbiAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWVzID0gb3JpZ2luYWxTZWxlY3Rbb3JpZ2luYWxNb2RlbE5hbWVdXG5cbiAgICAgIGZvciAoY29uc3Qgb3JpZ2luYWxBdHRyaWJ1dGVOYW1lIG9mIG9yaWdpbmFsVmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IG5ld0F0dHJpYnV0ZU5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUob3JpZ2luYWxBdHRyaWJ1dGVOYW1lKVxuICAgICAgICBuZXdWYWx1ZXMucHVzaChuZXdBdHRyaWJ1dGVOYW1lKVxuICAgICAgfVxuXG4gICAgICBuZXdTZWxlY3RbbmV3TW9kZWxOYW1lXSA9IG5ld1ZhbHVlc1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7c2VsZWN0Q29sdW1uczogbmV3U2VsZWN0fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc29ydEJ5XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgc29ydChzb3J0QnkpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3JhbnNhY2s6IHtzOiBzb3J0Qnl9fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxNb2RlbE9mPE1DPj4+fVxuICAgKi9cbiAgYXN5bmMgdG9BcnJheSgpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuX3Jlc3BvbnNlKClcbiAgICBjb25zdCBtb2RlbHMgPSBkaWdnKHJlc3BvbnNlLCBcImNvbGxlY3Rpb25cIilcblxuICAgIHRoaXMuX2FkZFF1ZXJ5VG9Nb2RlbHMobW9kZWxzKVxuXG4gICAgcmV0dXJuIG1vZGVsc1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtNQ31cbiAgICovXG4gIG1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3MubW9kZWxDbGFzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbW9kZWwgY2xhc3MgZ2l2ZW4gaW4gYXJnc1wiKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFyZ3MubW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtBcGlNYWtlckNvbGxlY3Rpb259XG4gICAqL1xuICBjbG9uZSgpIHtcbiAgICBjb25zdCBjbG9uZWRRdWVyeUFyZ3MgPSBjbG9uZURlZXAodGhpcy5xdWVyeUFyZ3MpXG5cbiAgICByZXR1cm4gbmV3IEFwaU1ha2VyQ29sbGVjdGlvbih0aGlzLmFyZ3MsIGNsb25lZFF1ZXJ5QXJncylcbiAgfVxuXG4gIC8vIFRoaXMgaXMgbmVlZGVkIHdoZW4gcmVsb2FkaW5nIGEgdmVyc2lvbiBvZiB0aGUgbW9kZWwgd2l0aCB0aGUgc2FtZSBzZWxlY3RlZCBhdHRyaWJ1dGVzIGFuZCBwcmVsb2Fkc1xuICBfYWRkUXVlcnlUb01vZGVscyhtb2RlbHMpIHtcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVscykge1xuICAgICAgbW9kZWwuY29sbGVjdGlvbiA9IHRoaXNcbiAgICB9XG4gIH1cblxuICBfbWVyZ2UobmV3UXVlcnlBcmdzKSB7XG4gICAgaW5jb3Jwb3JhdGUodGhpcy5xdWVyeUFyZ3MsIG5ld1F1ZXJ5QXJncylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBfcmVzcG9uc2UoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3MpIHRocm93IG5ldyBFcnJvcihcIk5vIGFyZ3M/XCIpXG4gICAgaWYgKCF0aGlzLmFyZ3MubW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiTm8gbW9kZWxDbGFzcyBpbiBhcmdzXCIpXG4gICAgaWYgKCF0aGlzLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSkgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbENsYXNzRGF0YSBvbiBtb2RlbENsYXNzICR7dGhpcy5hcmdzLm1vZGVsQ2xhc3M/Lm5hbWV9ICgke3R5cGVvZiB0aGlzLmFyZ3MubW9kZWxDbGFzc30pYClcblxuICAgIGNvbnN0IG1vZGVsQ2xhc3NEYXRhID0gdGhpcy5hcmdzLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKVxuXG4gICAgcmV0dXJuIENvbW1hbmRzUG9vbC5hZGRDb21tYW5kKFxuICAgICAge1xuICAgICAgICBhcmdzOiB0aGlzLnBhcmFtcygpLFxuICAgICAgICBjb21tYW5kOiBgJHttb2RlbENsYXNzRGF0YS5jb2xsZWN0aW9uTmFtZX0taW5kZXhgLFxuICAgICAgICBjb2xsZWN0aW9uTmFtZTogbW9kZWxDbGFzc0RhdGEuY29sbGVjdGlvbk5hbWUsXG4gICAgICAgIHR5cGU6IFwiaW5kZXhcIlxuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKVxuICB9XG59XG4iXX0=
|
|
449
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY29sbGVjdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUEsQ0FBQyxtQ0FBbUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQSxDQUFDLG1DQUFtQztBQUM1RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQSxDQUFDLG1DQUFtQztBQUNwRSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUE7QUFFakM7OztHQUdHO0FBRUg7Ozs7OztHQU1HO0FBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sa0JBQWtCO0lBQ3JDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO0lBRWxDOzs7T0FHRztJQUNILFlBQVksSUFBSSxFQUFFLFNBQVMsR0FBRyxFQUFFO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUUvRixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQsU0FBUyxDQUFDLGlCQUFpQjtRQUN6QixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUE7UUFFdkIsS0FBSyxNQUFNLG1CQUFtQixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDcEQsTUFBTSxZQUFZLEdB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VUFBVSxFQUFFLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQTtRQUUzSixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUU1RCxPQUFPLFlBQVksQ0FBQyxVQUFVLENBQzVCO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbkIsT0FBTyxFQUFFLEdBQUcsY0FBYyxDQUFDLGNBQWMsUUFBUTtZQUNqRCxjQUFjLEVBQUUsY0FBYyxDQUFDLGNBQWM7WUFDN0MsSUFBSSxFQUFFLE9BQU87U0FDZCxFQUNELEVBQUUsQ0FDSCxDQUFBO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbG9uZURlZXAgZnJvbSBcImNsb25lLWRlZXBcIlxuaW1wb3J0IENvbW1hbmRzUG9vbCBmcm9tIFwiLi9jb21tYW5kcy1wb29sLmpzXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcbmltcG9ydCB7aW5jb3Jwb3JhdGV9IGZyb20gXCJpbmNvcnBvcmF0b3JcIlxuaW1wb3J0IFJlc3VsdCBmcm9tIFwiLi9yZXN1bHQuanNcIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuaW1wb3J0IHVuaXF1bml6ZSBmcm9tIFwidW5pcXVuaXplXCJcblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gTUNcbiAqIEB0eXBlZGVmIHtJbnN0YW5jZVR5cGU8TUM+fSBNb2RlbE9mXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gTUNcbiAqIEB0eXBlZGVmIHtvYmplY3R9IENvbGxlY3Rpb25BcmdzVHlwZVxuICogQHByb3BlcnR5IHtNb2RlbE9mPE1DPn0gW21vZGVsXVxuICogQHByb3BlcnR5IHtNQ30gbW9kZWxDbGFzc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZWZsZWN0aW9uTmFtZV1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFF1ZXJ5QXJnc1R5cGVcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbYWJpbGl0aWVzXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthY2Nlc3NpYmxlQnldXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2NvdW50XVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkaXN0aW5jdF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtncm91cEJ5XVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtsaW1pdF1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcGFnZV1cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW3BhcmFtc11cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcGVyXVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW3ByZWxvYWRdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIGFueT59IFtyYW5zYWNrXVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbc2VhcmNoXVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFtzZWxlY3RdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW3NlbGVjdENvbHVtbnNdXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gTUNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDb2xsZWN0aW9uIHtcbiAgc3RhdGljIGFwaU1ha2VyVHlwZSA9IFwiQ29sbGVjdGlvblwiXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29sbGVjdGlvbkFyZ3NUeXBlPE1DPn0gYXJnc1xuICAgKiBAcGFyYW0ge1F1ZXJ5QXJnc1R5cGV9IHF1ZXJ5QXJnc1xuICAgKi9cbiAgY29uc3RydWN0b3IoYXJncywgcXVlcnlBcmdzID0ge30pIHtcbiAgICBpZiAoIWFyZ3MubW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbENsYXNzIGdpdmVuIGluICR7T2JqZWN0LmtleXMoYXJncykuam9pbihcIiwgXCIpfWApXG5cbiAgICB0aGlzLnF1ZXJ5QXJncyA9IHF1ZXJ5QXJnc1xuICAgIHRoaXMuYXJncyA9IGFyZ3NcbiAgfVxuXG4gIGFiaWxpdGllcyhvcmlnaW5hbEFiaWxpdGllcykge1xuICAgIGNvbnN0IG5ld0FiaWxpdGllcyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IG9yaWdpbmFsQWJpbGl0eU5hbWUgaW4gb3JpZ2luYWxBYmlsaXRpZXMpIHtcbiAgICAgIGNvbnN0IG5ld01vZGVsTmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbEFiaWxpdHlOYW1lKVxuICAgICAgY29uc3QgbmV3VmFsdWVzID0gW11cbiAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWVzID0gb3JpZ2luYWxBYmlsaXRpZXNbb3JpZ2luYWxBYmlsaXR5TmFtZV1cblxuICAgICAgZm9yIChjb25zdCBvcmlnaW5hbEFiaWxpdHlOYW1lIG9mIG9yaWdpbmFsVmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IG5ld0FiaWxpdHlOYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKG9yaWdpbmFsQWJpbGl0eU5hbWUpXG4gICAgICAgIG5ld1ZhbHVlcy5wdXNoKG5ld0FiaWxpdHlOYW1lKVxuICAgICAgfVxuXG4gICAgICBuZXdBYmlsaXRpZXNbbmV3TW9kZWxOYW1lXSA9IG5ld1ZhbHVlc1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7YWJpbGl0aWVzOiBuZXdBYmlsaXRpZXN9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhYmlsaXR5TmFtZVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIGFjY2Vzc2libGVCeShhYmlsaXR5TmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7YWNjZXNzaWJsZUJ5OiBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYWJpbGl0eU5hbWUpfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxudW1iZXI+fVxuICAgKi9cbiAgYXN5bmMgY291bnQoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsb25lKClcbiAgICAgIC5fbWVyZ2Uoe2NvdW50OiB0cnVlfSlcbiAgICAgIC5fcmVzcG9uc2UoKVxuXG4gICAgcmV0dXJuIGRpZ2cocmVzcG9uc2UsIFwiY291bnRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIGRpc3RpbmN0KCkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7ZGlzdGluY3Q6IHRydWV9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHQpIDogdm9pZH0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBlYWNoKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYXJyYXkgPSBhd2FpdCB0aGlzLnRvQXJyYXkoKVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBpbiBhcnJheSkge1xuICAgICAgY2FsbGJhY2suY2FsbChtb2RlbClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsuLi5zdHJpbmd9IGtleXNcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBleGNlcHQoLi4ua2V5cykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGlmIChrZXkgPT0gXCJwYWdlXCIpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMucXVlcnlBcmdzW2tleV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIGtleTogJHtrZXl9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE1vZGVsT2Y8TUM+Pn1cbiAgICovXG4gIGFzeW5jIGZpcnN0KCkge1xuICAgIGNvbnN0IG1vZGVscyA9IGF3YWl0IHRoaXMudG9BcnJheSgpXG4gICAgcmV0dXJuIG1vZGVsc1swXVxuICB9XG5cbiAgZ3JvdXBCeSguLi5hcnJheU9mVGFibGVzQW5kQ29sdW1ucykge1xuICAgIGNvbnN0IGFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zV2l0aExvd2VyY2FzZUNvbHVtbnMgPSBhcnJheU9mVGFibGVzQW5kQ29sdW1ucy5tYXAoKHRhYmxlQW5kQ29sdW1uKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0YWJsZUFuZENvbHVtbikpIHtcbiAgICAgICAgcmV0dXJuIFt0YWJsZUFuZENvbHVtblswXSwgdGFibGVBbmRDb2x1bW5bMV0udG9Mb3dlckNhc2UoKV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0YWJsZUFuZENvbHVtbi50b0xvd2VyQ2FzZSgpXG4gICAgICB9XG4gICAgfSlcbiAgICBjb25zdCBjdXJyZW50R3JvdXBCeSA9IHRoaXMucXVlcnlBcmdzLmdyb3VwQnkgfHwgW11cbiAgICBjb25zdCBuZXdHcm91cEJ5ID0gY3VycmVudEdyb3VwQnkuY29uY2F0KGFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zV2l0aExvd2VyY2FzZUNvbHVtbnMpXG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe1xuICAgICAgZ3JvdXBCeTogbmV3R3JvdXBCeVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBlbnN1cmVMb2FkZWQoKSB7XG4gICAgaWYgKCF0aGlzLmlzTG9hZGVkKCkpIHtcbiAgICAgIGNvbnN0IG1vZGVscyA9IGF3YWl0IHRoaXMudG9BcnJheSgpXG5cbiAgICAgIHRoaXMuc2V0KG1vZGVscylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkZWQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNMb2FkZWQoKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmIChyZWZsZWN0aW9uTmFtZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChyZWZsZWN0aW9uTmFtZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnRcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBsaW1pdChhbW91bnQpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe2xpbWl0OiBhbW91bnR9KVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtBcnJheTxNb2RlbE9mPE1DPj59XG4gICAqL1xuICBwcmVsb2FkZWQoKSB7XG4gICAgaWYgKCEodGhpcy5hcmdzLnJlZmxlY3Rpb25OYW1lIGluIHRoaXMuYXJncy5tb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5hcmdzLnJlZmxlY3Rpb25OYW1lfSBoYXNudCBiZWVuIGxvYWRlZCB5ZXRgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFyZ3MubW9kZWwucmVsYXRpb25zaGlwc0NhY2hlW3RoaXMuYXJncy5yZWZsZWN0aW9uTmFtZV1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7TW9kZWxPZjxNQz4gfCBBcnJheTxNb2RlbE9mPE1DPj59XG4gICAqL1xuICBsb2FkZWQoKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmIChyZWZsZWN0aW9uTmFtZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gbW9kZWwucmVsYXRpb25zaGlwc1tyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZSkge1xuICAgICAgcmV0dXJuIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKG1vZGVsLmlzTmV3UmVjb3JkKCkpIHtcbiAgICAgIGNvbnN0IHJlZmxlY3Rpb25OYW1lVW5kZXJzY29yZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShyZWZsZWN0aW9uTmFtZSlcblxuICAgICAgLy8gSW5pdGlhbGl6ZSBhcyBlbXB0eSBhbmQgdHJ5IGFnYWluIHRvIHJldHVybiB0aGUgZW1wdHkgcmVzdWx0XG4gICAgICB0aGlzLnNldChbXSlcblxuICAgICAgcmV0dXJuIGRpZ2cobW9kZWwucmVsYXRpb25zaGlwcywgcmVmbGVjdGlvbk5hbWVVbmRlcnNjb3JlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBzTG9hZGVkID0gdW5pcXVuaXplKE9iamVjdC5rZXlzKG1vZGVsLnJlbGF0aW9uc2hpcHMpLmNvbmNhdChPYmplY3Qua2V5cyhtb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpKSlcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlZmxlY3Rpb25OYW1lfSBoYXNuJ3QgYmVlbiBsb2FkZWQgeWV0IG9uICR7bW9kZWwubW9kZWxDbGFzc0RhdGEoKS5uYW1lfS4gTG9hZGVkIHdhczogJHtyZWxhdGlvbnNoaXBzTG9hZGVkLmpvaW4oXCIsIFwiKX1gKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7QXJyYXk8TW9kZWxPZjxNQz4+fSAqL1xuICBsb2FkZWRBcnJheSgpIHtcbiAgICBjb25zdCBsb2FkZWQgPSB0aGlzLmxvYWRlZCgpXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShsb2FkZWQpKSB7XG4gICAgICByZXR1cm4gbG9hZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIidsb2FkZWQnIHdhc24ndCBhbiBhcnJheVwiKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlcGxhY2VzIHRoZSByZWxhdGlvbnNoaXBzIHdpdGggdGhlIGdpdmVuIG5ldyBjb2xsZWN0aW9uLlxuICBzZXQobmV3Q29sbGVjdGlvbikge1xuICAgIHRoaXMuYXJncy5tb2RlbC5yZWxhdGlvbnNoaXBzW3RoaXMuYXJncy5yZWZsZWN0aW9uTmFtZV0gPSBuZXdDb2xsZWN0aW9uXG4gIH1cblxuICAvLyBQdXNoZXMgYW5vdGhlciBtb2RlbCBvbnRvIHRoZSBnaXZlbiBjb2xsZWN0aW9uLlxuICBwdXNoKG5ld01vZGVsKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmICghKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHMpKSB7XG4gICAgICBtb2RlbC5yZWxhdGlvbnNoaXBzW3JlZmxlY3Rpb25OYW1lXSA9IFtdXG4gICAgfVxuXG4gICAgaWYgKCFtb2RlbC5yZWxhdGlvbnNoaXBzW3JlZmxlY3Rpb25OYW1lXS5pbmNsdWRlcyhuZXdNb2RlbCkpIHtcbiAgICAgIG1vZGVsLnJlbGF0aW9uc2hpcHNbcmVmbGVjdGlvbk5hbWVdLnB1c2gobmV3TW9kZWwpXG4gICAgfVxuICB9XG5cbiAgLy8gQXJyYXkgc2hvcnRjdXRzXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0KTogYm9vbGVhbn0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fVxuICAgKi9cbiAgZmluZChjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5sb2FkZWRBcnJheSgpLmZpbmQoY2FsbGJhY2spIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCk6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZm9yRWFjaChjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5sb2FkZWRBcnJheSgpLmZvckVhY2goY2FsbGJhY2spIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCk6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHthbnlbXX1cbiAgICovXG4gIG1hcChjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5sb2FkZWRBcnJheSgpLm1hcChjYWxsYmFjaykgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwcmVsb2FkVmFsdWVcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwcmVsb2FkKHByZWxvYWRWYWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cHJlbG9hZDogcHJlbG9hZFZhbHVlfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHBhZ2UocGFnZSkge1xuICAgIGNvbnN0IHBhZ2VUb1VzZSA9IHBhZ2UgfHwgMVxuXG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtwYWdlOiBwYWdlVG9Vc2V9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYWdlS2V5XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcGFnZUtleShwYWdlS2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtwYWdlS2V5fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGlzRmlsdGVyZWQoKSB7XG4gICAgY29uc3Qge3F1ZXJ5QXJnc30gPSB0aGlzXG5cbiAgICBpZiAoXG4gICAgICBxdWVyeUFyZ3MuYWNjZXNzaWJsZUJ5IHx8XG4gICAgICBxdWVyeUFyZ3MuY291bnQgfHxcbiAgICAgIHF1ZXJ5QXJncy5saW1pdCB8fFxuICAgICAgcXVlcnlBcmdzLnBhZ2UgfHxcbiAgICAgIHF1ZXJ5QXJncy5wYXJhbXMgfHxcbiAgICAgIHF1ZXJ5QXJncy5wZXIgfHxcbiAgICAgIHF1ZXJ5QXJncy5yYW5zYWNrIHx8XG4gICAgICBxdWVyeUFyZ3Muc2VhcmNoXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fVxuICAgKi9cbiAgcGFyYW1zKCkge1xuICAgIGxldCBwYXJhbXMgPSB7fVxuXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnBhcmFtcykgcGFyYW1zID0gaW5jb3Jwb3JhdGUocGFyYW1zLCB0aGlzLnF1ZXJ5QXJncy5wYXJhbXMpXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmFiaWxpdGllcykgcGFyYW1zLmFiaWxpdGllcyA9IHRoaXMucXVlcnlBcmdzLmFiaWxpdGllc1xuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5hY2Nlc3NpYmxlQnkpIHBhcmFtcy5hY2Nlc3NpYmxlX2J5ID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHRoaXMucXVlcnlBcmdzLmFjY2Vzc2libGVCeSlcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MuY291bnQpIHBhcmFtcy5jb3VudCA9IHRoaXMucXVlcnlBcmdzLmNvdW50XG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmRpc3RpbmN0KSBwYXJhbXMuZGlzdGluY3QgPSB0aGlzLnF1ZXJ5QXJncy5kaXN0aW5jdFxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5ncm91cEJ5KSBwYXJhbXMuZ3JvdXBfYnkgPSB0aGlzLnF1ZXJ5QXJncy5ncm91cEJ5XG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnJhbnNhY2spIHBhcmFtcy5xID0gdGhpcy5xdWVyeUFyZ3MucmFuc2Fja1xuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5saW1pdCkgcGFyYW1zLmxpbWl0ID0gdGhpcy5xdWVyeUFyZ3MubGltaXRcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucHJlbG9hZCkgcGFyYW1zLnByZWxvYWQgPSB0aGlzLnF1ZXJ5QXJncy5wcmVsb2FkXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnBhZ2UpIHBhcmFtcy5wYWdlID0gdGhpcy5xdWVyeUFyZ3MucGFnZVxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5wZXIpIHBhcmFtcy5wZXIgPSB0aGlzLnF1ZXJ5QXJncy5wZXJcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3Muc2VhcmNoKSBwYXJhbXMuc2VhcmNoID0gdGhpcy5xdWVyeUFyZ3Muc2VhcmNoXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnNlbGVjdCkgcGFyYW1zLnNlbGVjdCA9IHRoaXMucXVlcnlBcmdzLnNlbGVjdFxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5zZWxlY3RDb2x1bW5zKSBwYXJhbXMuc2VsZWN0X2NvbHVtbnMgPSB0aGlzLnF1ZXJ5QXJncy5zZWxlY3RDb2x1bW5zXG5cbiAgICByZXR1cm4gcGFyYW1zXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBlclxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHBlcihwZXIpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3Blcn0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBlcktleVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHBlcktleShwZXJLZXkpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3BlcktleX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBwYXJhbXNcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICByYW5zYWNrKHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMpIHRoaXMuX21lcmdlKHtyYW5zYWNrOiBwYXJhbXN9KVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0Pn1cbiAgICovXG4gIGFzeW5jIHJlc3VsdCgpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuX3Jlc3BvbnNlKClcbiAgICBjb25zdCBtb2RlbHMgPSBkaWdnKHJlc3BvbnNlLCBcImNvbGxlY3Rpb25cIilcblxuICAgIHRoaXMuX2FkZFF1ZXJ5VG9Nb2RlbHMobW9kZWxzKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFJlc3VsdCh7Y29sbGVjdGlvbjogdGhpcywgbW9kZWxzLCByZXNwb25zZX0pXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBwYXJhbXNcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBzZWFyY2gocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcykgdGhpcy5fbWVyZ2Uoe3NlYXJjaDogcGFyYW1zfSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hLZXlcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBzZWFyY2hLZXkoc2VhcmNoS2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtzZWFyY2hLZXl9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBvcmlnaW5hbFNlbGVjdFxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHNlbGVjdChvcmlnaW5hbFNlbGVjdCkge1xuICAgIGNvbnN0IG5ld1NlbGVjdCA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IG9yaWdpbmFsTW9kZWxOYW1lIGluIG9yaWdpbmFsU2VsZWN0KSB7XG4gICAgICBjb25zdCBuZXdNb2RlbE5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUob3JpZ2luYWxNb2RlbE5hbWUpXG4gICAgICBjb25zdCBuZXdWYWx1ZXMgPSBbXVxuICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZXMgPSBvcmlnaW5hbFNlbGVjdFtvcmlnaW5hbE1vZGVsTmFtZV1cblxuICAgICAgZm9yIChjb25zdCBvcmlnaW5hbEF0dHJpYnV0ZU5hbWUgb2Ygb3JpZ2luYWxWYWx1ZXMpIHtcbiAgICAgICAgY29uc3QgbmV3QXR0cmlidXRlTmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbEF0dHJpYnV0ZU5hbWUpXG4gICAgICAgIG5ld1ZhbHVlcy5wdXNoKG5ld0F0dHJpYnV0ZU5hbWUpXG4gICAgICB9XG5cbiAgICAgIG5ld1NlbGVjdFtuZXdNb2RlbE5hbWVdID0gbmV3VmFsdWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtzZWxlY3Q6IG5ld1NlbGVjdH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IG9yaWdpbmFsU2VsZWN0XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgc2VsZWN0Q29sdW1ucyhvcmlnaW5hbFNlbGVjdCkge1xuICAgIGNvbnN0IG5ld1NlbGVjdCA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IG9yaWdpbmFsTW9kZWxOYW1lIGluIG9yaWdpbmFsU2VsZWN0KSB7XG4gICAgICBjb25zdCBuZXdNb2RlbE5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKG9yaWdpbmFsTW9kZWxOYW1lKSlcbiAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IFtdXG4gICAgICBjb25zdCBvcmlnaW5hbFZhbHVlcyA9IG9yaWdpbmFsU2VsZWN0W29yaWdpbmFsTW9kZWxOYW1lXVxuXG4gICAgICBmb3IgKGNvbnN0IG9yaWdpbmFsQXR0cmlidXRlTmFtZSBvZiBvcmlnaW5hbFZhbHVlcykge1xuICAgICAgICBjb25zdCBuZXdBdHRyaWJ1dGVOYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKG9yaWdpbmFsQXR0cmlidXRlTmFtZSlcbiAgICAgICAgbmV3VmFsdWVzLnB1c2gobmV3QXR0cmlidXRlTmFtZSlcbiAgICAgIH1cblxuICAgICAgbmV3U2VsZWN0W25ld01vZGVsTmFtZV0gPSBuZXdWYWx1ZXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3NlbGVjdENvbHVtbnM6IG5ld1NlbGVjdH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNvcnRCeVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHNvcnQoc29ydEJ5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtyYW5zYWNrOiB7czogc29ydEJ5fX0pXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8TW9kZWxPZjxNQz4+Pn1cbiAgICovXG4gIGFzeW5jIHRvQXJyYXkoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLl9yZXNwb25zZSgpXG4gICAgY29uc3QgbW9kZWxzID0gZGlnZyhyZXNwb25zZSwgXCJjb2xsZWN0aW9uXCIpXG5cbiAgICB0aGlzLl9hZGRRdWVyeVRvTW9kZWxzKG1vZGVscylcblxuICAgIHJldHVybiBtb2RlbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7TUN9XG4gICAqL1xuICBtb2RlbENsYXNzKCkge1xuICAgIGlmICghdGhpcy5hcmdzLm1vZGVsQ2xhc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG1vZGVsIGNsYXNzIGdpdmVuIGluIGFyZ3NcIilcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcmdzLm1vZGVsQ2xhc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7QXBpTWFrZXJDb2xsZWN0aW9ufVxuICAgKi9cbiAgY2xvbmUoKSB7XG4gICAgY29uc3QgY2xvbmVkUXVlcnlBcmdzID0gY2xvbmVEZWVwKHRoaXMucXVlcnlBcmdzKVxuXG4gICAgcmV0dXJuIG5ldyBBcGlNYWtlckNvbGxlY3Rpb24odGhpcy5hcmdzLCBjbG9uZWRRdWVyeUFyZ3MpXG4gIH1cblxuICAvLyBUaGlzIGlzIG5lZWRlZCB3aGVuIHJlbG9hZGluZyBhIHZlcnNpb24gb2YgdGhlIG1vZGVsIHdpdGggdGhlIHNhbWUgc2VsZWN0ZWQgYXR0cmlidXRlcyBhbmQgcHJlbG9hZHNcbiAgX2FkZFF1ZXJ5VG9Nb2RlbHMobW9kZWxzKSB7XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBtb2RlbHMpIHtcbiAgICAgIG1vZGVsLmNvbGxlY3Rpb24gPSB0aGlzXG4gICAgfVxuICB9XG5cbiAgX21lcmdlKG5ld1F1ZXJ5QXJncykge1xuICAgIGluY29ycG9yYXRlKHRoaXMucXVlcnlBcmdzLCBuZXdRdWVyeUFyZ3MpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgX3Jlc3BvbnNlKCkge1xuICAgIGlmICghdGhpcy5hcmdzKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBhcmdzP1wiKVxuICAgIGlmICghdGhpcy5hcmdzLm1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIk5vIG1vZGVsQ2xhc3MgaW4gYXJnc1wiKVxuICAgIGlmICghdGhpcy5hcmdzLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEpIHRocm93IG5ldyBFcnJvcihgTm8gbW9kZWxDbGFzc0RhdGEgb24gbW9kZWxDbGFzcyAke3RoaXMuYXJncy5tb2RlbENsYXNzPy5uYW1lfSAoJHt0eXBlb2YgdGhpcy5hcmdzLm1vZGVsQ2xhc3N9KWApXG5cbiAgICBjb25zdCBtb2RlbENsYXNzRGF0YSA9IHRoaXMuYXJncy5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKClcblxuICAgIHJldHVybiBDb21tYW5kc1Bvb2wuYWRkQ29tbWFuZChcbiAgICAgIHtcbiAgICAgICAgYXJnczogdGhpcy5wYXJhbXMoKSxcbiAgICAgICAgY29tbWFuZDogYCR7bW9kZWxDbGFzc0RhdGEuY29sbGVjdGlvbk5hbWV9LWluZGV4YCxcbiAgICAgICAgY29sbGVjdGlvbk5hbWU6IG1vZGVsQ2xhc3NEYXRhLmNvbGxlY3Rpb25OYW1lLFxuICAgICAgICB0eXBlOiBcImluZGV4XCJcbiAgICAgIH0sXG4gICAgICB7fVxuICAgIClcbiAgfVxufVxuIl19
|
|
@@ -9,7 +9,7 @@ import DraggableSortItem from "./item";
|
|
|
9
9
|
import PropTypes from "prop-types";
|
|
10
10
|
import memo from "set-state-compare/build/memo.js";
|
|
11
11
|
import propTypesExact from "prop-types-exact";
|
|
12
|
-
import useEventEmitter from "
|
|
12
|
+
import useEventEmitter from "ya-use-event-emitter";
|
|
13
13
|
export default memo(shapeComponent(class DraggableSort extends ShapeComponent {
|
|
14
14
|
static defaultProps = {
|
|
15
15
|
activeItemStyle: { backgroundColor: "#fff" },
|
|
@@ -77,4 +77,4 @@ export default memo(shapeComponent(class DraggableSort extends ShapeComponent {
|
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
79
|
}));
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImRyYWdnYWJsZS1zb3J0L2luZGV4LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ25ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxLQUFLLEVBQUUsRUFBQyxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDcEMsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLGlCQUFpQixNQUFNLFFBQVEsQ0FBQTtBQUN0QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxlQUFlLE1BQU0sc0JBQXNCLENBQUE7QUFFbEQsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sYUFBYyxTQUFRLGNBQWM7SUFDM0UsTUFBTSxDQUFDLFlBQVksR0FBRztRQUNwQixlQUFlLEVBQUUsRUFBQyxlQUFlLEVBQUUsTUFBTSxFQUFDO1FBQzFDLFVBQVUsRUFBRSxLQUFLO0tBQ2xCLENBQUE7SUFFRCxNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxlQUFlLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDakMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDakMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVTtRQUNoQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDekIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1FBQzFDLFVBQVUsRUFB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QyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7QW5pbWF0ZWQsIFBhblJlc3BvbmRlcn0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSBcImV2ZW50ZW1pdHRlcjNcIlxuaW1wb3J0IFJlYWN0LCB7dXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7U2hhcGVDb21wb25lbnQsIHNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBDb250cm9sbGVyIGZyb20gXCIuL2NvbnRyb2xsZXIuanNcIlxuaW1wb3J0IERyYWdnYWJsZVNvcnRJdGVtIGZyb20gXCIuL2l0ZW1cIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwieWEtdXNlLWV2ZW50LWVtaXR0ZXJcIlxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIERyYWdnYWJsZVNvcnQgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgYWN0aXZlSXRlbVN0eWxlOiB7YmFja2dyb3VuZENvbG9yOiBcIiNmZmZcIn0sXG4gICAgaG9yaXpvbnRhbDogZmFsc2VcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgYWN0aXZlSXRlbVN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGNhY2hlS2V5RXh0cmFjdG9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkYXRhOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICBkYXRhU2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGV2ZW50czogUHJvcFR5cGVzLmluc3RhbmNlT2YoRXZlbnRFbWl0dGVyKSxcbiAgICBob3Jpem9udGFsOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGtleUV4dHJhY3RvcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkRyYWdJdGVtRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkRyYWdJdGVtU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uSXRlbU1vdmVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvblJlb3JkZXJlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICByZW5kZXJJdGVtOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge2RhdGEsIGtleUV4dHJhY3Rvcn0gPSB0aGlzLnBcbiAgICBjb25zdCB7ZXZlbnRzfSA9IHRoaXMucHJvcHNcblxuICAgIHRoaXMuY29udHJvbGxlciB8fD0gbmV3IENvbnRyb2xsZXIoe2RhdGEsIGV2ZW50cywga2V5RXh0cmFjdG9yfSlcbiAgICB0aGlzLnBhblJlc3BvbmRlciB8fD0gUGFuUmVzcG9uZGVyLmNyZWF0ZSh7XG4gICAgICBvblN0YXJ0U2hvdWxkU2V0UGFuUmVzcG9uZGVyOiAoZSkgPT4ge1xuICAgICAgICBjb25zdCBpbml0aWFsRHJhZ1Bvc2l0aW9uID0ge3g6IGUubmF0aXZlRXZlbnQubG9jYXRpb25YLCB5OiBlLm5hdGl2ZUV2ZW50LmxvY2F0aW9uWX1cblxuICAgICAgICB0aGlzLmNvbnRyb2xsZXIuc2V0SW5pdGlhbERyYWdQb3NpdGlvbihpbml0aWFsRHJhZ1Bvc2l0aW9uKVxuXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xsZXIuZHJhZ2dlZEl0ZW1EYXRhKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uUGFuUmVzcG9uZGVyTW92ZTogKF9lLCBnZXN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMudHQuY29udHJvbGxlci5vbk1vdmUoe2dlc3RhdGV9KVxuICAgICAgfSxcbiAgICAgIG9uUGFuUmVzcG9uZGVyUmVsZWFzZTogKF9lLCBfZ2VzdGF0ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sbGVyLmRyYWdnZWRJdGVtKSB7XG4gICAgICAgICAgdGhpcy50dC5jb250cm9sbGVyLm9uRHJhZ0VuZCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMuY29udHJvbGxlci5nZXRFdmVudHMoKSwgXCJvbkRyYWdTdGFydFwiLCB0aGlzLnR0Lm9uRHJhZ0l0ZW1TdGFydClcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy5jb250cm9sbGVyLmdldEV2ZW50cygpLCBcIm9uRHJhZ0VuZFwiLCB0aGlzLnR0Lm9uRHJhZ0l0ZW1FbmQpXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2RhdGEsIGhvcml6b250YWwsIGtleUV4dHJhY3RvciwgcmVuZGVySXRlbX0gPSB0aGlzLnBcbiAgICBjb25zdCB7Y2FjaGVLZXlFeHRyYWN0b3IsIGRhdGFTZXR9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGFjdHVhbERhdGFTZXQgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICBjb21wb25lbnQ6IFwiZHJhZ2dhYmxlLXNvcnRcIixcbiAgICAgIC4uLmRhdGFTZXRcbiAgICB9KSwgW2RhdGFTZXRdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBbmltYXRlZC5WaWV3XG4gICAgICAgIGRhdGFTZXQ9e2FjdHVhbERhdGFTZXR9XG4gICAgICAgIHN0eWxlPXt0aGlzLmNhY2hlKFwicm9vdFZpZXdTdHlsZVwiLCB7ZmxleERpcmVjdGlvbjogaG9yaXpvbnRhbCA/IFwicm93XCIgOiBcImNvbHVtblwifSwgW2hvcml6b250YWxdKX1cbiAgICAgICAgey4uLnRoaXMudHQucGFuUmVzcG9uZGVyLnBhbkhhbmRsZXJzfVxuICAgICAgPlxuICAgICAgICB7ZGF0YS5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4gKCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV4dHJhLXBhcmVuc1xuICAgICAgICAgIDxEcmFnZ2FibGVTb3J0SXRlbVxuICAgICAgICAgICAgYWN0aXZlSXRlbVN0eWxlPXt0aGlzLnAuYWN0aXZlSXRlbVN0eWxlfVxuICAgICAgICAgICAgY2FjaGVLZXk9e2NhY2hlS2V5RXh0cmFjdG9yID8gY2FjaGVLZXlFeHRyYWN0b3IoaXRlbSkgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBjb250cm9sbGVyPXt0aGlzLnR0LmNvbnRyb2xsZXJ9XG4gICAgICAgICAgICBpdGVtPXtpdGVtfVxuICAgICAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgICAgICBrZXk9e2tleUV4dHJhY3RvcihpdGVtKX1cbiAgICAgICAgICAgIG9uSXRlbU1vdmVkPXt0aGlzLnByb3BzLm9uSXRlbU1vdmVkfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17cmVuZGVySXRlbX1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQW5pbWF0ZWQuVmlldz5cbiAgICApXG4gIH1cblxuICBvbkRyYWdJdGVtU3RhcnQgPSAoe2l0ZW1EYXRhfSkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ0l0ZW1TdGFydCkge1xuICAgICAgdGhpcy5wLm9uRHJhZ0l0ZW1TdGFydCh7aXRlbURhdGF9KVxuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ0l0ZW1FbmQgPSAoYXJncykgPT4ge1xuICAgIGlmIChhcmdzLnRvUG9zaXRpb24gIT09IG51bGwpIHtcbiAgICAgIHRoaXMucC5vblJlb3JkZXJlZChhcmdzKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ0l0ZW1FbmQpIHtcbiAgICAgIHRoaXMucC5vbkRyYWdJdGVtRW5kKGFyZ3MpXG4gICAgfVxuICB9XG59KSlcbiJdfQ==
|
|
@@ -7,7 +7,7 @@ import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-co
|
|
|
7
7
|
import PropTypes from "prop-types";
|
|
8
8
|
import memo from "set-state-compare/build/memo.js";
|
|
9
9
|
import propTypesExact from "prop-types-exact";
|
|
10
|
-
import useEventEmitter from "
|
|
10
|
+
import useEventEmitter from "ya-use-event-emitter";
|
|
11
11
|
export default memo(shapeComponent(class DraggableSortItem extends ShapeComponent {
|
|
12
12
|
static propTypes = propTypesExact({
|
|
13
13
|
activeItemStyle: PropTypes.object,
|
|
@@ -143,4 +143,4 @@ export default memo(shapeComponent(class DraggableSortItem extends ShapeComponen
|
|
|
143
143
|
}
|
|
144
144
|
};
|
|
145
145
|
}));
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiZHJhZ2dhYmxlLXNvcnQvaXRlbS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEtBQUssRUFBRSxFQUFDLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNwQyxPQUFPLEVBQUMsY0FBYyxFQUFFLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pGLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLGVBQWUsTUFBTSx5QkFBeUIsQ0FBQTtBQUVyRCxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxpQkFBa0IsU0FBUSxjQUFjO0lBQy9FLE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLGVBQWUsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUNqQyxRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDMUIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUN2QyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVO1FBQzlCLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDdEMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQzNCLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7S0FDdEMsQ0FBQyxDQUFBO0lBRUYsYUFBYSxHQUFHLElBQUksQ0FBQTtJQUVwQixLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLE1BQU0sRUFBRSxL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SixDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7QW5pbWF0ZWQsIEVhc2luZywgUGFuUmVzcG9uZGVyfSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5pbXBvcnQgUmVhY3QsIHt1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtTaGFwZUNvbXBvbmVudCwgc2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwiLi4vdXNlLWV2ZW50LWVtaXR0ZXIuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIERyYWdnYWJsZVNvcnRJdGVtIGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGFjdGl2ZUl0ZW1TdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBjYWNoZUtleTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb250cm9sbGVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgaXRlbTogUHJvcFR5cGVzLmFueS5pc1JlcXVpcmVkLFxuICAgIGl0ZW1JbmRleDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIG9uSXRlbU1vdmVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICByZW5kZXJJdGVtOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgaW5pdGlhbExheW91dCA9IG51bGxcblxuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgZHJhZ2dpbmc6IGZhbHNlXG4gICAgfSlcblxuICAgIHRoaXMuZXZlbnRzIHx8PSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgICB0aGlzLnBvc2l0aW9uIHx8PSBuZXcgQW5pbWF0ZWQuVmFsdWVYWSgpXG4gICAgdGhpcy5wYW5SZXNwb25kZXIgfHw9IFBhblJlc3BvbmRlci5jcmVhdGUoe1xuICAgICAgb25TdGFydFNob3VsZFNldFBhblJlc3BvbmRlcjogKF9ldmVudCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtkcmFnZ2luZzogdHJ1ZX0pXG4gICAgICAgIHRoaXMucC5jb250cm9sbGVyLm9uRHJhZ1N0YXJ0KHtpdGVtOiB0aGlzLnAuaXRlbSwgaXRlbUluZGV4OiB0aGlzLnAuaXRlbUluZGV4fSlcblxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMucC5jb250cm9sbGVyLmdldEV2ZW50cygpLCBcIm9uRHJhZ1N0YXJ0XCIsIHRoaXMudHQub25EcmFnU3RhcnQpXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMucC5jb250cm9sbGVyLmdldEV2ZW50cygpLCBcIm9uRHJhZ0VuZEFuaW1hdGlvblwiLCB0aGlzLnR0Lm9uRHJhZ0VuZEFuaW1hdGlvbilcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwibW92ZVwiLCB0aGlzLnR0Lm9uTW92ZSlcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwibW92ZVRvUG9zaXRpb25cIiwgdGhpcy50dC5vbk1vdmVUb1Bvc2l0aW9uKVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmV2ZW50cywgXCJyZXNldFBvc2l0aW9uXCIsIHRoaXMudHQub25SZXNldFBvc2l0aW9uKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHthY3RpdmVJdGVtU3R5bGUsIGl0ZW0sIHJlbmRlckl0ZW19ID0gdGhpcy5wXG4gICAgY29uc3Qge2FjdGl2ZX0gPSB0aGlzLnNcbiAgICBjb25zdCBzdHlsZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VUcmFuc2Zvcm0gPSB0aGlzLnR0LnBvc2l0aW9uLmdldFRyYW5zbGF0ZVRyYW5zZm9ybSgpXG4gICAgICAgIGNvbnN0IHN0eWxlID0ge3RyYW5zZm9ybTogYmFzZVRyYW5zZm9ybX1cblxuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgaWYgKGFjdGl2ZUl0ZW1TdHlsZSkge1xuICAgICAgICAgICAgY29uc3Qge3RyYW5zZm9ybTogYWN0aXZlVHJhbnNmb3JtLCAuLi5yZXN0QWN0aXZlU3R5bGV9ID0gYWN0aXZlSXRlbVN0eWxlXG5cbiAgICAgICAgICAgIGlmIChhY3RpdmVUcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEFjdGl2ZVRyYW5zZm9ybSA9IEFycmF5LmlzQXJyYXkoYWN0aXZlVHJhbnNmb3JtKSA/IGFjdGl2ZVRyYW5zZm9ybSA6IFthY3RpdmVUcmFuc2Zvcm1dXG5cbiAgICAgICAgICAgICAgc3R5bGUudHJhbnNmb3JtID0gYmFzZVRyYW5zZm9ybS5jb25jYXQobm9ybWFsaXplZEFjdGl2ZVRyYW5zZm9ybSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihzdHlsZSwgcmVzdEFjdGl2ZVN0eWxlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzdHlsZS5lbGV2YXRpb24gPSAyXG4gICAgICAgICAgc3R5bGUuekluZGV4ID0gOTk5OTlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHlsZVxuICAgICAgfSxcbiAgICAgIFthY3RpdmUsIGFjdGl2ZUl0ZW1TdHlsZV1cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFuaW1hdGVkLlZpZXcgZGF0YVNldD17dGhpcy5jYWNoZShcImRyYWdnYWJsZVNvcnRJdGVtRGF0YVNldFwiLCB7Y29tcG9uZW50OiBcImRyYWdnYWJsZS1zb3J0L2l0ZW1cIn0pfSBvbkxheW91dD17dGhpcy50dC5vbkxheW91dH0gc3R5bGU9e3N0eWxlfT5cbiAgICAgICAge3JlbmRlckl0ZW0oe2lzQWN0aXZlOiBhY3RpdmUsIGl0ZW0sIHRvdWNoUHJvcHM6IHRoaXMudHQucGFuUmVzcG9uZGVyLnBhbkhhbmRsZXJzfSl9XG4gICAgICA8L0FuaW1hdGVkLlZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25EcmFnU3RhcnQgPSAoe2l0ZW1EYXRhfSkgPT4ge1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge2RyYWdnaW5nOiB0cnVlfVxuXG4gICAgaWYgKGl0ZW1EYXRhLmluZGV4ID09IHRoaXMucC5pdGVtSW5kZXgpIHtcbiAgICAgIG5ld1N0YXRlLmFjdGl2ZSA9IHRydWVcbiAgICAgIHRoaXMuYmFzZVhBdFN0YXJ0ZWREcmFnZ2luZyA9IHRoaXMuZ2V0QmFzZVgoKVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpXG4gIH1cblxuICBvbkRyYWdFbmRBbmltYXRpb24gPSAoKSA9PiB0aGlzLnNldFN0YXRlKHthY3RpdmU6IGZhbHNlLCBkcmFnZ2luZzogZmFsc2V9KVxuXG4gIG9uTGF5b3V0ID0gKGUpID0+IHtcbiAgICBjb25zdCB7Y29udHJvbGxlciwgaXRlbSwgaXRlbUluZGV4fSA9IHRoaXMucFxuXG4gICAgY29udHJvbGxlci5vbkl0ZW1MYXlvdXQoe2V2ZW50czogdGhpcy50dC5ldmVudHMsIGluZGV4OiBpdGVtSW5kZXgsIGl0ZW0sIGxheW91dDogZS5uYXRpdmVFdmVudC5sYXlvdXR9KVxuXG4gICAgaWYgKCF0aGlzLnR0LmluaXRpYWxMYXlvdXQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbExheW91dCA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgfVxuICB9XG5cbiAgb25Nb3ZlID0gKHtnZXN0YXRlfSkgPT4ge1xuICAgIGNvbnN0IHggPSBnZXN0YXRlLmR4ICsgdGhpcy50dC5iYXNlWEF0U3RhcnRlZERyYWdnaW5nIC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCB5ID0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnlcblxuICAgIHRoaXMudHQucG9zaXRpb24uc2V0VmFsdWUoe3gsIHl9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25JdGVtTW92ZWQpIHtcbiAgICAgIHRoaXMucC5vbkl0ZW1Nb3ZlZCh7aXRlbUluZGV4OiB0aGlzLnAuaXRlbUluZGV4LCB4LCB5fSlcbiAgICB9XG4gIH1cblxuICBvbk1vdmVUb1Bvc2l0aW9uID0gKHt4LCB5fSkgPT4ge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRYRnJvbVN0YXJ0aW5nUG9zaXRpb24gPSB4IC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCBhbmltYXRpb25BcmdzID0ge1xuICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgIGVhc2luZzogRWFzaW5nLmluT3V0KEVhc2luZy5saW5lYXIpLFxuICAgICAgdG9WYWx1ZToge1xuICAgICAgICB4OiBjYWxjdWxhdGVkWEZyb21TdGFydGluZ1Bvc2l0aW9uLFxuICAgICAgICB5XG4gICAgICB9LFxuICAgICAgdXNlTmF0aXZlRHJpdmVyOiB0cnVlXG4gICAgfVxuICAgIGNvbnN0IGFuaW1hdGlvbkV2ZW50QXJncyA9IHthbmltYXRpb25BcmdzLCBhbmltYXRpb25UeXBlOiBcIm1vdmVUb1Bvc2l0aW9uXCIsIGl0ZW06IHRoaXMucC5pdGVtfVxuXG4gICAgdGhpcy5wLmNvbnRyb2xsZXIuZXZlbnRzLmVtaXQoXCJvbkFuaW1hdGlvblN0YXJ0XCIsIGFuaW1hdGlvbkV2ZW50QXJncylcblxuICAgIEFuaW1hdGVkXG4gICAgICAudGltaW5nKHRoaXMudHQucG9zaXRpb24sIGFuaW1hdGlvbkFyZ3MpXG4gICAgICAuc3RhcnQoKCkgPT4ge1xuICAgICAgICB0aGlzLnAuY29udHJvbGxlci5ldmVudHMuZW1pdChcIm9uQW5pbWF0aW9uRW5kXCIsIGFuaW1hdGlvbkV2ZW50QXJncylcbiAgICAgIH0pXG5cbiAgICBpZiAodGhpcy5wcm9wcy5vbkl0ZW1Nb3ZlZCkge1xuICAgICAgdGhpcy5wLm9uSXRlbU1vdmVkKHtcbiAgICAgICAgYW5pbWF0aW9uQXJncyxcbiAgICAgICAgaXRlbUluZGV4OiB0aGlzLnAuaXRlbUluZGV4LFxuICAgICAgICB4OiBjYWxjdWxhdGVkWEZyb21TdGFydGluZ1Bvc2l0aW9uLFxuICAgICAgICB5XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldEJhc2VYID0gKCkgPT4gdGhpcy5wLmNvbnRyb2xsZXIuZ2V0SXRlbURhdGFGb3JJbmRleCh0aGlzLnAuaXRlbUluZGV4KS5iYXNlWFxuXG4gIG9uUmVzZXRQb3NpdGlvbiA9IChhcmdzKSA9PiB7XG4gICAgY29uc3QgYmFzZVggPSB0aGlzLmdldEJhc2VYKCkgLSB0aGlzLnR0LmluaXRpYWxMYXlvdXQueFxuICAgIGNvbnN0IGFuaW1hdGlvbkFyZ3MgPSB7XG4gICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgZWFzaW5nOiBFYXNpbmcuaW5PdXQoRWFzaW5nLmxpbmVhciksXG4gICAgICB0b1ZhbHVlOiB7XG4gICAgICAgIHg6IGJhc2VYLFxuICAgICAgICB5OiAwXG4gICAgICB9LFxuICAgICAgdXNlTmF0aXZlRHJpdmVyOiB0cnVlXG4gICAgfVxuICAgIGNvbnN0IGFuaW1hdGlvbkV2ZW50QXJncyA9IHthbmltYXRpb25BcmdzLCBhbmltYXRpb25UeXBlOiBcInJlc2V0UG9zaXRpb25cIiwgaXRlbTogdGhpcy5wLml0ZW19XG5cbiAgICB0aGlzLnAuY29udHJvbGxlci5ldmVudHMuZW1pdChcIm9uQW5pbWF0aW9uU3RhcnRcIiwgYW5pbWF0aW9uRXZlbnRBcmdzKVxuXG4gICAgQW5pbWF0ZWRcbiAgICAgIC50aW1pbmcodGhpcy50dC5wb3NpdGlvbiwgYW5pbWF0aW9uQXJncylcbiAgICAgIC5zdGFydCgoKSA9PiB7XG4gICAgICAgIHRoaXMucC5jb250cm9sbGVyLmV2ZW50cy5lbWl0KFwib25BbmltYXRpb25FbmRcIiwgYW5pbWF0aW9uRXZlbnRBcmdzKVxuICAgICAgICBpZiAoYXJncz8uY2FsbGJhY2spIGFyZ3MuY2FsbGJhY2soKVxuICAgICAgfSlcblxuICAgIGlmICh0aGlzLnByb3BzLm9uSXRlbU1vdmVkKSB7XG4gICAgICB0aGlzLnAub25JdGVtTW92ZWQoe1xuICAgICAgICBhbmltYXRpb25BcmdzLFxuICAgICAgICBpdGVtSW5kZXg6IHRoaXMucC5pdGVtSW5kZXgsXG4gICAgICAgIHg6IGJhc2VYLFxuICAgICAgICB5OiAwXG4gICAgICB9KVxuICAgIH1cbiAgfVxufSkpXG4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiZHJhZ2dhYmxlLXNvcnQvaXRlbS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEtBQUssRUFBRSxFQUFDLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNwQyxPQUFPLEVBQUMsY0FBYyxFQUFFLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pGLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLGVBQWUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVsRCxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxpQkFBa0IsU0FBUSxjQUFjO0lBQy9FLE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLGVBQWUsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUNqQyxRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDMUIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUN2QyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVO1FBQzlCLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDdEMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQzNCLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7S0FDdEMsQ0FBQyxDQUFBO0lBRUYsYUFBYSxHQUFHLElBQUksQ0FBQTtJQUVwQixLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLE1BQU0sRUFBRSxL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SixDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7QW5pbWF0ZWQsIEVhc2luZywgUGFuUmVzcG9uZGVyfSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5pbXBvcnQgUmVhY3QsIHt1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtTaGFwZUNvbXBvbmVudCwgc2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwieWEtdXNlLWV2ZW50LWVtaXR0ZXJcIlxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIERyYWdnYWJsZVNvcnRJdGVtIGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGFjdGl2ZUl0ZW1TdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBjYWNoZUtleTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb250cm9sbGVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgaXRlbTogUHJvcFR5cGVzLmFueS5pc1JlcXVpcmVkLFxuICAgIGl0ZW1JbmRleDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIG9uSXRlbU1vdmVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICByZW5kZXJJdGVtOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgaW5pdGlhbExheW91dCA9IG51bGxcblxuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgZHJhZ2dpbmc6IGZhbHNlXG4gICAgfSlcblxuICAgIHRoaXMuZXZlbnRzIHx8PSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgICB0aGlzLnBvc2l0aW9uIHx8PSBuZXcgQW5pbWF0ZWQuVmFsdWVYWSgpXG4gICAgdGhpcy5wYW5SZXNwb25kZXIgfHw9IFBhblJlc3BvbmRlci5jcmVhdGUoe1xuICAgICAgb25TdGFydFNob3VsZFNldFBhblJlc3BvbmRlcjogKF9ldmVudCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtkcmFnZ2luZzogdHJ1ZX0pXG4gICAgICAgIHRoaXMucC5jb250cm9sbGVyLm9uRHJhZ1N0YXJ0KHtpdGVtOiB0aGlzLnAuaXRlbSwgaXRlbUluZGV4OiB0aGlzLnAuaXRlbUluZGV4fSlcblxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMucC5jb250cm9sbGVyLmdldEV2ZW50cygpLCBcIm9uRHJhZ1N0YXJ0XCIsIHRoaXMudHQub25EcmFnU3RhcnQpXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMucC5jb250cm9sbGVyLmdldEV2ZW50cygpLCBcIm9uRHJhZ0VuZEFuaW1hdGlvblwiLCB0aGlzLnR0Lm9uRHJhZ0VuZEFuaW1hdGlvbilcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwibW92ZVwiLCB0aGlzLnR0Lm9uTW92ZSlcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwibW92ZVRvUG9zaXRpb25cIiwgdGhpcy50dC5vbk1vdmVUb1Bvc2l0aW9uKVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmV2ZW50cywgXCJyZXNldFBvc2l0aW9uXCIsIHRoaXMudHQub25SZXNldFBvc2l0aW9uKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHthY3RpdmVJdGVtU3R5bGUsIGl0ZW0sIHJlbmRlckl0ZW19ID0gdGhpcy5wXG4gICAgY29uc3Qge2FjdGl2ZX0gPSB0aGlzLnNcbiAgICBjb25zdCBzdHlsZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VUcmFuc2Zvcm0gPSB0aGlzLnR0LnBvc2l0aW9uLmdldFRyYW5zbGF0ZVRyYW5zZm9ybSgpXG4gICAgICAgIGNvbnN0IHN0eWxlID0ge3RyYW5zZm9ybTogYmFzZVRyYW5zZm9ybX1cblxuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgaWYgKGFjdGl2ZUl0ZW1TdHlsZSkge1xuICAgICAgICAgICAgY29uc3Qge3RyYW5zZm9ybTogYWN0aXZlVHJhbnNmb3JtLCAuLi5yZXN0QWN0aXZlU3R5bGV9ID0gYWN0aXZlSXRlbVN0eWxlXG5cbiAgICAgICAgICAgIGlmIChhY3RpdmVUcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEFjdGl2ZVRyYW5zZm9ybSA9IEFycmF5LmlzQXJyYXkoYWN0aXZlVHJhbnNmb3JtKSA/IGFjdGl2ZVRyYW5zZm9ybSA6IFthY3RpdmVUcmFuc2Zvcm1dXG5cbiAgICAgICAgICAgICAgc3R5bGUudHJhbnNmb3JtID0gYmFzZVRyYW5zZm9ybS5jb25jYXQobm9ybWFsaXplZEFjdGl2ZVRyYW5zZm9ybSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihzdHlsZSwgcmVzdEFjdGl2ZVN0eWxlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzdHlsZS5lbGV2YXRpb24gPSAyXG4gICAgICAgICAgc3R5bGUuekluZGV4ID0gOTk5OTlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHlsZVxuICAgICAgfSxcbiAgICAgIFthY3RpdmUsIGFjdGl2ZUl0ZW1TdHlsZV1cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFuaW1hdGVkLlZpZXcgZGF0YVNldD17dGhpcy5jYWNoZShcImRyYWdnYWJsZVNvcnRJdGVtRGF0YVNldFwiLCB7Y29tcG9uZW50OiBcImRyYWdnYWJsZS1zb3J0L2l0ZW1cIn0pfSBvbkxheW91dD17dGhpcy50dC5vbkxheW91dH0gc3R5bGU9e3N0eWxlfT5cbiAgICAgICAge3JlbmRlckl0ZW0oe2lzQWN0aXZlOiBhY3RpdmUsIGl0ZW0sIHRvdWNoUHJvcHM6IHRoaXMudHQucGFuUmVzcG9uZGVyLnBhbkhhbmRsZXJzfSl9XG4gICAgICA8L0FuaW1hdGVkLlZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25EcmFnU3RhcnQgPSAoe2l0ZW1EYXRhfSkgPT4ge1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge2RyYWdnaW5nOiB0cnVlfVxuXG4gICAgaWYgKGl0ZW1EYXRhLmluZGV4ID09IHRoaXMucC5pdGVtSW5kZXgpIHtcbiAgICAgIG5ld1N0YXRlLmFjdGl2ZSA9IHRydWVcbiAgICAgIHRoaXMuYmFzZVhBdFN0YXJ0ZWREcmFnZ2luZyA9IHRoaXMuZ2V0QmFzZVgoKVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpXG4gIH1cblxuICBvbkRyYWdFbmRBbmltYXRpb24gPSAoKSA9PiB0aGlzLnNldFN0YXRlKHthY3RpdmU6IGZhbHNlLCBkcmFnZ2luZzogZmFsc2V9KVxuXG4gIG9uTGF5b3V0ID0gKGUpID0+IHtcbiAgICBjb25zdCB7Y29udHJvbGxlciwgaXRlbSwgaXRlbUluZGV4fSA9IHRoaXMucFxuXG4gICAgY29udHJvbGxlci5vbkl0ZW1MYXlvdXQoe2V2ZW50czogdGhpcy50dC5ldmVudHMsIGluZGV4OiBpdGVtSW5kZXgsIGl0ZW0sIGxheW91dDogZS5uYXRpdmVFdmVudC5sYXlvdXR9KVxuXG4gICAgaWYgKCF0aGlzLnR0LmluaXRpYWxMYXlvdXQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbExheW91dCA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgfVxuICB9XG5cbiAgb25Nb3ZlID0gKHtnZXN0YXRlfSkgPT4ge1xuICAgIGNvbnN0IHggPSBnZXN0YXRlLmR4ICsgdGhpcy50dC5iYXNlWEF0U3RhcnRlZERyYWdnaW5nIC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCB5ID0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnlcblxuICAgIHRoaXMudHQucG9zaXRpb24uc2V0VmFsdWUoe3gsIHl9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25JdGVtTW92ZWQpIHtcbiAgICAgIHRoaXMucC5vbkl0ZW1Nb3ZlZCh7aXRlbUluZGV4OiB0aGlzLnAuaXRlbUluZGV4LCB4LCB5fSlcbiAgICB9XG4gIH1cblxuICBvbk1vdmVUb1Bvc2l0aW9uID0gKHt4LCB5fSkgPT4ge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRYRnJvbVN0YXJ0aW5nUG9zaXRpb24gPSB4IC0gdGhpcy50dC5pbml0aWFsTGF5b3V0LnhcbiAgICBjb25zdCBhbmltYXRpb25BcmdzID0ge1xuICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgIGVhc2luZzogRWFzaW5nLmluT3V0KEVhc2luZy5saW5lYXIpLFxuICAgICAgdG9WYWx1ZToge1xuICAgICAgICB4OiBjYWxjdWxhdGVkWEZyb21TdGFydGluZ1Bvc2l0aW9uLFxuICAgICAgICB5XG4gICAgICB9LFxuICAgICAgdXNlTmF0aXZlRHJpdmVyOiB0cnVlXG4gICAgfVxuICAgIGNvbnN0IGFuaW1hdGlvbkV2ZW50QXJncyA9IHthbmltYXRpb25BcmdzLCBhbmltYXRpb25UeXBlOiBcIm1vdmVUb1Bvc2l0aW9uXCIsIGl0ZW06IHRoaXMucC5pdGVtfVxuXG4gICAgdGhpcy5wLmNvbnRyb2xsZXIuZXZlbnRzLmVtaXQoXCJvbkFuaW1hdGlvblN0YXJ0XCIsIGFuaW1hdGlvbkV2ZW50QXJncylcblxuICAgIEFuaW1hdGVkXG4gICAgICAudGltaW5nKHRoaXMudHQucG9zaXRpb24sIGFuaW1hdGlvbkFyZ3MpXG4gICAgICAuc3RhcnQoKCkgPT4ge1xuICAgICAgICB0aGlzLnAuY29udHJvbGxlci5ldmVudHMuZW1pdChcIm9uQW5pbWF0aW9uRW5kXCIsIGFuaW1hdGlvbkV2ZW50QXJncylcbiAgICAgIH0pXG5cbiAgICBpZiAodGhpcy5wcm9wcy5vbkl0ZW1Nb3ZlZCkge1xuICAgICAgdGhpcy5wLm9uSXRlbU1vdmVkKHtcbiAgICAgICAgYW5pbWF0aW9uQXJncyxcbiAgICAgICAgaXRlbUluZGV4OiB0aGlzLnAuaXRlbUluZGV4LFxuICAgICAgICB4OiBjYWxjdWxhdGVkWEZyb21TdGFydGluZ1Bvc2l0aW9uLFxuICAgICAgICB5XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldEJhc2VYID0gKCkgPT4gdGhpcy5wLmNvbnRyb2xsZXIuZ2V0SXRlbURhdGFGb3JJbmRleCh0aGlzLnAuaXRlbUluZGV4KS5iYXNlWFxuXG4gIG9uUmVzZXRQb3NpdGlvbiA9IChhcmdzKSA9PiB7XG4gICAgY29uc3QgYmFzZVggPSB0aGlzLmdldEJhc2VYKCkgLSB0aGlzLnR0LmluaXRpYWxMYXlvdXQueFxuICAgIGNvbnN0IGFuaW1hdGlvbkFyZ3MgPSB7XG4gICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgZWFzaW5nOiBFYXNpbmcuaW5PdXQoRWFzaW5nLmxpbmVhciksXG4gICAgICB0b1ZhbHVlOiB7XG4gICAgICAgIHg6IGJhc2VYLFxuICAgICAgICB5OiAwXG4gICAgICB9LFxuICAgICAgdXNlTmF0aXZlRHJpdmVyOiB0cnVlXG4gICAgfVxuICAgIGNvbnN0IGFuaW1hdGlvbkV2ZW50QXJncyA9IHthbmltYXRpb25BcmdzLCBhbmltYXRpb25UeXBlOiBcInJlc2V0UG9zaXRpb25cIiwgaXRlbTogdGhpcy5wLml0ZW19XG5cbiAgICB0aGlzLnAuY29udHJvbGxlci5ldmVudHMuZW1pdChcIm9uQW5pbWF0aW9uU3RhcnRcIiwgYW5pbWF0aW9uRXZlbnRBcmdzKVxuXG4gICAgQW5pbWF0ZWRcbiAgICAgIC50aW1pbmcodGhpcy50dC5wb3NpdGlvbiwgYW5pbWF0aW9uQXJncylcbiAgICAgIC5zdGFydCgoKSA9PiB7XG4gICAgICAgIHRoaXMucC5jb250cm9sbGVyLmV2ZW50cy5lbWl0KFwib25BbmltYXRpb25FbmRcIiwgYW5pbWF0aW9uRXZlbnRBcmdzKVxuICAgICAgICBpZiAoYXJncz8uY2FsbGJhY2spIGFyZ3MuY2FsbGJhY2soKVxuICAgICAgfSlcblxuICAgIGlmICh0aGlzLnByb3BzLm9uSXRlbU1vdmVkKSB7XG4gICAgICB0aGlzLnAub25JdGVtTW92ZWQoe1xuICAgICAgICBhbmltYXRpb25BcmdzLFxuICAgICAgICBpdGVtSW5kZXg6IHRoaXMucC5pdGVtSW5kZXgsXG4gICAgICAgIHg6IGJhc2VYLFxuICAgICAgICB5OiAwXG4gICAgICB9KVxuICAgIH1cbiAgfVxufSkpXG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import useEventEmitter from "
|
|
1
|
+
import useEventEmitter from "ya-use-event-emitter";
|
|
2
2
|
const EventEmitterListener = ({ event, events, onCalled, ...restProps }) => {
|
|
3
3
|
const restPropsKeys = Object.keys(restProps);
|
|
4
4
|
if (restPropsKeys.length > 0) {
|
|
@@ -7,4 +7,4 @@ const EventEmitterListener = ({ event, events, onCalled, ...restProps }) => {
|
|
|
7
7
|
useEventEmitter(events, event, onCalled);
|
|
8
8
|
};
|
|
9
9
|
export default EventEmitterListener;
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZW1pdHRlci1saXN0ZW5lci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiZXZlbnQtZW1pdHRlci1saXN0ZW5lci5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxlQUFlLE1BQU0sc0JBQXNCLENBQUE7QUFFbEQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxTQUFTLEVBQUMsRUFBRSxFQUFFO0lBQ3ZFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFNUMsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQzFDLENBQUMsQ0FBQTtBQUVELGVBQWUsb0JBQW9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCJ5YS11c2UtZXZlbnQtZW1pdHRlclwiXG5cbmNvbnN0IEV2ZW50RW1pdHRlckxpc3RlbmVyID0gKHtldmVudCwgZXZlbnRzLCBvbkNhbGxlZCwgLi4ucmVzdFByb3BzfSkgPT4ge1xuICBjb25zdCByZXN0UHJvcHNLZXlzID0gT2JqZWN0LmtleXMocmVzdFByb3BzKVxuXG4gIGlmIChyZXN0UHJvcHNLZXlzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgcHJvcHM6ICR7cmVzdFByb3BzS2V5c31gKVxuICB9XG5cbiAgdXNlRXZlbnRFbWl0dGVyKGV2ZW50cywgZXZlbnQsIG9uQ2FsbGVkKVxufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudEVtaXR0ZXJMaXN0ZW5lclxuIl19
|