@wix/bex-core 2.34.0 → 2.37.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/cjs/InMemoryBackend/InMemoryBackend.js +6 -2
- package/dist/cjs/InMemoryBackend/InMemoryBackend.js.map +1 -1
- package/dist/cjs/assets/locale/messages_cs.json +3 -0
- package/dist/cjs/assets/locale/messages_da.json +3 -0
- package/dist/cjs/assets/locale/messages_de.json +3 -0
- package/dist/cjs/assets/locale/messages_en.json +2 -1
- package/dist/cjs/assets/locale/messages_es.json +3 -0
- package/dist/cjs/assets/locale/messages_fr.json +3 -0
- package/dist/cjs/assets/locale/messages_hi.json +3 -0
- package/dist/cjs/assets/locale/messages_id.json +3 -0
- package/dist/cjs/assets/locale/messages_it.json +3 -0
- package/dist/cjs/assets/locale/messages_ja.json +3 -0
- package/dist/cjs/assets/locale/messages_ko.json +3 -0
- package/dist/cjs/assets/locale/messages_nl.json +3 -0
- package/dist/cjs/assets/locale/messages_no.json +3 -0
- package/dist/cjs/assets/locale/messages_pl.json +3 -0
- package/dist/cjs/assets/locale/messages_pt.json +3 -0
- package/dist/cjs/assets/locale/messages_ru.json +3 -0
- package/dist/cjs/assets/locale/messages_sv.json +3 -0
- package/dist/cjs/assets/locale/messages_th.json +3 -0
- package/dist/cjs/assets/locale/messages_tr.json +3 -0
- package/dist/cjs/assets/locale/messages_uk.json +3 -0
- package/dist/cjs/assets/locale/messages_vi.json +3 -0
- package/dist/cjs/assets/locale/messages_visuale2e.json +9 -0
- package/dist/cjs/assets/locale/messages_zh.json +3 -0
- package/dist/cjs/hooks/createCollectionConfig.js.map +1 -1
- package/dist/cjs/model/actionMove.js.map +1 -1
- package/dist/cjs/providers/createContext.js.map +1 -1
- package/dist/cjs/services/cairoMonitor.js.map +1 -1
- package/dist/cjs/services/dataExtensionService.js.map +1 -1
- package/dist/cjs/services/fetchTranslations.js.map +1 -1
- package/dist/cjs/services/navigationManager.js.map +1 -1
- package/dist/cjs/services/replaceSearchParamsWith.js.map +1 -1
- package/dist/cjs/services/translations.js.map +1 -1
- package/dist/cjs/state/CollectionOptimisticActions.js +2 -1
- package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
- package/dist/cjs/state/CollectionOptimisticExecutor.js.map +1 -1
- package/dist/cjs/state/CollectionOptimisticProcessor.js +1 -0
- package/dist/cjs/state/CollectionOptimisticProcessor.js.map +1 -1
- package/dist/cjs/state/CustomFieldModalState.js.map +1 -1
- package/dist/cjs/state/ExportState.js.map +1 -1
- package/dist/cjs/state/QueryHistoryState.js.map +1 -1
- package/dist/cjs/state/TagsState/TagsBIReporter.js.map +1 -1
- package/dist/cjs/state/index.js +7 -0
- package/dist/cjs/state/index.js.map +1 -1
- package/dist/cjs/state/optimistic-simulation/filterByApplyAllPatches.js +19 -0
- package/dist/cjs/state/optimistic-simulation/filterByApplyAllPatches.js.map +1 -0
- package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js +3 -0
- package/dist/cjs/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
- package/dist/cjs/state/optimistic-simulation/orderByMoves.js +8 -0
- package/dist/cjs/state/optimistic-simulation/orderByMoves.js.map +1 -1
- package/dist/cjs/testkit/WixPatternsContainer.driver.js.map +1 -1
- package/dist/cjs/testkit/appSettingsMocks.js.map +1 -1
- package/dist/cjs/util/assertKey.js.map +1 -1
- package/dist/cjs/util/typedEmitter.js +0 -2
- package/dist/cjs/util/typedEmitter.js.map +1 -1
- package/dist/esm/InMemoryBackend/InMemoryBackend.js +28 -18
- package/dist/esm/InMemoryBackend/InMemoryBackend.js.map +1 -1
- package/dist/esm/assets/locale/messages_cs.json +3 -0
- package/dist/esm/assets/locale/messages_da.json +3 -0
- package/dist/esm/assets/locale/messages_de.json +3 -0
- package/dist/esm/assets/locale/messages_en.json +2 -1
- package/dist/esm/assets/locale/messages_es.json +3 -0
- package/dist/esm/assets/locale/messages_fr.json +3 -0
- package/dist/esm/assets/locale/messages_hi.json +3 -0
- package/dist/esm/assets/locale/messages_id.json +3 -0
- package/dist/esm/assets/locale/messages_it.json +3 -0
- package/dist/esm/assets/locale/messages_ja.json +3 -0
- package/dist/esm/assets/locale/messages_ko.json +3 -0
- package/dist/esm/assets/locale/messages_nl.json +3 -0
- package/dist/esm/assets/locale/messages_no.json +3 -0
- package/dist/esm/assets/locale/messages_pl.json +3 -0
- package/dist/esm/assets/locale/messages_pt.json +3 -0
- package/dist/esm/assets/locale/messages_ru.json +3 -0
- package/dist/esm/assets/locale/messages_sv.json +3 -0
- package/dist/esm/assets/locale/messages_th.json +3 -0
- package/dist/esm/assets/locale/messages_tr.json +3 -0
- package/dist/esm/assets/locale/messages_uk.json +3 -0
- package/dist/esm/assets/locale/messages_vi.json +3 -0
- package/dist/esm/assets/locale/messages_visuale2e.json +9 -0
- package/dist/esm/assets/locale/messages_zh.json +3 -0
- package/dist/esm/hooks/createCollection.js +17 -6
- package/dist/esm/hooks/createCollection.js.map +1 -1
- package/dist/esm/hooks/createCollectionConfig.js +12 -7
- package/dist/esm/hooks/createCollectionConfig.js.map +1 -1
- package/dist/esm/hooks/useAmbassadorCollection.js +15 -6
- package/dist/esm/hooks/useAmbassadorCollection.js.map +1 -1
- package/dist/esm/hooks/useCollection/useCollection.js +4 -1
- package/dist/esm/hooks/useCollection/useCollection.js.map +1 -1
- package/dist/esm/hooks/useCollectionPageState.js +8 -6
- package/dist/esm/hooks/useCollectionPageState.js.map +1 -1
- package/dist/esm/hooks/useOptimisticActions.js +6 -5
- package/dist/esm/hooks/useOptimisticActions.js.map +1 -1
- package/dist/esm/hooks/usePicker.js +8 -4
- package/dist/esm/hooks/usePicker.js.map +1 -1
- package/dist/esm/services/AccountPreferencesMergeStrategy.js +1 -2
- package/dist/esm/services/AccountPreferencesMergeStrategy.js.map +1 -1
- package/dist/esm/services/AccountPreferencesStrategy.js +1 -2
- package/dist/esm/services/AccountPreferencesStrategy.js.map +1 -1
- package/dist/esm/services/AppSettingsCapsule.js +5 -3
- package/dist/esm/services/AppSettingsCapsule.js.map +1 -1
- package/dist/esm/services/WixPatternsError.js +1 -1
- package/dist/esm/services/WixPatternsError.js.map +1 -1
- package/dist/esm/services/cairoMonitor.js +14 -13
- package/dist/esm/services/cairoMonitor.js.map +1 -1
- package/dist/esm/services/createAccountComponentSettings.js +6 -4
- package/dist/esm/services/createAccountComponentSettings.js.map +1 -1
- package/dist/esm/services/dataExtensionService.js +33 -12
- package/dist/esm/services/dataExtensionService.js.map +1 -1
- package/dist/esm/services/experiments.js +1 -2
- package/dist/esm/services/experiments.js.map +1 -1
- package/dist/esm/services/fetchTranslations.js +1 -1
- package/dist/esm/services/fetchTranslations.js.map +1 -1
- package/dist/esm/services/getErrorMonitorCompat.js +1 -2
- package/dist/esm/services/getErrorMonitorCompat.js.map +1 -1
- package/dist/esm/services/replaceSearchParamsWith.js +4 -1
- package/dist/esm/services/replaceSearchParamsWith.js.map +1 -1
- package/dist/esm/state/AppsState.js +1 -2
- package/dist/esm/state/AppsState.js.map +1 -1
- package/dist/esm/state/ArrayFilterState/ArrayFilterState.js +59 -32
- package/dist/esm/state/ArrayFilterState/ArrayFilterState.js.map +1 -1
- package/dist/esm/state/BeforeUnloadCompatState.js +11 -6
- package/dist/esm/state/BeforeUnloadCompatState.js.map +1 -1
- package/dist/esm/state/BulkActionModalState.js +6 -1
- package/dist/esm/state/BulkActionModalState.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticActions.js +126 -76
- package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticExecutor.js +32 -19
- package/dist/esm/state/CollectionOptimisticExecutor.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticPatch.js +1 -1
- package/dist/esm/state/CollectionOptimisticPatch.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticProcessor.js +3 -3
- package/dist/esm/state/CollectionOptimisticProcessor.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticSequenceExecutor.js +18 -8
- package/dist/esm/state/CollectionOptimisticSequenceExecutor.js.map +1 -1
- package/dist/esm/state/CollectionPageState.js +1 -1
- package/dist/esm/state/CollectionPageState.js.map +1 -1
- package/dist/esm/state/CollectionState.js +73 -46
- package/dist/esm/state/CollectionState.js.map +1 -1
- package/dist/esm/state/CustomFieldModalBiReporter.js +1 -1
- package/dist/esm/state/CustomFieldModalBiReporter.js.map +1 -1
- package/dist/esm/state/CustomFieldModalState.js +5 -7
- package/dist/esm/state/CustomFieldModalState.js.map +1 -1
- package/dist/esm/state/CustomFieldsViewWidgetState.js +11 -11
- package/dist/esm/state/CustomFieldsViewWidgetState.js.map +1 -1
- package/dist/esm/state/CustomFilterState/CustomFilterState.js +15 -16
- package/dist/esm/state/CustomFilterState/CustomFilterState.js.map +1 -1
- package/dist/esm/state/DataExtensionState.js +19 -27
- package/dist/esm/state/DataExtensionState.js.map +1 -1
- package/dist/esm/state/ExportState.js +96 -46
- package/dist/esm/state/ExportState.js.map +1 -1
- package/dist/esm/state/ExportStateBIReporter.js +27 -8
- package/dist/esm/state/ExportStateBIReporter.js.map +1 -1
- package/dist/esm/state/ModalState.js +3 -6
- package/dist/esm/state/ModalState.js.map +1 -1
- package/dist/esm/state/MultiCollectionSupport.js +2 -4
- package/dist/esm/state/MultiCollectionSupport.js.map +1 -1
- package/dist/esm/state/OnlineState.js +2 -4
- package/dist/esm/state/OnlineState.js.map +1 -1
- package/dist/esm/state/Pagination.js +1 -2
- package/dist/esm/state/Pagination.js.map +1 -1
- package/dist/esm/state/PickerState.js +78 -24
- package/dist/esm/state/PickerState.js.map +1 -1
- package/dist/esm/state/PromiseState.js +21 -4
- package/dist/esm/state/PromiseState.js.map +1 -1
- package/dist/esm/state/PromisesSequence.js +1 -1
- package/dist/esm/state/PromisesSequence.js.map +1 -1
- package/dist/esm/state/QueryPendingState.js +6 -8
- package/dist/esm/state/QueryPendingState.js.map +1 -1
- package/dist/esm/state/QueryPendingStateBIReporter.js +9 -4
- package/dist/esm/state/QueryPendingStateBIReporter.js.map +1 -1
- package/dist/esm/state/QueryResultSimulationDefault.js +1 -1
- package/dist/esm/state/QueryResultSimulationDefault.js.map +1 -1
- package/dist/esm/state/QueryResultState.js +6 -2
- package/dist/esm/state/QueryResultState.js.map +1 -1
- package/dist/esm/state/QueryState.js +15 -13
- package/dist/esm/state/QueryState.js.map +1 -1
- package/dist/esm/state/RangeFilterState/RangeFilterState.js +34 -24
- package/dist/esm/state/RangeFilterState/RangeFilterState.js.map +1 -1
- package/dist/esm/state/ReturnFocus.js +1 -2
- package/dist/esm/state/ReturnFocus.js.map +1 -1
- package/dist/esm/state/SelectState.js +16 -10
- package/dist/esm/state/SelectState.js.map +1 -1
- package/dist/esm/state/SortState.js +3 -3
- package/dist/esm/state/SortState.js.map +1 -1
- package/dist/esm/state/StringFilterState/StringFilterState.js +19 -16
- package/dist/esm/state/StringFilterState/StringFilterState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsAssignmentState.js +38 -22
- package/dist/esm/state/TagsState/TagsAssignmentState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsBIReporter.js +37 -9
- package/dist/esm/state/TagsState/TagsBIReporter.js.map +1 -1
- package/dist/esm/state/TagsState/TagsFormState.js +8 -7
- package/dist/esm/state/TagsState/TagsFormState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsManagementState.js +70 -50
- package/dist/esm/state/TagsState/TagsManagementState.js.map +1 -1
- package/dist/esm/state/TagsState/TagsWidgetState.js +14 -13
- package/dist/esm/state/TagsState/TagsWidgetState.js.map +1 -1
- package/dist/esm/state/TaskState.js +20 -6
- package/dist/esm/state/TaskState.js.map +1 -1
- package/dist/esm/state/TextOverflowState.js +1 -1
- package/dist/esm/state/TextOverflowState.js.map +1 -1
- package/dist/esm/state/TransitionState.js +1 -1
- package/dist/esm/state/TransitionState.js.map +1 -1
- package/dist/esm/state/WixPatternsContainer.js +20 -11
- package/dist/esm/state/WixPatternsContainer.js.map +1 -1
- package/dist/esm/state/buildWixPatternsContainer.js +16 -7
- package/dist/esm/state/buildWixPatternsContainer.js.map +1 -1
- package/dist/esm/state/getJobItemsAbsoluteCounter.js +6 -8
- package/dist/esm/state/getJobItemsAbsoluteCounter.js.map +1 -1
- package/dist/esm/state/index.js +1 -0
- package/dist/esm/state/index.js.map +1 -1
- package/dist/esm/state/onItemsCreated.js +9 -5
- package/dist/esm/state/onItemsCreated.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/filterByApplyAllPatches.js +10 -0
- package/dist/esm/state/optimistic-simulation/filterByApplyAllPatches.js.map +1 -0
- package/dist/esm/state/optimistic-simulation/filterPageByPatches.js +4 -1
- package/dist/esm/state/optimistic-simulation/filterPageByPatches.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/mergePatchedItems.js +3 -0
- package/dist/esm/state/optimistic-simulation/mergePatchedItems.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/orderByMoves.js +9 -3
- package/dist/esm/state/optimistic-simulation/orderByMoves.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/orderByOrders.js +1 -1
- package/dist/esm/state/optimistic-simulation/orderByOrders.js.map +1 -1
- package/dist/esm/state/optimistic-simulation/transformItemByUpdateAllPatches.js +4 -1
- package/dist/esm/state/optimistic-simulation/transformItemByUpdateAllPatches.js.map +1 -1
- package/dist/esm/state/warmUpPickerStandalone.js +13 -2
- package/dist/esm/state/warmUpPickerStandalone.js.map +1 -1
- package/dist/esm/testkit/ProductsCollectionState.driver.js +38 -4
- package/dist/esm/testkit/ProductsCollectionState.driver.js.map +1 -1
- package/dist/esm/testkit/WixPatternsContainer.driver.js +89 -63
- package/dist/esm/testkit/WixPatternsContainer.driver.js.map +1 -1
- package/dist/esm/testkit/appSettingsMocks.js +7 -6
- package/dist/esm/testkit/appSettingsMocks.js.map +1 -1
- package/dist/esm/testkit/createCountriesBackend.js +15 -8
- package/dist/esm/testkit/createCountriesBackend.js.map +1 -1
- package/dist/esm/testkit/createFoldersBackend.js +48 -30
- package/dist/esm/testkit/createFoldersBackend.js.map +1 -1
- package/dist/esm/testkit/createProductsBackend.js +32 -18
- package/dist/esm/testkit/createProductsBackend.js.map +1 -1
- package/dist/esm/testkit/exportServiceMocks.js +65 -17
- package/dist/esm/testkit/exportServiceMocks.js.map +1 -1
- package/dist/esm/testkit/nestifyItems.js +6 -6
- package/dist/esm/testkit/nestifyItems.js.map +1 -1
- package/dist/esm/util/assertKey.js +4 -6
- package/dist/esm/util/assertKey.js.map +1 -1
- package/dist/esm/util/isHttpError.js +1 -2
- package/dist/esm/util/isHttpError.js.map +1 -1
- package/dist/esm/util/parseFqdn.js +1 -2
- package/dist/esm/util/parseFqdn.js.map +1 -1
- package/dist/esm/util/shouldRedirectToLogin.js +1 -1
- package/dist/esm/util/shouldRedirectToLogin.js.map +1 -1
- package/dist/types/InMemoryBackend/InMemoryBackend.d.ts +10 -6
- package/dist/types/InMemoryBackend/InMemoryBackend.d.ts.map +1 -1
- package/dist/types/model/actionMove.d.ts +1 -1
- package/dist/types/model/actionMove.d.ts.map +1 -1
- package/dist/types/services/fetchTranslationsPreBundled.d.ts +1 -1
- package/dist/types/services/fetchTranslationsPreBundled.d.ts.map +1 -1
- package/dist/types/services/translations.d.ts +1 -1
- package/dist/types/services/translations.d.ts.map +1 -1
- package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
- package/dist/types/state/CollectionOptimisticProcessor.d.ts.map +1 -1
- package/dist/types/state/WixPatternsContainer.d.ts +3 -3
- package/dist/types/state/WixPatternsContainer.d.ts.map +1 -1
- package/dist/types/state/index.d.ts +1 -0
- package/dist/types/state/index.d.ts.map +1 -1
- package/dist/types/state/optimistic-simulation/filterByApplyAllPatches.d.ts +5 -0
- package/dist/types/state/optimistic-simulation/filterByApplyAllPatches.d.ts.map +1 -0
- package/dist/types/state/optimistic-simulation/mergePatchedItems.d.ts.map +1 -1
- package/dist/types/state/optimistic-simulation/orderByMoves.d.ts +1 -0
- package/dist/types/state/optimistic-simulation/orderByMoves.d.ts.map +1 -1
- package/dist/types/util/typedEmitter.d.ts +1 -1
- package/dist/types/util/typedEmitter.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -20,6 +20,7 @@ class InMemoryBackend {
|
|
|
20
20
|
(0, _defineProperty2.default)(this, "delay", void 0);
|
|
21
21
|
(0, _defineProperty2.default)(this, "paginationMode", void 0);
|
|
22
22
|
(0, _defineProperty2.default)(this, "enableTotal", void 0);
|
|
23
|
+
(0, _defineProperty2.default)(this, "excludeOrdinalFilters", void 0);
|
|
23
24
|
(0, _defineProperty2.default)(this, "events", new _events.EventEmitter());
|
|
24
25
|
(0, _defineProperty2.default)(this, "map", void 0);
|
|
25
26
|
(0, _defineProperty2.default)(this, "chance", new _chance.Chance());
|
|
@@ -60,6 +61,7 @@ class InMemoryBackend {
|
|
|
60
61
|
min: 0,
|
|
61
62
|
max: 5
|
|
62
63
|
};
|
|
64
|
+
this.excludeOrdinalFilters = _params.excludeOrdinalFilters ?? [];
|
|
63
65
|
this.map = new Map(this.newList(_params.total).map(item => [this.itemKey(item), item]));
|
|
64
66
|
}
|
|
65
67
|
async simulateAsyncDelay({
|
|
@@ -149,10 +151,11 @@ class InMemoryBackend {
|
|
|
149
151
|
}
|
|
150
152
|
_getOrdinal(filters) {
|
|
151
153
|
const {
|
|
152
|
-
categoriesOrdinal
|
|
154
|
+
categoriesOrdinal,
|
|
155
|
+
excludeOrdinalFilters
|
|
153
156
|
} = this;
|
|
154
157
|
const category = (0, _core.hashQueryKey)([{
|
|
155
|
-
filters
|
|
158
|
+
filters: Object.fromEntries(Object.entries(filters).filter(([key]) => !excludeOrdinalFilters.includes(key)))
|
|
156
159
|
}]);
|
|
157
160
|
const ordinal = categoriesOrdinal.get(category) ?? new Map();
|
|
158
161
|
if (!categoriesOrdinal.has(category)) {
|
|
@@ -164,6 +167,7 @@ class InMemoryBackend {
|
|
|
164
167
|
const {
|
|
165
168
|
itemKey
|
|
166
169
|
} = this;
|
|
170
|
+
this.events.emit('moveStart', events);
|
|
167
171
|
await this.simulateAsyncDelay(params);
|
|
168
172
|
for (const {
|
|
169
173
|
from,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chance","require","_orderBy","_interopRequireDefault","_shuffle","_events","_core","InMemoryBackend","constructor","params","_defineProperty2","default","EventEmitter","Chance","query","fetchDataStartPromises","events","listeners","map","listener","length","Promise","all","simulateAsyncDelay","fetchDataSync","items","forEach","item","delete","itemKey","set","Map","index","values","predicate","_","Math","floor","random","available","shuffle","find","enableTotal","createOne","paginationMode","orderBy","projection","initialTotal","total","delay","min","max","newList","throwError","chance","resolve","setTimeout","integer","Array","fill","getOrderBy","ordinal","_getOrdinal","filters","allItems","orders","itemsAfterOrdering","fieldName","order","size","get","itemsAfterFiltering","filter","offset","cursor","findIndex","value","itemsAfterSlicing","slice","limit","cursorItem","itemsAfterFieldsProjection","deleteAll","isItemDeleted","emit","clear","updateMany","categoriesOrdinal","category","hashQueryKey","has","move","from","after","array","fromKey","toKey","fromIndex","splice","toIndex","i","len","updateAll","patch","patchedItems","unshift","newItems","key","entries","push","getRandomItems","count","page","pickset","undefined","exports"],"sources":["../../../src/InMemoryBackend/InMemoryBackend.ts"],"sourcesContent":["import { FiltersMap, RawFilters } from '../model';\nimport { Chance } from 'chance';\nimport orderBy from 'lodash/orderBy';\nimport shuffle from 'lodash/shuffle';\nimport { ListIteratee } from 'lodash';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { hashQueryKey } from 'react-query/core';\n\ninterface Order<T> {\n fieldName: ListIteratee<T>;\n order: 'asc' | 'desc';\n}\n\ninterface IndexedItem<T> {\n item: T;\n index: number;\n}\n\nexport type TransformPatch<T> = (item: T) => Partial<T>;\n\nexport interface BackendQuery<F extends FiltersMap = FiltersMap> {\n /**\n * Number of items to fetch for each page\n */\n limit: number;\n /**\n * The index of the item to start fetching items from.<br>\n * Relevant for APIs that support offset pagination.<br>\n * Not available on `CursorQuery`\n */\n offset?: number;\n page?: number;\n /**\n * Current search term (defaults to `undefined` for empty search)\n */\n search?: string;\n /**\n * The `cursor` returned from the server, to be sent back to it in the next call.<br>\n * Relevant for APIs that support cursor pagination.<br>\n * Not available on `OffsetQuery`\n */\n cursor?: string | null;\n /**\n * Current state of the filters. Each key holds the value of the filter, according to its type, defined in [CollectionConfig](./?path=/story/common-hooks--usecollection).\n */\n filters: RawFilters<F>;\n\n /**\n * Current sort applied to the collection.\n */\n sort?: { fieldName: string; order: 'asc' | 'desc' }[];\n\n /**\n * Array of projected fields. A list of specific field names to return. If `fieldsets` are also specified, the union of `fieldsets` and `fields` is returned.\n */\n fields?: string[];\n /**\n * Array of named, predefined sets of projected fields. A array of predefined named sets of fields to be returned. Specifying multiple `fieldsets` will return the union of fields from all sets. If `fields` are also specified, the union of `fieldsets` and `fields` is returned.\n */\n fieldsset?: string[];\n}\n\nexport interface Delay {\n min: number;\n max: number;\n}\n\ninterface SubmitParams {\n delay?: Delay;\n throwError?: () => unknown;\n}\n\nexport interface InMemoryBackendParams<T, F extends FiltersMap = FiltersMap> {\n paginationMode?: 'offset' | 'cursor';\n /**\n * A callback function for each item creation\n */\n createOne: (index: number) => T;\n /**\n * A callback function that accepts an item and returns a unique ID of it. typically `item.id`.\n */\n itemKey: (item: T) => string;\n /**\n * A function that accepts a subset of [ComputedQuery](./?path=/story/common-types--computedquery) sent by the client and returns another function that accepts an item and should return a boolean that indicates whether the item passes the query filtering or not.\n */\n predicate?: (query: BackendQuery<F>) => (item: T) => boolean;\n /**\n * A function that accepts a subset of [ComputedQuery](./?path=/story/common-types--computedquery) sent by the client and returns another function that accepts an item and should returns a list of rules to order the items by\n */\n orderBy?: (query: BackendQuery<F>) => Order<T>[];\n\n /**\n * A function that accepts a subset of [ComputedQuery](./?path=/story/common-types--computedquery) sent by the client and returns a list of fields to project from the item\n */\n projection?: (query: BackendQuery<F>) => (item: T) => T;\n /**\n * Simulates API latency\n * @default { min: 0, max: 5 }\n */\n delay?: { min: number; max: number };\n /**\n * Total number of items to store in the backend\n */\n total: number;\n /**\n * Enable total for the backend. Defaults to \"true\"\n */\n enableTotal?: boolean;\n}\n\nexport class InMemoryBackend<T, F extends FiltersMap = FiltersMap> {\n readonly createOne: InMemoryBackendParams<T, F>['createOne'];\n readonly itemKey: InMemoryBackendParams<T, F>['itemKey'];\n readonly predicate: (query: BackendQuery<F>) => (item: T) => boolean;\n readonly orderBy?: (query: BackendQuery<F>) => Order<T>[];\n readonly projection;\n readonly initialTotal: number;\n readonly delay: { min: number; max: number };\n readonly paginationMode;\n readonly enableTotal?: boolean;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n updatedMany: () => void;\n updateAll: () => void;\n deleteAll: () => void;\n fetchDataStart: (query: BackendQuery<F>) => void | Promise<void>;\n }>;\n\n map: Map<string, T>;\n\n readonly chance = new Chance();\n\n constructor(params: InMemoryBackendParams<T, F>) {\n this.enableTotal = params.enableTotal ?? true;\n this.createOne = params.createOne;\n this.itemKey = params.itemKey;\n this.paginationMode = params.paginationMode;\n this.predicate = params.predicate ?? (() => () => true);\n this.orderBy = params.orderBy;\n this.projection = params.projection;\n this.initialTotal = params.total;\n this.delay = params.delay ?? { min: 0, max: 5 };\n this.map = new Map<string, T>(\n this.newList(params.total).map((item) => [this.itemKey(item), item]),\n );\n }\n\n private async simulateAsyncDelay({ delay, throwError }: SubmitParams = {}) {\n const { chance } = this;\n await new Promise((resolve) =>\n setTimeout(resolve, chance.integer(delay ?? this.delay)),\n ); // simulate async\n\n await throwError?.();\n }\n\n private newList(length: number) {\n return new Array(length)\n .fill(null)\n .map((_, index) => this.createOne(index));\n }\n\n fetchDataSync(query: BackendQuery<F>) {\n const { itemKey, predicate, orderBy: getOrderBy, paginationMode } = this;\n\n const ordinal = this._getOrdinal(query.filters);\n\n const allItems = this.values;\n\n const orders = getOrderBy?.(query);\n\n let itemsAfterOrdering;\n\n if (orders?.length) {\n itemsAfterOrdering = orderBy(\n allItems,\n orders.map(({ fieldName }) => fieldName),\n orders.map(({ order }) => order),\n );\n } else if (ordinal.size) {\n itemsAfterOrdering = orderBy(\n allItems,\n (item) => ordinal.get(itemKey(item)),\n ['asc'],\n );\n } else {\n itemsAfterOrdering = allItems;\n }\n\n const itemsAfterFiltering = itemsAfterOrdering.filter(predicate(query));\n\n let offset;\n\n if (paginationMode === 'cursor') {\n offset = query.cursor\n ? itemsAfterFiltering.findIndex(\n (value) => itemKey(value) === query.cursor,\n )\n : 0;\n } else {\n offset = query.cursor\n ? itemsAfterFiltering.findIndex(\n (value) => itemKey(value) === query.cursor,\n )\n : query.offset ?? 0;\n }\n\n const itemsAfterSlicing = itemsAfterFiltering.slice(\n offset,\n offset + query.limit,\n );\n\n const cursorItem = itemsAfterFiltering[offset + query.limit] as\n | T\n | undefined;\n\n const itemsAfterFieldsProjection = this.projection\n ? itemsAfterSlicing.map(this.projection(query))\n : itemsAfterSlicing;\n\n return {\n items: itemsAfterFieldsProjection,\n ...(this.enableTotal\n ? { total: itemsAfterFiltering.length, available: allItems.length }\n : {}),\n cursor: cursorItem && itemKey(cursorItem),\n };\n }\n\n fetchData = async (query: BackendQuery<F>) => {\n const fetchDataStartPromises = this.events\n .listeners('fetchDataStart')\n .map((listener) => listener(query));\n\n if (fetchDataStartPromises.length) {\n await Promise.all(fetchDataStartPromises);\n }\n\n await this.simulateAsyncDelay();\n return this.fetchDataSync(query);\n };\n\n deleteMany = async (items: T[], params?: SubmitParams) => {\n await this.simulateAsyncDelay(params);\n items.forEach((item) => this.map.delete(this.itemKey(item)));\n };\n\n async deleteAll(\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n filters?: RawFilters<F>;\n } = {},\n ) {\n const { filters = {} } = params;\n\n await this.simulateAsyncDelay(params);\n const { predicate, itemKey } = this;\n\n const isItemDeleted = predicate({\n filters,\n limit: 1,\n });\n\n for (const item of this.values) {\n if (isItemDeleted(item)) {\n this.map.delete(itemKey(item));\n }\n }\n\n this.events.emit('deleteAll');\n }\n\n clear() {\n this.map.clear();\n }\n\n update = async (item: T) => {\n await this.simulateAsyncDelay();\n this.map.set(this.itemKey(item), item);\n };\n\n async updateMany(items: T[], params: SubmitParams = {}) {\n await this.simulateAsyncDelay(params);\n for (const item of items) {\n this.map.set(this.itemKey(item), item);\n }\n this.events.emit('updatedMany');\n }\n readonly categoriesOrdinal: Map<string, Map<string, number>> = new Map();\n\n _getOrdinal(filters: RawFilters<F>) {\n const { categoriesOrdinal } = this;\n\n const category = hashQueryKey([{ filters }]);\n\n const ordinal =\n categoriesOrdinal.get(category) ?? new Map<string, number>();\n\n if (!categoriesOrdinal.has(category)) {\n categoriesOrdinal.set(category, ordinal);\n }\n\n return ordinal;\n }\n\n async move(\n events: {\n from: IndexedItem<T>;\n after: IndexedItem<T> | null;\n over: IndexedItem<T>;\n filters: RawFilters<F>;\n }[],\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n } = {},\n ) {\n const { itemKey } = this;\n await this.simulateAsyncDelay(params);\n\n for (const { from, after, filters } of events) {\n const ordinal = this._getOrdinal(filters);\n\n const array = ordinal.size\n ? orderBy(this.values.slice(), (item) => ordinal.get(itemKey(item)), [\n 'asc',\n ])\n : this.values.slice();\n\n const fromKey = itemKey(from.item);\n const toKey = after != null ? itemKey(after.item) : null;\n\n const fromIndex = array.findIndex((item) => fromKey === itemKey(item));\n if (fromIndex !== -1) {\n array.splice(fromIndex, 1);\n }\n\n if (toKey != null) {\n const toIndex = array.findIndex((item) => toKey === itemKey(item));\n if (toIndex !== -1) {\n array.splice(toIndex + 1, 0, from.item);\n }\n } else {\n array.splice(0, 0, from.item);\n }\n\n ordinal.clear();\n for (let i = 0, len = array.length; i < len; i++) {\n ordinal.set(itemKey(array[i]), i);\n }\n }\n }\n\n async updateAll(\n patch: TransformPatch<T>,\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n filters?: RawFilters<F>;\n } = {},\n ) {\n const { filters = {} } = params;\n\n await this.simulateAsyncDelay(params);\n const { predicate } = this;\n\n const itemsAfterFiltering = this.values.filter(\n predicate({\n filters,\n limit: 1,\n }),\n );\n\n const patchedItems = itemsAfterFiltering.map((value) => ({\n ...value,\n ...patch(value),\n }));\n\n for (const item of patchedItems) {\n this.map.set(this.itemKey(item), item);\n }\n\n this.events.emit('updateAll');\n }\n\n async unshift(newItems: T[]) {\n await this.simulateAsyncDelay();\n const map = new Map<string, T>();\n\n for (const item of newItems) {\n map.set(this.itemKey(item), item);\n }\n\n for (const [key, value] of Array.from(this.map.entries())) {\n map.set(key, value);\n }\n\n this.map = map;\n }\n\n async push(newItems: T[]) {\n await this.simulateAsyncDelay();\n\n for (const item of newItems) {\n this.map.set(this.itemKey(item), item);\n }\n }\n\n elementAt = (index: number) => this.values[index];\n\n getRandomItems(\n count: number,\n { limit, page }: { limit: number; page: number },\n ) {\n const { chance, values } = this;\n const offset = (page - 1) * limit;\n return chance.pickset(values.slice(offset, offset + limit), count);\n }\n\n randomItem = (predicate = (_: T) => true) => {\n const index = Math.floor(Math.random() * this.available);\n return {\n index,\n item: shuffle(this.values).find(predicate),\n };\n };\n\n get values() {\n return Array.from(this.map.values());\n }\n\n get available() {\n return this.map.size;\n }\n\n get(key?: string): T | undefined {\n if (key == null) {\n return undefined;\n }\n return this.map.get(key);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_chance","require","_orderBy","_interopRequireDefault","_shuffle","_events","_core","InMemoryBackend","constructor","params","_defineProperty2","default","EventEmitter","Chance","query","fetchDataStartPromises","events","listeners","map","listener","length","Promise","all","simulateAsyncDelay","fetchDataSync","items","forEach","item","delete","itemKey","set","Map","index","values","predicate","_","Math","floor","random","available","shuffle","find","enableTotal","createOne","paginationMode","orderBy","projection","initialTotal","total","delay","min","max","excludeOrdinalFilters","newList","throwError","chance","resolve","setTimeout","integer","Array","fill","getOrderBy","ordinal","_getOrdinal","filters","allItems","orders","itemsAfterOrdering","fieldName","order","size","get","itemsAfterFiltering","filter","offset","cursor","findIndex","value","itemsAfterSlicing","slice","limit","cursorItem","itemsAfterFieldsProjection","deleteAll","isItemDeleted","emit","clear","updateMany","categoriesOrdinal","category","hashQueryKey","Object","fromEntries","entries","key","includes","has","move","from","after","array","fromKey","toKey","fromIndex","splice","toIndex","i","len","updateAll","patch","patchedItems","unshift","newItems","push","getRandomItems","count","page","pickset","undefined","exports"],"sources":["../../../src/InMemoryBackend/InMemoryBackend.ts"],"sourcesContent":["import { FiltersMap, RawFilters } from '../model';\nimport { Chance } from 'chance';\nimport orderBy from 'lodash/orderBy';\nimport shuffle from 'lodash/shuffle';\nimport { ListIteratee } from 'lodash';\nimport { EventEmitter } from 'events';\nimport { TypedEmitter } from '../util';\nimport { hashQueryKey } from 'react-query/core';\n\ninterface Order<T> {\n fieldName: ListIteratee<T>;\n order: 'asc' | 'desc';\n}\n\ninterface IndexedItem<T> {\n item: T;\n index: number;\n}\n\nexport type TransformPatch<T> = (item: T) => Partial<T>;\n\nexport interface BackendQuery<F extends FiltersMap = FiltersMap> {\n /**\n * Number of items to fetch for each page\n */\n limit: number;\n /**\n * The index of the item to start fetching items from.<br>\n * Relevant for APIs that support offset pagination.<br>\n * Not available on `CursorQuery`\n */\n offset?: number;\n page?: number;\n /**\n * Current search term (defaults to `undefined` for empty search)\n */\n search?: string;\n /**\n * The `cursor` returned from the server, to be sent back to it in the next call.<br>\n * Relevant for APIs that support cursor pagination.<br>\n * Not available on `OffsetQuery`\n */\n cursor?: string | null;\n /**\n * Current state of the filters. Each key holds the value of the filter, according to its type, defined in [CollectionConfig](./?path=/story/common-hooks--usecollection).\n */\n filters: RawFilters<F>;\n\n /**\n * Current sort applied to the collection.\n */\n sort?: { fieldName: string; order: 'asc' | 'desc' }[];\n\n /**\n * Array of projected fields. A list of specific field names to return. If `fieldsets` are also specified, the union of `fieldsets` and `fields` is returned.\n */\n fields?: string[];\n /**\n * Array of named, predefined sets of projected fields. A array of predefined named sets of fields to be returned. Specifying multiple `fieldsets` will return the union of fields from all sets. If `fields` are also specified, the union of `fieldsets` and `fields` is returned.\n */\n fieldsset?: string[];\n}\n\nexport interface Delay {\n min: number;\n max: number;\n}\n\ninterface SubmitParams {\n delay?: Delay;\n throwError?: () => unknown;\n}\n\ninterface MoveEvent<T, F extends FiltersMap> {\n from: IndexedItem<T>;\n after: IndexedItem<T> | null;\n over: IndexedItem<T>;\n filters: RawFilters<F>;\n}\n\nexport interface InMemoryBackendParams<T, F extends FiltersMap = FiltersMap> {\n paginationMode?: 'offset' | 'cursor';\n /**\n * A callback function for each item creation\n */\n createOne: (index: number) => T;\n /**\n * A callback function that accepts an item and returns a unique ID of it. typically `item.id`.\n */\n itemKey: (item: T) => string;\n /**\n * A function that accepts a subset of [ComputedQuery](./?path=/story/common-types--computedquery) sent by the client and returns another function that accepts an item and should return a boolean that indicates whether the item passes the query filtering or not.\n */\n predicate?: (query: BackendQuery<F>) => (item: T) => boolean;\n /**\n * A function that accepts a subset of [ComputedQuery](./?path=/story/common-types--computedquery) sent by the client and returns another function that accepts an item and should returns a list of rules to order the items by\n */\n orderBy?: (query: BackendQuery<F>) => Order<T>[];\n\n /**\n * A function that accepts a subset of [ComputedQuery](./?path=/story/common-types--computedquery) sent by the client and returns a list of fields to project from the item\n */\n projection?: (query: BackendQuery<F>) => (item: T) => T;\n /**\n * Simulates API latency\n * @default { min: 0, max: 5 }\n */\n delay?: { min: number; max: number };\n /**\n * Total number of items to store in the backend\n */\n total: number;\n /**\n * Enable total for the backend. Defaults to \"true\"\n */\n enableTotal?: boolean;\n\n excludeOrdinalFilters?: string[];\n}\n\nexport class InMemoryBackend<T, F extends FiltersMap = FiltersMap> {\n readonly createOne: InMemoryBackendParams<T, F>['createOne'];\n readonly itemKey: InMemoryBackendParams<T, F>['itemKey'];\n readonly predicate: (query: BackendQuery<F>) => (item: T) => boolean;\n readonly orderBy?: (query: BackendQuery<F>) => Order<T>[];\n readonly projection;\n readonly initialTotal: number;\n readonly delay: { min: number; max: number };\n readonly paginationMode;\n readonly enableTotal?: boolean;\n\n readonly excludeOrdinalFilters;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n updatedMany: () => void;\n updateAll: () => void;\n deleteAll: () => void;\n fetchDataStart: (query: BackendQuery<F>) => void | Promise<void>;\n moveStart: (events: MoveEvent<T, F>[]) => void | Promise<void>;\n }>;\n\n map: Map<string, T>;\n\n readonly chance = new Chance();\n\n constructor(params: InMemoryBackendParams<T, F>) {\n this.enableTotal = params.enableTotal ?? true;\n this.createOne = params.createOne;\n this.itemKey = params.itemKey;\n this.paginationMode = params.paginationMode;\n this.predicate = params.predicate ?? (() => () => true);\n this.orderBy = params.orderBy;\n this.projection = params.projection;\n this.initialTotal = params.total;\n this.delay = params.delay ?? { min: 0, max: 5 };\n this.excludeOrdinalFilters = params.excludeOrdinalFilters ?? [];\n this.map = new Map<string, T>(\n this.newList(params.total).map((item) => [this.itemKey(item), item]),\n );\n }\n\n private async simulateAsyncDelay({ delay, throwError }: SubmitParams = {}) {\n const { chance } = this;\n await new Promise((resolve) =>\n setTimeout(resolve, chance.integer(delay ?? this.delay)),\n ); // simulate async\n\n await throwError?.();\n }\n\n private newList(length: number) {\n return new Array(length)\n .fill(null)\n .map((_, index) => this.createOne(index));\n }\n\n fetchDataSync(query: BackendQuery<F>) {\n const { itemKey, predicate, orderBy: getOrderBy, paginationMode } = this;\n\n const ordinal = this._getOrdinal(query.filters);\n\n const allItems = this.values;\n\n const orders = getOrderBy?.(query);\n\n let itemsAfterOrdering;\n\n if (orders?.length) {\n itemsAfterOrdering = orderBy(\n allItems,\n orders.map(({ fieldName }) => fieldName),\n orders.map(({ order }) => order),\n );\n } else if (ordinal.size) {\n itemsAfterOrdering = orderBy(\n allItems,\n (item) => ordinal.get(itemKey(item)),\n ['asc'],\n );\n } else {\n itemsAfterOrdering = allItems;\n }\n\n const itemsAfterFiltering = itemsAfterOrdering.filter(predicate(query));\n\n let offset;\n\n if (paginationMode === 'cursor') {\n offset = query.cursor\n ? itemsAfterFiltering.findIndex(\n (value) => itemKey(value) === query.cursor,\n )\n : 0;\n } else {\n offset = query.cursor\n ? itemsAfterFiltering.findIndex(\n (value) => itemKey(value) === query.cursor,\n )\n : query.offset ?? 0;\n }\n\n const itemsAfterSlicing = itemsAfterFiltering.slice(\n offset,\n offset + query.limit,\n );\n\n const cursorItem = itemsAfterFiltering[offset + query.limit] as\n | T\n | undefined;\n\n const itemsAfterFieldsProjection = this.projection\n ? itemsAfterSlicing.map(this.projection(query))\n : itemsAfterSlicing;\n\n return {\n items: itemsAfterFieldsProjection,\n ...(this.enableTotal\n ? { total: itemsAfterFiltering.length, available: allItems.length }\n : {}),\n cursor: cursorItem && itemKey(cursorItem),\n };\n }\n\n fetchData = async (query: BackendQuery<F>) => {\n const fetchDataStartPromises = this.events\n .listeners('fetchDataStart')\n .map((listener) => listener(query));\n\n if (fetchDataStartPromises.length) {\n await Promise.all(fetchDataStartPromises);\n }\n\n await this.simulateAsyncDelay();\n return this.fetchDataSync(query);\n };\n\n deleteMany = async (items: T[], params?: SubmitParams) => {\n await this.simulateAsyncDelay(params);\n items.forEach((item) => this.map.delete(this.itemKey(item)));\n };\n\n async deleteAll(\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n filters?: RawFilters<F>;\n } = {},\n ) {\n const { filters = {} } = params;\n\n await this.simulateAsyncDelay(params);\n const { predicate, itemKey } = this;\n\n const isItemDeleted = predicate({\n filters,\n limit: 1,\n });\n\n for (const item of this.values) {\n if (isItemDeleted(item)) {\n this.map.delete(itemKey(item));\n }\n }\n\n this.events.emit('deleteAll');\n }\n\n clear() {\n this.map.clear();\n }\n\n update = async (item: T) => {\n await this.simulateAsyncDelay();\n this.map.set(this.itemKey(item), item);\n };\n\n async updateMany(items: T[], params: SubmitParams = {}) {\n await this.simulateAsyncDelay(params);\n for (const item of items) {\n this.map.set(this.itemKey(item), item);\n }\n this.events.emit('updatedMany');\n }\n readonly categoriesOrdinal: Map<string, Map<string, number>> = new Map();\n\n _getOrdinal(filters: RawFilters<F>) {\n const { categoriesOrdinal, excludeOrdinalFilters } = this;\n\n const category = hashQueryKey([\n {\n filters: Object.fromEntries(\n Object.entries(filters).filter(\n ([key]) => !excludeOrdinalFilters.includes(key),\n ),\n ),\n },\n ]);\n\n const ordinal =\n categoriesOrdinal.get(category) ?? new Map<string, number>();\n\n if (!categoriesOrdinal.has(category)) {\n categoriesOrdinal.set(category, ordinal);\n }\n\n return ordinal;\n }\n\n async move(\n events: MoveEvent<T, F>[],\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n } = {},\n ) {\n const { itemKey } = this;\n this.events.emit('moveStart', events);\n await this.simulateAsyncDelay(params);\n\n for (const { from, after, filters } of events) {\n const ordinal = this._getOrdinal(filters);\n\n const array = ordinal.size\n ? orderBy(this.values.slice(), (item) => ordinal.get(itemKey(item)), [\n 'asc',\n ])\n : this.values.slice();\n\n const fromKey = itemKey(from.item);\n const toKey = after != null ? itemKey(after.item) : null;\n\n const fromIndex = array.findIndex((item) => fromKey === itemKey(item));\n if (fromIndex !== -1) {\n array.splice(fromIndex, 1);\n }\n\n if (toKey != null) {\n const toIndex = array.findIndex((item) => toKey === itemKey(item));\n if (toIndex !== -1) {\n array.splice(toIndex + 1, 0, from.item);\n }\n } else {\n array.splice(0, 0, from.item);\n }\n\n ordinal.clear();\n for (let i = 0, len = array.length; i < len; i++) {\n ordinal.set(itemKey(array[i]), i);\n }\n }\n }\n\n async updateAll(\n patch: TransformPatch<T>,\n params: {\n delay?: Delay;\n throwError?: () => unknown;\n filters?: RawFilters<F>;\n } = {},\n ) {\n const { filters = {} } = params;\n\n await this.simulateAsyncDelay(params);\n const { predicate } = this;\n\n const itemsAfterFiltering = this.values.filter(\n predicate({\n filters,\n limit: 1,\n }),\n );\n\n const patchedItems = itemsAfterFiltering.map((value) => ({\n ...value,\n ...patch(value),\n }));\n\n for (const item of patchedItems) {\n this.map.set(this.itemKey(item), item);\n }\n\n this.events.emit('updateAll');\n }\n\n async unshift(newItems: T[]) {\n await this.simulateAsyncDelay();\n const map = new Map<string, T>();\n\n for (const item of newItems) {\n map.set(this.itemKey(item), item);\n }\n\n for (const [key, value] of Array.from(this.map.entries())) {\n map.set(key, value);\n }\n\n this.map = map;\n }\n\n async push(newItems: T[]) {\n await this.simulateAsyncDelay();\n\n for (const item of newItems) {\n this.map.set(this.itemKey(item), item);\n }\n }\n\n elementAt = (index: number) => this.values[index];\n\n getRandomItems(\n count: number,\n { limit, page }: { limit: number; page: number },\n ) {\n const { chance, values } = this;\n const offset = (page - 1) * limit;\n return chance.pickset(values.slice(offset, offset + limit), count);\n }\n\n randomItem = (predicate = (_: T) => true) => {\n const index = Math.floor(Math.random() * this.available);\n return {\n index,\n item: shuffle(this.values).find(predicate),\n };\n };\n\n get values() {\n return Array.from(this.map.values());\n }\n\n get available() {\n return this.map.size;\n }\n\n get(key?: string): T | undefined {\n if (key == null) {\n return undefined;\n }\n return this.map.get(key);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Čas",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Tento tag již existuje.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Příštích 7 dní",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Zpět",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Uložit zobrazení",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Opravdu chcete odejít?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Rozmezí dní",
|
|
99
100
|
"section.header.folders": "Složky",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Uložit",
|
|
102
|
+
"cairo.subtitle.learnMore": "Zjistit více",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "např. Oblíbené",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Posledních 7 dní",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Zde zadejte text",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Vše",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Zadejte název.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Správa tagů",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Sestupně",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Vrátit zpět",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Název",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Tidspunkt",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Dette tag findes allerede.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Næste 7 dage",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Fortryd",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Gem visning",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Er du sikker på, at du vil lukke vinduet?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Tidsinterval",
|
|
99
100
|
"section.header.folders": "Mapper",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Gem",
|
|
102
|
+
"cairo.subtitle.learnMore": "Læs mere",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "f.eks. Favoritter",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Sidste 7 dage",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Indsæt tekst her",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Alle",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Indtast et navn.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Administrer tags",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Faldende",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Fortryd",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Navn",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Uhrzeit",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Dieses Tag gibt es bereits.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "In den nächsten 7 Tagen",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Rückgängig",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Ansicht speichern",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Seite wirklich schließen?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Zeitraum",
|
|
99
100
|
"section.header.folders": "Ordner",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Speichern",
|
|
102
|
+
"cairo.subtitle.learnMore": "Mehr erfahren",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "z. B. Favoriten",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Letzte 7 Tage",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Text hier eingeben",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Alle",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Gib einen Namen ein.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Tags verwalten",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Absteigend",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Rückgängig",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Name",
|
|
@@ -433,5 +433,6 @@
|
|
|
433
433
|
"cairo.updatedView.collectionPage.toast.desc": "Refresh to update the view with your recent changes.",
|
|
434
434
|
"cairo.updatedView.collectionPage.toast.cta": "Refresh View",
|
|
435
435
|
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
436
|
-
"cairo.subtitle.learnMore": "Learn more"
|
|
436
|
+
"cairo.subtitle.learnMore": "Learn more",
|
|
437
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit."
|
|
437
438
|
}
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Hora",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Esta etiqueta ya existe.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Dentro de 7 días",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Deshacer",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Guardar vista",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "¿De verdad quieres salir?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Rango de fechas",
|
|
99
100
|
"section.header.folders": "Carpetas",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Guardar",
|
|
102
|
+
"cairo.subtitle.learnMore": "Leer más",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "P. ej., Favoritos",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Últimos 7 días",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Escribe aquí",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Todo",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Escribe un nombre.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Administrar etiquetas",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Descendente",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Deshacer",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Nombre",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Heure",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Ce libellé existe déjà.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "7 prochains jours",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Annuler",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Enregistrer la vue",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Êtes‑vous sûr de vouloir quitter ?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Période",
|
|
99
100
|
"section.header.folders": "Dossiers",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Enregistrer",
|
|
102
|
+
"cairo.subtitle.learnMore": "En savoir plus",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "Ex. Favoris",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Les 7 derniers jours",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Saisissez le texte ici",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Tout",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Saisissez un nom.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Gérer les libellés",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Ordre décroissant",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Annuler",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Nom",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Time",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "This tag already exists.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Next 7 days",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "पूर्ववत् करें",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "दृश्य सहेजें",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "क्या पक्का आप इसे छोड़ना चाहते हैं?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "तारीख सीमा",
|
|
99
100
|
"section.header.folders": "फोल्डर",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Save",
|
|
102
|
+
"cairo.subtitle.learnMore": "Learn more",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "जैसे, पसंदीदा",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "पिछले 7 दिन",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Enter text here",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "सभी",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Enter a name.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Manage Tags",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "अवरोही",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Undo",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "नाम",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Waktu",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Tag ini sudah ada.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "7 hari ke depan",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Urungkan",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Simpan Tampilan",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Anda yakin ingin keluar?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Rentang tanggal",
|
|
99
100
|
"section.header.folders": "Folder",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Simpan",
|
|
102
|
+
"cairo.subtitle.learnMore": "Pelajari selengkapnya",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "mis., Favorit",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "7 hari terakhir",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Masukkan teks di sini",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Semua",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Masukkan nama.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Kelola Tag",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Turun",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Batalkan",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Nama",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Ora",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Questo tag esiste già.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "I prossimi 7 giorni",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Annulla",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Salva vista",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Vuoi uscire?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Periodo di tempo",
|
|
99
100
|
"section.header.folders": "Cartelle",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Salva",
|
|
102
|
+
"cairo.subtitle.learnMore": "Scopri di più",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "per es. Preferiti",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Ultimi 7 giorni",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Inserisci il testo qui",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Tutti",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Inserisci un nome.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Gestisci tag",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Discendente",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Annulla",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Nome",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "時間",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "このタグはすでに使用されています。",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "7日以内",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "元に戻す",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "ビューを保存",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "サイトを閉じてもよろしいですか?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "日付範囲",
|
|
99
100
|
"section.header.folders": "フォルダ",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "保存する",
|
|
102
|
+
"cairo.subtitle.learnMore": "詳細はこちら",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "例:お気に入り",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "過去7日間",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "ここにテキストを入力",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "すべて",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "名前を入力してください。",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "タグを管理する",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "降順",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "元に戻す",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "名前",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "시간",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "이미 존재하는 태그입니다.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "7일 후",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "실행 취소",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "조회 화면 저장",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "페이지 종료하기",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "기간",
|
|
99
100
|
"section.header.folders": "폴더",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "저장",
|
|
102
|
+
"cairo.subtitle.learnMore": "자세히 보기",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "예: 즐겨찾기",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "지난 7일",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "내용을 입력하세요.",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "전체",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "이름을 입력하세요.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "태그 관리",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "내림차순",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "실행 취소",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "이름",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Tijd",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Deze tag bestaat al.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "In de komende 7 dagen",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Ongedaan maken",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Weergave opslaan",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Weet je zeker dat je de pagina wilt verlaten?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Datumbereik",
|
|
99
100
|
"section.header.folders": "Mappen",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Opslaan",
|
|
102
|
+
"cairo.subtitle.learnMore": "Meer info",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "bijv. Favorieten",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Afgelopen 7 dagen",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Voer hier je tekst in",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Alle",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Voer een naam in.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Tags beheren",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Aflopend",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Ongedaan maken",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Naam",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Tidspunkt",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Denne taggen finnes allerede.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Neste 7 dager",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Angre",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Lagre visning",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Er du sikker på at du vil lukke?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Datointervall",
|
|
99
100
|
"section.header.folders": "Mapper",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Lagre",
|
|
102
|
+
"cairo.subtitle.learnMore": "Finn ut mer",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "f.eks. Favoritter",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Siste 7 dager",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Skriv inn tekst her",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Alle",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Angi et navn.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Administrer tagger",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Synkende",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Angre",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Navn",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Godzina",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Ten tag już istnieje.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Następne 7 dni",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Cofnij",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Zapisz widok",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Czy na pewno chcesz wyjść?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Przedział czasowy",
|
|
99
100
|
"section.header.folders": "Foldery",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Zapisz",
|
|
102
|
+
"cairo.subtitle.learnMore": "Więcej",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "np. Ulubione",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Ostatnie 7 dni",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Wpisz tekst tutaj",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Wszystkie",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Wpisz nazwę.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Zarządzaj tagami",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Malejąco",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Cofnij",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Nazwa",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Horário",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Esta tag já existe.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Próximos 7 dias",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Desfazer",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Salvar visualização",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Tem certeza de que deseja sair?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Intervalo de datas",
|
|
99
100
|
"section.header.folders": "Pastas",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Salvar",
|
|
102
|
+
"cairo.subtitle.learnMore": "Saiba mais",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "Por exemplo: Favoritos",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Últimos 7 dias",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Insira o texto aqui",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Todos",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Insira um nome.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Gerenciar tags",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Decrescente",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Desfazer",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Nome",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Время",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Такой тег уже есть.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Следующие 7 дней",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Отменить",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Сохранить вид",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Точно уйти?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Период",
|
|
99
100
|
"section.header.folders": "Папки",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Сохранить",
|
|
102
|
+
"cairo.subtitle.learnMore": "Подробнее",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "напр., Избранное",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Последние 7 дней",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Добавьте свой текст здесь",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Все",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Введите название.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Управлять тегами",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "По убыванию",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Отменить",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Название",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Tid",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Den här taggen finns redan.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Kommande 7 dagar",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Ångra",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Spara vy",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Är du säker på att du vill lämna?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Datumintervall",
|
|
99
100
|
"section.header.folders": "Mappar",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Spara",
|
|
102
|
+
"cairo.subtitle.learnMore": "Läs mer",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "t.ex. favoriter",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Senaste 7 dagarna",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Skriv din text här",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Alla",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Ange ett namn.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Hantera taggar",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Fallande",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Ångra",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Namn",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "เวลา",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "มีแท็กนี้อยู่แล้ว",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "ในอีก 7 วัน",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "เลิกทำ",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "บันทึกมุมมอง",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "แน่ใจหรือไม่ว่าต้องการออกจากหน้านี้",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "ช่วงวันที่",
|
|
99
100
|
"section.header.folders": "โฟลเดอร์",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "บันทึก",
|
|
102
|
+
"cairo.subtitle.learnMore": "ศึกษาเพิ่มเติม",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "เช่น รายการโปรด",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "7 วันที่ผ่านมา",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "กรอกข้อความที่นี่",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "ทั้งหมด",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "กรอกชื่อ",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "จัดการแท็ก",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "จากมากไปน้อย",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "เลิกทำ",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "ชื่อ",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"cairo.filtersPanel.time.title": "Saat",
|
|
69
69
|
"cairo.tags.manageTags.modal.list.input.validation.exists": "Bu etiket zaten mevcut.",
|
|
70
70
|
"cairo.filtersPanel.date.next7Days": "Önümüzdeki 7 gün",
|
|
71
|
+
"cairo.collectionPage.nestedLimit.tooltip": "{subCatsAmount, plural, =1 {There is a max of 1 sub-level.} other {There is a max of # sub-levels.}}",
|
|
71
72
|
"cairo.sortableColumns.notification.undo": "Geri Al",
|
|
72
73
|
"cairo.filtersPanel.saveView.button": "Görünümü Kaydet",
|
|
73
74
|
"cairo.dragAndDrop.leaveSite.modal.title": "Çıkmak İstediğinize Emin misiniz?",
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
"cairo.filtersPanel.dateRange.title": "Tarih aralığı",
|
|
99
100
|
"section.header.folders": "Klasörler",
|
|
100
101
|
"cairo.tags.manageTags.modal.list.input.save.CTA": "Kaydet",
|
|
102
|
+
"cairo.subtitle.learnMore": "Daha Fazla Bilgi",
|
|
101
103
|
"cairo.table.saveViewModal.placeholder": "Ör. Favoriler",
|
|
102
104
|
"cairo.filtersPanel.date.7days": "Son 7 gün",
|
|
103
105
|
"cairo.customFields.fieldType.longText.placeholder": "Buraya metin girin",
|
|
@@ -189,6 +191,7 @@
|
|
|
189
191
|
"cairo.filtersPanel.default.All": "Tümü",
|
|
190
192
|
"cairo.tags.manageTags.modal.list.input.validation.noName": "Bir ad girin.",
|
|
191
193
|
"cairo.tags.collectionPage.popover.manage.CTA": "Etiketleri Yönet",
|
|
194
|
+
"cairo.tags.creationLimitReached.error": "Unable to create tag. You've reached the 100 tag limit.",
|
|
192
195
|
"cairo.table.advanced-sorting.descending.order": "Azalan",
|
|
193
196
|
"cairo.tags.applyChanges.toast.undo.CTA": "Geri Al",
|
|
194
197
|
"cairo.manageView.Rename.modal.field.title": "Ad",
|