@sanity/document-internationalization 3.1.0 → 3.2.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.
- package/dist/_chunks-cjs/resources.js +8 -0
- package/dist/_chunks-cjs/resources.js.map +1 -0
- package/dist/_chunks-es/resources.mjs +9 -0
- package/dist/_chunks-es/resources.mjs.map +1 -0
- package/dist/_legacy/resources.esm.js +9 -0
- package/dist/_legacy/resources.esm.js.map +1 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +524 -12
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +522 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +524 -12
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/actions/DuplicateWithTranslationsAction.tsx +252 -0
- package/src/i18n/index.ts +21 -0
- package/src/i18n/resources.ts +7 -0
- package/src/index.ts +1 -0
- package/src/plugin.tsx +5 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var resources = {
|
|
3
|
+
"action.duplicate.label": "Duplicate with translations",
|
|
4
|
+
"action.duplicate.disabled.missing-metadata": "The document cannot be duplicated because the metadata document is missing",
|
|
5
|
+
"action.duplicate.disabled.multiple-metadata": "The document cannot be duplicated because there are multiple metadata documents"
|
|
6
|
+
};
|
|
7
|
+
exports.default = resources;
|
|
8
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sources":["../../src/i18n/resources.ts"],"sourcesContent":["export default {\n 'action.duplicate.label': 'Duplicate with translations',\n 'action.duplicate.disabled.missing-metadata':\n 'The document cannot be duplicated because the metadata document is missing',\n 'action.duplicate.disabled.multiple-metadata':\n 'The document cannot be duplicated because there are multiple metadata documents',\n}\n"],"names":[],"mappings":";AAAA,IAAe,YAAA;AAAA,EACb,0BAA0B;AAAA,EAC1B,8CACE;AAAA,EACF,+CACE;AACJ;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
var resources = {
|
|
2
|
+
"action.duplicate.label": "Duplicate with translations",
|
|
3
|
+
"action.duplicate.disabled.missing-metadata": "The document cannot be duplicated because the metadata document is missing",
|
|
4
|
+
"action.duplicate.disabled.multiple-metadata": "The document cannot be duplicated because there are multiple metadata documents"
|
|
5
|
+
};
|
|
6
|
+
export {
|
|
7
|
+
resources as default
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=resources.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.mjs","sources":["../../src/i18n/resources.ts"],"sourcesContent":["export default {\n 'action.duplicate.label': 'Duplicate with translations',\n 'action.duplicate.disabled.missing-metadata':\n 'The document cannot be duplicated because the metadata document is missing',\n 'action.duplicate.disabled.multiple-metadata':\n 'The document cannot be duplicated because there are multiple metadata documents',\n}\n"],"names":[],"mappings":"AAAA,IAAe,YAAA;AAAA,EACb,0BAA0B;AAAA,EAC1B,8CACE;AAAA,EACF,+CACE;AACJ;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
var resources = {
|
|
2
|
+
"action.duplicate.label": "Duplicate with translations",
|
|
3
|
+
"action.duplicate.disabled.missing-metadata": "The document cannot be duplicated because the metadata document is missing",
|
|
4
|
+
"action.duplicate.disabled.multiple-metadata": "The document cannot be duplicated because there are multiple metadata documents"
|
|
5
|
+
};
|
|
6
|
+
export {
|
|
7
|
+
resources as default
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=resources.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.esm.js","sources":["../../src/i18n/resources.ts"],"sourcesContent":["export default {\n 'action.duplicate.label': 'Duplicate with translations',\n 'action.duplicate.disabled.missing-metadata':\n 'The document cannot be duplicated because the metadata document is missing',\n 'action.duplicate.disabled.multiple-metadata':\n 'The document cannot be duplicated because there are multiple metadata documents',\n}\n"],"names":[],"mappings":"AAAA,IAAe,YAAA;AAAA,EACb,0BAA0B;AAAA,EAC1B,8CACE;AAAA,EACF,+CACE;AACJ;"}
|
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.esm.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { TrashIcon, CogIcon, SplitVerticalIcon, CheckmarkIcon, AddIcon, EditIcon, TranslateIcon, InfoOutlineIcon } from "@sanity/icons";
|
|
2
|
+
import { TrashIcon, CopyIcon, CogIcon, SplitVerticalIcon, CheckmarkIcon, AddIcon, EditIcon, TranslateIcon, InfoOutlineIcon } from "@sanity/icons";
|
|
3
3
|
import { Flex, Spinner, Stack, Text, Card, Grid, Button, useToast, Tooltip, Box, Badge, useClickOutside, TextInput, Popover, Inline, Dialog } from "@sanity/ui";
|
|
4
4
|
import { useMemo, useEffect, createContext, useContext, useState, useCallback } from "react";
|
|
5
|
-
import { useSchema, Preview, useClient, useWorkspace, isDocumentSchemaType, pathToString, useEditState, useValidationStatus, TextWithTone, PatchEvent, unset, defineType, defineField, definePlugin, isSanityDocument } from "sanity";
|
|
5
|
+
import { useSchema, Preview, useClient, useWorkspace, defineLocaleResourceBundle, useDocumentStore, useDocumentOperation, useDocumentPairPermissions, DEFAULT_STUDIO_CLIENT_OPTIONS, useTranslation, useCurrentUser, InsufficientPermissionsMessage, isDocumentSchemaType, pathToString, useEditState, useValidationStatus, TextWithTone, PatchEvent, unset, defineType, defineField, definePlugin, isSanityDocument } from "sanity";
|
|
6
6
|
import { Feedback, useListeningQuery } from "sanity-plugin-utils";
|
|
7
7
|
import { uuid } from "@sanity/uuid";
|
|
8
|
-
import { RouterContext } from "sanity/router";
|
|
9
|
-
import { usePaneRouter, useDocumentPane } from "sanity/structure";
|
|
8
|
+
import { useRouter, RouterContext } from "sanity/router";
|
|
9
|
+
import { structureLocaleNamespace, usePaneRouter, useDocumentPane } from "sanity/structure";
|
|
10
10
|
import { Mutation, extractWithPath } from "@sanity/mutator";
|
|
11
11
|
import { styled } from "styled-components";
|
|
12
12
|
import { internationalizedArray } from "sanity-plugin-internationalized-array";
|
|
@@ -111,7 +111,7 @@ function shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {
|
|
|
111
111
|
return !1;
|
|
112
112
|
return !0;
|
|
113
113
|
}
|
|
114
|
-
function query$1(fn, keys = null, preload = !1,
|
|
114
|
+
function query$1(fn, keys = null, preload = !1, config2 = {}) {
|
|
115
115
|
keys === null && (keys = [fn]);
|
|
116
116
|
for (const entry2 of globalCache)
|
|
117
117
|
if (shallowEqualArrays(keys, entry2.keys, entry2.equal)) {
|
|
@@ -120,13 +120,13 @@ function query$1(fn, keys = null, preload = !1, config = {}) {
|
|
|
120
120
|
if (Object.prototype.hasOwnProperty.call(entry2, "error"))
|
|
121
121
|
throw entry2.error;
|
|
122
122
|
if (Object.prototype.hasOwnProperty.call(entry2, "response"))
|
|
123
|
-
return
|
|
123
|
+
return config2.lifespan && config2.lifespan > 0 && (entry2.timeout && clearTimeout(entry2.timeout), entry2.timeout = setTimeout(entry2.remove, config2.lifespan)), entry2.response;
|
|
124
124
|
if (!preload)
|
|
125
125
|
throw entry2.promise;
|
|
126
126
|
}
|
|
127
127
|
const entry = {
|
|
128
128
|
keys,
|
|
129
|
-
equal:
|
|
129
|
+
equal: config2.equal,
|
|
130
130
|
remove: () => {
|
|
131
131
|
const index = globalCache.indexOf(entry);
|
|
132
132
|
index !== -1 && globalCache.splice(index, 1);
|
|
@@ -134,14 +134,14 @@ function query$1(fn, keys = null, preload = !1, config = {}) {
|
|
|
134
134
|
promise: (
|
|
135
135
|
// Execute the promise
|
|
136
136
|
(isPromise(fn) ? fn : fn(...keys)).then((response) => {
|
|
137
|
-
entry.response = response,
|
|
137
|
+
entry.response = response, config2.lifespan && config2.lifespan > 0 && (entry.timeout = setTimeout(entry.remove, config2.lifespan));
|
|
138
138
|
}).catch((error) => entry.error = error)
|
|
139
139
|
)
|
|
140
140
|
};
|
|
141
141
|
if (globalCache.push(entry), !preload)
|
|
142
142
|
throw entry.promise;
|
|
143
143
|
}
|
|
144
|
-
const suspend = (fn, keys,
|
|
144
|
+
const suspend = (fn, keys, config2) => query$1(fn, keys, !1, config2), DocumentInternationalizationContext = createContext(DEFAULT_CONFIG);
|
|
145
145
|
function useDocumentInternationalizationContext() {
|
|
146
146
|
return useContext(DocumentInternationalizationContext);
|
|
147
147
|
}
|
|
@@ -213,7 +213,392 @@ const DeleteTranslationAction = (props) => {
|
|
|
213
213
|
)
|
|
214
214
|
}
|
|
215
215
|
};
|
|
216
|
-
}
|
|
216
|
+
};
|
|
217
|
+
var extendStatics = function(d, b) {
|
|
218
|
+
return extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
|
|
219
|
+
d2.__proto__ = b2;
|
|
220
|
+
} || function(d2, b2) {
|
|
221
|
+
for (var p in b2)
|
|
222
|
+
Object.prototype.hasOwnProperty.call(b2, p) && (d2[p] = b2[p]);
|
|
223
|
+
}, extendStatics(d, b);
|
|
224
|
+
};
|
|
225
|
+
function __extends(d, b) {
|
|
226
|
+
if (typeof b != "function" && b !== null)
|
|
227
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
228
|
+
extendStatics(d, b);
|
|
229
|
+
function __() {
|
|
230
|
+
this.constructor = d;
|
|
231
|
+
}
|
|
232
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
233
|
+
}
|
|
234
|
+
function __values(o) {
|
|
235
|
+
var s = typeof Symbol == "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
236
|
+
if (m)
|
|
237
|
+
return m.call(o);
|
|
238
|
+
if (o && typeof o.length == "number")
|
|
239
|
+
return {
|
|
240
|
+
next: function() {
|
|
241
|
+
return o && i >= o.length && (o = void 0), { value: o && o[i++], done: !o };
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
245
|
+
}
|
|
246
|
+
function __read(o, n) {
|
|
247
|
+
var m = typeof Symbol == "function" && o[Symbol.iterator];
|
|
248
|
+
if (!m)
|
|
249
|
+
return o;
|
|
250
|
+
var i = m.call(o), r, ar = [], e;
|
|
251
|
+
try {
|
|
252
|
+
for (; (n === void 0 || n-- > 0) && !(r = i.next()).done; )
|
|
253
|
+
ar.push(r.value);
|
|
254
|
+
} catch (error) {
|
|
255
|
+
e = { error };
|
|
256
|
+
} finally {
|
|
257
|
+
try {
|
|
258
|
+
r && !r.done && (m = i.return) && m.call(i);
|
|
259
|
+
} finally {
|
|
260
|
+
if (e)
|
|
261
|
+
throw e.error;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return ar;
|
|
265
|
+
}
|
|
266
|
+
function __spreadArray(to, from, pack) {
|
|
267
|
+
if (pack || arguments.length === 2)
|
|
268
|
+
for (var i = 0, l = from.length, ar; i < l; i++)
|
|
269
|
+
(ar || !(i in from)) && (ar || (ar = Array.prototype.slice.call(from, 0, i)), ar[i] = from[i]);
|
|
270
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
271
|
+
}
|
|
272
|
+
function isFunction(value) {
|
|
273
|
+
return typeof value == "function";
|
|
274
|
+
}
|
|
275
|
+
function createErrorClass(createImpl) {
|
|
276
|
+
var _super = function(instance) {
|
|
277
|
+
Error.call(instance), instance.stack = new Error().stack;
|
|
278
|
+
}, ctorFunc = createImpl(_super);
|
|
279
|
+
return ctorFunc.prototype = Object.create(Error.prototype), ctorFunc.prototype.constructor = ctorFunc, ctorFunc;
|
|
280
|
+
}
|
|
281
|
+
var UnsubscriptionError = createErrorClass(function(_super) {
|
|
282
|
+
return function(errors) {
|
|
283
|
+
_super(this), this.message = errors ? errors.length + ` errors occurred during unsubscription:
|
|
284
|
+
` + errors.map(function(err, i) {
|
|
285
|
+
return i + 1 + ") " + err.toString();
|
|
286
|
+
}).join(`
|
|
287
|
+
`) : "", this.name = "UnsubscriptionError", this.errors = errors;
|
|
288
|
+
};
|
|
289
|
+
});
|
|
290
|
+
function arrRemove(arr, item) {
|
|
291
|
+
if (arr) {
|
|
292
|
+
var index = arr.indexOf(item);
|
|
293
|
+
0 <= index && arr.splice(index, 1);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
var Subscription = function() {
|
|
297
|
+
function Subscription2(initialTeardown) {
|
|
298
|
+
this.initialTeardown = initialTeardown, this.closed = !1, this._parentage = null, this._finalizers = null;
|
|
299
|
+
}
|
|
300
|
+
return Subscription2.prototype.unsubscribe = function() {
|
|
301
|
+
var e_1, _a, e_2, _b, errors;
|
|
302
|
+
if (!this.closed) {
|
|
303
|
+
this.closed = !0;
|
|
304
|
+
var _parentage = this._parentage;
|
|
305
|
+
if (_parentage)
|
|
306
|
+
if (this._parentage = null, Array.isArray(_parentage))
|
|
307
|
+
try {
|
|
308
|
+
for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {
|
|
309
|
+
var parent_1 = _parentage_1_1.value;
|
|
310
|
+
parent_1.remove(this);
|
|
311
|
+
}
|
|
312
|
+
} catch (e_1_1) {
|
|
313
|
+
e_1 = { error: e_1_1 };
|
|
314
|
+
} finally {
|
|
315
|
+
try {
|
|
316
|
+
_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return) && _a.call(_parentage_1);
|
|
317
|
+
} finally {
|
|
318
|
+
if (e_1)
|
|
319
|
+
throw e_1.error;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
else
|
|
323
|
+
_parentage.remove(this);
|
|
324
|
+
var initialFinalizer = this.initialTeardown;
|
|
325
|
+
if (isFunction(initialFinalizer))
|
|
326
|
+
try {
|
|
327
|
+
initialFinalizer();
|
|
328
|
+
} catch (e) {
|
|
329
|
+
errors = e instanceof UnsubscriptionError ? e.errors : [e];
|
|
330
|
+
}
|
|
331
|
+
var _finalizers = this._finalizers;
|
|
332
|
+
if (_finalizers) {
|
|
333
|
+
this._finalizers = null;
|
|
334
|
+
try {
|
|
335
|
+
for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {
|
|
336
|
+
var finalizer = _finalizers_1_1.value;
|
|
337
|
+
try {
|
|
338
|
+
execFinalizer(finalizer);
|
|
339
|
+
} catch (err) {
|
|
340
|
+
errors = errors != null ? errors : [], err instanceof UnsubscriptionError ? errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors)) : errors.push(err);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
} catch (e_2_1) {
|
|
344
|
+
e_2 = { error: e_2_1 };
|
|
345
|
+
} finally {
|
|
346
|
+
try {
|
|
347
|
+
_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return) && _b.call(_finalizers_1);
|
|
348
|
+
} finally {
|
|
349
|
+
if (e_2)
|
|
350
|
+
throw e_2.error;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
if (errors)
|
|
355
|
+
throw new UnsubscriptionError(errors);
|
|
356
|
+
}
|
|
357
|
+
}, Subscription2.prototype.add = function(teardown) {
|
|
358
|
+
var _a;
|
|
359
|
+
if (teardown && teardown !== this)
|
|
360
|
+
if (this.closed)
|
|
361
|
+
execFinalizer(teardown);
|
|
362
|
+
else {
|
|
363
|
+
if (teardown instanceof Subscription2) {
|
|
364
|
+
if (teardown.closed || teardown._hasParent(this))
|
|
365
|
+
return;
|
|
366
|
+
teardown._addParent(this);
|
|
367
|
+
}
|
|
368
|
+
(this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);
|
|
369
|
+
}
|
|
370
|
+
}, Subscription2.prototype._hasParent = function(parent) {
|
|
371
|
+
var _parentage = this._parentage;
|
|
372
|
+
return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);
|
|
373
|
+
}, Subscription2.prototype._addParent = function(parent) {
|
|
374
|
+
var _parentage = this._parentage;
|
|
375
|
+
this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;
|
|
376
|
+
}, Subscription2.prototype._removeParent = function(parent) {
|
|
377
|
+
var _parentage = this._parentage;
|
|
378
|
+
_parentage === parent ? this._parentage = null : Array.isArray(_parentage) && arrRemove(_parentage, parent);
|
|
379
|
+
}, Subscription2.prototype.remove = function(teardown) {
|
|
380
|
+
var _finalizers = this._finalizers;
|
|
381
|
+
_finalizers && arrRemove(_finalizers, teardown), teardown instanceof Subscription2 && teardown._removeParent(this);
|
|
382
|
+
}, Subscription2.EMPTY = function() {
|
|
383
|
+
var empty = new Subscription2();
|
|
384
|
+
return empty.closed = !0, empty;
|
|
385
|
+
}(), Subscription2;
|
|
386
|
+
}();
|
|
387
|
+
function isSubscription(value) {
|
|
388
|
+
return value instanceof Subscription || value && "closed" in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe);
|
|
389
|
+
}
|
|
390
|
+
function execFinalizer(finalizer) {
|
|
391
|
+
isFunction(finalizer) ? finalizer() : finalizer.unsubscribe();
|
|
392
|
+
}
|
|
393
|
+
var config = {
|
|
394
|
+
onUnhandledError: null,
|
|
395
|
+
onStoppedNotification: null,
|
|
396
|
+
Promise: void 0,
|
|
397
|
+
useDeprecatedSynchronousErrorHandling: !1,
|
|
398
|
+
useDeprecatedNextContext: !1
|
|
399
|
+
}, timeoutProvider = {
|
|
400
|
+
setTimeout: function(handler, timeout) {
|
|
401
|
+
for (var args = [], _i = 2; _i < arguments.length; _i++)
|
|
402
|
+
args[_i - 2] = arguments[_i];
|
|
403
|
+
return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));
|
|
404
|
+
},
|
|
405
|
+
clearTimeout: function(handle) {
|
|
406
|
+
return clearTimeout(handle);
|
|
407
|
+
},
|
|
408
|
+
delegate: void 0
|
|
409
|
+
};
|
|
410
|
+
function reportUnhandledError(err) {
|
|
411
|
+
timeoutProvider.setTimeout(function() {
|
|
412
|
+
throw err;
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
function noop() {
|
|
416
|
+
}
|
|
417
|
+
var Subscriber = function(_super) {
|
|
418
|
+
__extends(Subscriber2, _super);
|
|
419
|
+
function Subscriber2(destination) {
|
|
420
|
+
var _this = _super.call(this) || this;
|
|
421
|
+
return _this.isStopped = !1, destination ? (_this.destination = destination, isSubscription(destination) && destination.add(_this)) : _this.destination = EMPTY_OBSERVER, _this;
|
|
422
|
+
}
|
|
423
|
+
return Subscriber2.create = function(next, error, complete) {
|
|
424
|
+
return new SafeSubscriber(next, error, complete);
|
|
425
|
+
}, Subscriber2.prototype.next = function(value) {
|
|
426
|
+
this.isStopped || this._next(value);
|
|
427
|
+
}, Subscriber2.prototype.error = function(err) {
|
|
428
|
+
this.isStopped || (this.isStopped = !0, this._error(err));
|
|
429
|
+
}, Subscriber2.prototype.complete = function() {
|
|
430
|
+
this.isStopped || (this.isStopped = !0, this._complete());
|
|
431
|
+
}, Subscriber2.prototype.unsubscribe = function() {
|
|
432
|
+
this.closed || (this.isStopped = !0, _super.prototype.unsubscribe.call(this), this.destination = null);
|
|
433
|
+
}, Subscriber2.prototype._next = function(value) {
|
|
434
|
+
this.destination.next(value);
|
|
435
|
+
}, Subscriber2.prototype._error = function(err) {
|
|
436
|
+
try {
|
|
437
|
+
this.destination.error(err);
|
|
438
|
+
} finally {
|
|
439
|
+
this.unsubscribe();
|
|
440
|
+
}
|
|
441
|
+
}, Subscriber2.prototype._complete = function() {
|
|
442
|
+
try {
|
|
443
|
+
this.destination.complete();
|
|
444
|
+
} finally {
|
|
445
|
+
this.unsubscribe();
|
|
446
|
+
}
|
|
447
|
+
}, Subscriber2;
|
|
448
|
+
}(Subscription), _bind = Function.prototype.bind;
|
|
449
|
+
function bind(fn, thisArg) {
|
|
450
|
+
return _bind.call(fn, thisArg);
|
|
451
|
+
}
|
|
452
|
+
var ConsumerObserver = function() {
|
|
453
|
+
function ConsumerObserver2(partialObserver) {
|
|
454
|
+
this.partialObserver = partialObserver;
|
|
455
|
+
}
|
|
456
|
+
return ConsumerObserver2.prototype.next = function(value) {
|
|
457
|
+
var partialObserver = this.partialObserver;
|
|
458
|
+
if (partialObserver.next)
|
|
459
|
+
try {
|
|
460
|
+
partialObserver.next(value);
|
|
461
|
+
} catch (error) {
|
|
462
|
+
handleUnhandledError(error);
|
|
463
|
+
}
|
|
464
|
+
}, ConsumerObserver2.prototype.error = function(err) {
|
|
465
|
+
var partialObserver = this.partialObserver;
|
|
466
|
+
if (partialObserver.error)
|
|
467
|
+
try {
|
|
468
|
+
partialObserver.error(err);
|
|
469
|
+
} catch (error) {
|
|
470
|
+
handleUnhandledError(error);
|
|
471
|
+
}
|
|
472
|
+
else
|
|
473
|
+
handleUnhandledError(err);
|
|
474
|
+
}, ConsumerObserver2.prototype.complete = function() {
|
|
475
|
+
var partialObserver = this.partialObserver;
|
|
476
|
+
if (partialObserver.complete)
|
|
477
|
+
try {
|
|
478
|
+
partialObserver.complete();
|
|
479
|
+
} catch (error) {
|
|
480
|
+
handleUnhandledError(error);
|
|
481
|
+
}
|
|
482
|
+
}, ConsumerObserver2;
|
|
483
|
+
}(), SafeSubscriber = function(_super) {
|
|
484
|
+
__extends(SafeSubscriber2, _super);
|
|
485
|
+
function SafeSubscriber2(observerOrNext, error, complete) {
|
|
486
|
+
var _this = _super.call(this) || this, partialObserver;
|
|
487
|
+
if (isFunction(observerOrNext) || !observerOrNext)
|
|
488
|
+
partialObserver = {
|
|
489
|
+
next: observerOrNext != null ? observerOrNext : void 0,
|
|
490
|
+
error: error != null ? error : void 0,
|
|
491
|
+
complete: complete != null ? complete : void 0
|
|
492
|
+
};
|
|
493
|
+
else {
|
|
494
|
+
var context_1;
|
|
495
|
+
_this && config.useDeprecatedNextContext ? (context_1 = Object.create(observerOrNext), context_1.unsubscribe = function() {
|
|
496
|
+
return _this.unsubscribe();
|
|
497
|
+
}, partialObserver = {
|
|
498
|
+
next: observerOrNext.next && bind(observerOrNext.next, context_1),
|
|
499
|
+
error: observerOrNext.error && bind(observerOrNext.error, context_1),
|
|
500
|
+
complete: observerOrNext.complete && bind(observerOrNext.complete, context_1)
|
|
501
|
+
}) : partialObserver = observerOrNext;
|
|
502
|
+
}
|
|
503
|
+
return _this.destination = new ConsumerObserver(partialObserver), _this;
|
|
504
|
+
}
|
|
505
|
+
return SafeSubscriber2;
|
|
506
|
+
}(Subscriber);
|
|
507
|
+
function handleUnhandledError(error) {
|
|
508
|
+
reportUnhandledError(error);
|
|
509
|
+
}
|
|
510
|
+
function defaultErrorHandler(err) {
|
|
511
|
+
throw err;
|
|
512
|
+
}
|
|
513
|
+
var EMPTY_OBSERVER = {
|
|
514
|
+
closed: !0,
|
|
515
|
+
next: noop,
|
|
516
|
+
error: defaultErrorHandler,
|
|
517
|
+
complete: noop
|
|
518
|
+
};
|
|
519
|
+
function hasLift(source) {
|
|
520
|
+
return isFunction(source == null ? void 0 : source.lift);
|
|
521
|
+
}
|
|
522
|
+
function operate(init) {
|
|
523
|
+
return function(source) {
|
|
524
|
+
if (hasLift(source))
|
|
525
|
+
return source.lift(function(liftedSource) {
|
|
526
|
+
try {
|
|
527
|
+
return init(liftedSource, this);
|
|
528
|
+
} catch (err) {
|
|
529
|
+
this.error(err);
|
|
530
|
+
}
|
|
531
|
+
});
|
|
532
|
+
throw new TypeError("Unable to lift unknown Observable type");
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
|
|
536
|
+
return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
|
|
537
|
+
}
|
|
538
|
+
var OperatorSubscriber = function(_super) {
|
|
539
|
+
__extends(OperatorSubscriber2, _super);
|
|
540
|
+
function OperatorSubscriber2(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
|
|
541
|
+
var _this = _super.call(this, destination) || this;
|
|
542
|
+
return _this.onFinalize = onFinalize, _this.shouldUnsubscribe = shouldUnsubscribe, _this._next = onNext ? function(value) {
|
|
543
|
+
try {
|
|
544
|
+
onNext(value);
|
|
545
|
+
} catch (err) {
|
|
546
|
+
destination.error(err);
|
|
547
|
+
}
|
|
548
|
+
} : _super.prototype._next, _this._error = onError ? function(err) {
|
|
549
|
+
try {
|
|
550
|
+
onError(err);
|
|
551
|
+
} catch (err2) {
|
|
552
|
+
destination.error(err2);
|
|
553
|
+
} finally {
|
|
554
|
+
this.unsubscribe();
|
|
555
|
+
}
|
|
556
|
+
} : _super.prototype._error, _this._complete = onComplete ? function() {
|
|
557
|
+
try {
|
|
558
|
+
onComplete();
|
|
559
|
+
} catch (err) {
|
|
560
|
+
destination.error(err);
|
|
561
|
+
} finally {
|
|
562
|
+
this.unsubscribe();
|
|
563
|
+
}
|
|
564
|
+
} : _super.prototype._complete, _this;
|
|
565
|
+
}
|
|
566
|
+
return OperatorSubscriber2.prototype.unsubscribe = function() {
|
|
567
|
+
var _a;
|
|
568
|
+
if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
|
|
569
|
+
var closed_1 = this.closed;
|
|
570
|
+
_super.prototype.unsubscribe.call(this), !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 || _a.call(this));
|
|
571
|
+
}
|
|
572
|
+
}, OperatorSubscriber2;
|
|
573
|
+
}(Subscriber), EmptyError = createErrorClass(function(_super) {
|
|
574
|
+
return function() {
|
|
575
|
+
_super(this), this.name = "EmptyError", this.message = "no elements in sequence";
|
|
576
|
+
};
|
|
577
|
+
});
|
|
578
|
+
function firstValueFrom(source, config2) {
|
|
579
|
+
var hasConfig = typeof config2 == "object";
|
|
580
|
+
return new Promise(function(resolve, reject) {
|
|
581
|
+
var subscriber = new SafeSubscriber({
|
|
582
|
+
next: function(value) {
|
|
583
|
+
resolve(value), subscriber.unsubscribe();
|
|
584
|
+
},
|
|
585
|
+
error: reject,
|
|
586
|
+
complete: function() {
|
|
587
|
+
hasConfig ? resolve(config2.defaultValue) : reject(new EmptyError());
|
|
588
|
+
}
|
|
589
|
+
});
|
|
590
|
+
source.subscribe(subscriber);
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
function filter(predicate, thisArg) {
|
|
594
|
+
return operate(function(source, subscriber) {
|
|
595
|
+
var index = 0;
|
|
596
|
+
source.subscribe(createOperatorSubscriber(subscriber, function(value) {
|
|
597
|
+
return predicate.call(thisArg, value, index++) && subscriber.next(value);
|
|
598
|
+
}));
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
const query = `*[_type == $translationSchema && $id in translations[].value._ref]{
|
|
217
602
|
_id,
|
|
218
603
|
_createdAt,
|
|
219
604
|
translations
|
|
@@ -224,6 +609,129 @@ function useTranslationMetadata(id) {
|
|
|
224
609
|
});
|
|
225
610
|
return { data, loading, error };
|
|
226
611
|
}
|
|
612
|
+
const documenti18nLocaleNamespace = "document-internationalization", documentInternationalizationUsEnglishLocaleBundle = defineLocaleResourceBundle({
|
|
613
|
+
locale: "en-US",
|
|
614
|
+
namespace: documenti18nLocaleNamespace,
|
|
615
|
+
resources: () => import("./_legacy/resources.esm.js")
|
|
616
|
+
}), DISABLED_REASON_KEY = {
|
|
617
|
+
METADATA_NOT_FOUND: "action.duplicate.disabled.missing-metadata",
|
|
618
|
+
MULTIPLE_METADATA: "action.duplicate.disabled.multiple-metadata",
|
|
619
|
+
NOTHING_TO_DUPLICATE: "action.duplicate.disabled.nothing-to-duplicate",
|
|
620
|
+
NOT_READY: "action.duplicate.disabled.not-ready"
|
|
621
|
+
}, DuplicateWithTranslationsAction = ({
|
|
622
|
+
id,
|
|
623
|
+
type,
|
|
624
|
+
onComplete
|
|
625
|
+
}) => {
|
|
626
|
+
const documentStore = useDocumentStore(), { duplicate } = useDocumentOperation(id, type), { navigateIntent } = useRouter(), [isDuplicating, setDuplicating] = useState(!1), [permissions, isPermissionsLoading] = useDocumentPairPermissions({
|
|
627
|
+
id,
|
|
628
|
+
type,
|
|
629
|
+
permission: "duplicate"
|
|
630
|
+
}), { data, loading: isMetadataDocumentLoading } = useTranslationMetadata(id), hasOneMetadataDocument = useMemo(() => Array.isArray(data) && data.length <= 1, [data]), metadataDocument = Array.isArray(data) && data.length ? data[0] : null, client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS), toast = useToast(), { t: s } = useTranslation(structureLocaleNamespace), { t: d } = useTranslation(documenti18nLocaleNamespace), currentUser = useCurrentUser(), handle = useCallback(async () => {
|
|
631
|
+
setDuplicating(!0);
|
|
632
|
+
try {
|
|
633
|
+
if (!metadataDocument)
|
|
634
|
+
throw new Error("Metadata document not found");
|
|
635
|
+
const translations = /* @__PURE__ */ new Map();
|
|
636
|
+
await Promise.all(
|
|
637
|
+
metadataDocument[TRANSLATIONS_ARRAY_NAME].map(async (translation) => {
|
|
638
|
+
var _a;
|
|
639
|
+
const dupeId2 = uuid(), locale = translation._key, docId = (_a = translation.value) == null ? void 0 : _a._ref;
|
|
640
|
+
if (!docId)
|
|
641
|
+
throw new Error("Translation document not found");
|
|
642
|
+
const { duplicate: duplicateTranslation } = await firstValueFrom(
|
|
643
|
+
documentStore.pair.editOperations(docId, type).pipe(filter((op) => op.duplicate.disabled !== "NOT_READY"))
|
|
644
|
+
);
|
|
645
|
+
if (duplicateTranslation.disabled)
|
|
646
|
+
throw new Error("Cannot duplicate document");
|
|
647
|
+
const duplicateTranslationSuccess = firstValueFrom(
|
|
648
|
+
documentStore.pair.operationEvents(docId, type).pipe(filter((e) => e.op === "duplicate" && e.type === "success"))
|
|
649
|
+
);
|
|
650
|
+
duplicateTranslation.execute(dupeId2), await duplicateTranslationSuccess, translations.set(locale, dupeId2);
|
|
651
|
+
})
|
|
652
|
+
);
|
|
653
|
+
const { duplicate: duplicateMetadata } = await firstValueFrom(
|
|
654
|
+
documentStore.pair.editOperations(metadataDocument._id, METADATA_SCHEMA_NAME).pipe(filter((op) => op.duplicate.disabled !== "NOT_READY"))
|
|
655
|
+
);
|
|
656
|
+
if (duplicateMetadata.disabled)
|
|
657
|
+
throw new Error("Cannot duplicate document");
|
|
658
|
+
const duplicateMetadataSuccess = firstValueFrom(
|
|
659
|
+
documentStore.pair.operationEvents(metadataDocument._id, METADATA_SCHEMA_NAME).pipe(filter((e) => e.op === "duplicate" && e.type === "success"))
|
|
660
|
+
), dupeId = uuid();
|
|
661
|
+
duplicateMetadata.execute(dupeId), await duplicateMetadataSuccess;
|
|
662
|
+
const patch = {
|
|
663
|
+
set: Object.fromEntries(
|
|
664
|
+
Array.from(translations.entries()).map(([locale, documentId]) => [
|
|
665
|
+
`${TRANSLATIONS_ARRAY_NAME}[_key == "${locale}"].value._ref`,
|
|
666
|
+
documentId
|
|
667
|
+
])
|
|
668
|
+
)
|
|
669
|
+
};
|
|
670
|
+
await client.transaction().patch(dupeId, patch).commit(), navigateIntent("edit", {
|
|
671
|
+
id: Array.from(translations.values()).at(0),
|
|
672
|
+
type
|
|
673
|
+
}), onComplete();
|
|
674
|
+
} catch (error) {
|
|
675
|
+
console.error(error), toast.push({
|
|
676
|
+
status: "error",
|
|
677
|
+
title: "Error duplicating document",
|
|
678
|
+
description: error instanceof Error ? error.message : "Failed to duplicate document"
|
|
679
|
+
});
|
|
680
|
+
} finally {
|
|
681
|
+
setDuplicating(!1);
|
|
682
|
+
}
|
|
683
|
+
}, [
|
|
684
|
+
client,
|
|
685
|
+
documentStore.pair,
|
|
686
|
+
metadataDocument,
|
|
687
|
+
navigateIntent,
|
|
688
|
+
onComplete,
|
|
689
|
+
toast,
|
|
690
|
+
type
|
|
691
|
+
]);
|
|
692
|
+
return useMemo(() => !isPermissionsLoading && !(permissions != null && permissions.granted) ? {
|
|
693
|
+
icon: CopyIcon,
|
|
694
|
+
disabled: !0,
|
|
695
|
+
label: d("action.duplicate.label"),
|
|
696
|
+
title: /* @__PURE__ */ jsx(
|
|
697
|
+
InsufficientPermissionsMessage,
|
|
698
|
+
{
|
|
699
|
+
context: "duplicate-document",
|
|
700
|
+
currentUser
|
|
701
|
+
}
|
|
702
|
+
)
|
|
703
|
+
} : !isMetadataDocumentLoading && !metadataDocument ? {
|
|
704
|
+
icon: CopyIcon,
|
|
705
|
+
disabled: !0,
|
|
706
|
+
label: d("action.duplicate.label"),
|
|
707
|
+
title: d(DISABLED_REASON_KEY.METADATA_NOT_FOUND)
|
|
708
|
+
} : hasOneMetadataDocument ? {
|
|
709
|
+
icon: CopyIcon,
|
|
710
|
+
disabled: isDuplicating || !!duplicate.disabled || isPermissionsLoading || isMetadataDocumentLoading,
|
|
711
|
+
label: isDuplicating ? s("action.duplicate.running.label") : d("action.duplicate.label"),
|
|
712
|
+
title: duplicate.disabled ? s(DISABLED_REASON_KEY[duplicate.disabled]) : "",
|
|
713
|
+
onHandle: handle
|
|
714
|
+
} : {
|
|
715
|
+
icon: CopyIcon,
|
|
716
|
+
disabled: !0,
|
|
717
|
+
label: d("action.duplicate.label"),
|
|
718
|
+
title: d(DISABLED_REASON_KEY.MULTIPLE_METADATA)
|
|
719
|
+
}, [
|
|
720
|
+
currentUser,
|
|
721
|
+
duplicate.disabled,
|
|
722
|
+
handle,
|
|
723
|
+
hasOneMetadataDocument,
|
|
724
|
+
isDuplicating,
|
|
725
|
+
isMetadataDocumentLoading,
|
|
726
|
+
isPermissionsLoading,
|
|
727
|
+
metadataDocument,
|
|
728
|
+
permissions == null ? void 0 : permissions.granted,
|
|
729
|
+
s,
|
|
730
|
+
d
|
|
731
|
+
]);
|
|
732
|
+
};
|
|
733
|
+
DuplicateWithTranslationsAction.action = "duplicate";
|
|
734
|
+
DuplicateWithTranslationsAction.displayName = "DuplicateWithTranslationsAction";
|
|
227
735
|
function useOpenInNewPane(id, type) {
|
|
228
736
|
const routerContext = useContext(RouterContext), { routerPanesState, groupIndex } = usePaneRouter();
|
|
229
737
|
return useCallback(() => {
|
|
@@ -926,8 +1434,8 @@ var metadata = (schemaTypes, metadataFields) => defineType({
|
|
|
926
1434
|
}
|
|
927
1435
|
});
|
|
928
1436
|
const documentInternationalization = definePlugin(
|
|
929
|
-
(
|
|
930
|
-
const pluginConfig = { ...DEFAULT_CONFIG, ...
|
|
1437
|
+
(config2) => {
|
|
1438
|
+
const pluginConfig = { ...DEFAULT_CONFIG, ...config2 }, {
|
|
931
1439
|
supportedLanguages,
|
|
932
1440
|
schemaTypes,
|
|
933
1441
|
languageField,
|
|
@@ -945,6 +1453,9 @@ const documentInternationalization = definePlugin(
|
|
|
945
1453
|
layout: (props) => DocumentInternationalizationProvider({ ...props, pluginConfig })
|
|
946
1454
|
}
|
|
947
1455
|
},
|
|
1456
|
+
i18n: {
|
|
1457
|
+
bundles: [documentInternationalizationUsEnglishLocaleBundle]
|
|
1458
|
+
},
|
|
948
1459
|
// Adds:
|
|
949
1460
|
// - A bulk-publishing UI component to the form
|
|
950
1461
|
// - Will only work for projects on a compatible plan
|
|
@@ -1085,6 +1596,7 @@ const documentInternationalization = definePlugin(
|
|
|
1085
1596
|
export {
|
|
1086
1597
|
DeleteTranslationAction,
|
|
1087
1598
|
DocumentInternationalizationMenu,
|
|
1599
|
+
DuplicateWithTranslationsAction,
|
|
1088
1600
|
documentInternationalization,
|
|
1089
1601
|
useDocumentInternationalizationContext
|
|
1090
1602
|
};
|