@arpproject/recrate 0.1.52 → 0.1.54
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/crate-builder/RenderEntity/Add.d.ts +2 -2
- package/dist/crate-builder/RenderEntity/AutoComplete.d.ts +4 -2
- package/dist/crate-builder/RenderEntity/AutoComplete.global.spec.d.ts +1 -0
- package/dist/crate-builder/RenderEntity/GlobalEntityConflictDialog.d.ts +9 -0
- package/dist/crate-builder/RenderEntity/auto-complete.lib.d.ts +1 -0
- package/dist/crate-builder/RenderEntity/global-entity-matches.d.ts +3 -0
- package/dist/crate-builder/RenderEntity/useEntityMutationHandlers.d.ts +1 -1
- package/dist/crate-builder/RenderEntity/useEntityNavigationState.d.ts +1 -2
- package/dist/crate-builder/RenderEntity/useEntityScrollRestoration.d.ts +1 -2
- package/dist/crate-builder/locales/en.d.ts +13 -0
- package/dist/crate-builder/locales/hu.d.ts +13 -0
- package/dist/recrate.css +1 -1
- package/dist/recrate.es.js +332 -165
- package/dist/types.d.ts +10 -1
- package/package.json +1 -1
|
@@ -19,8 +19,8 @@ interface AddProps {
|
|
|
19
19
|
placeholder?: string;
|
|
20
20
|
crateManager: any;
|
|
21
21
|
onCreateProperty: (data: any) => void;
|
|
22
|
-
onCreateEntity: (data: any) => void;
|
|
23
|
-
onLinkEntity: (data: any) => void;
|
|
22
|
+
onCreateEntity: (data: any) => string | null | void;
|
|
23
|
+
onLinkEntity: (data: any) => string | null | void;
|
|
24
24
|
}
|
|
25
25
|
declare const Add: React.FC<AddProps>;
|
|
26
26
|
export default Add;
|
|
@@ -3,10 +3,12 @@ interface AutoCompleteProps {
|
|
|
3
3
|
type: string;
|
|
4
4
|
onLinkEntity: (data: {
|
|
5
5
|
json: any;
|
|
6
|
-
|
|
6
|
+
globalEntityValues?: any;
|
|
7
|
+
}) => string | null | void;
|
|
7
8
|
onCreateEntity: (data: {
|
|
8
9
|
json: any;
|
|
9
|
-
|
|
10
|
+
fromGlobalEntity?: boolean;
|
|
11
|
+
}) => string | null | void;
|
|
10
12
|
}
|
|
11
13
|
declare const AutoComplete: React.FC<AutoCompleteProps>;
|
|
12
14
|
export default AutoComplete;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface GlobalEntityConflictDialogProps {
|
|
3
|
+
global: any;
|
|
4
|
+
matches: any[];
|
|
5
|
+
onChoose: (local: any, useGlobalValues: boolean) => void;
|
|
6
|
+
onCancel: () => void;
|
|
7
|
+
}
|
|
8
|
+
declare const GlobalEntityConflictDialog: React.FC<GlobalEntityConflictDialogProps>;
|
|
9
|
+
export default GlobalEntityConflictDialog;
|
|
@@ -13,6 +13,7 @@ export declare class Lookup {
|
|
|
13
13
|
private crateManager;
|
|
14
14
|
constructor({ config, lookup, crateManager }: LookupConfig);
|
|
15
15
|
getEntities(type: string, queryString: string): Promise<LookupResult>;
|
|
16
|
+
globalEntities(type: string, queryString: string): Promise<LookupResult>;
|
|
16
17
|
dataPacks(type: string, queryString: string): Promise<LookupResult>;
|
|
17
18
|
entities(type: string, queryString: string): Promise<LookupResult>;
|
|
18
19
|
entityTemplates(type: string, queryString: string): Promise<LookupResult>;
|
|
@@ -33,7 +33,7 @@ declare const useEntityMutationHandlers: ({ entity, contextEntity, crateManager,
|
|
|
33
33
|
property: string;
|
|
34
34
|
idx: number;
|
|
35
35
|
}) => void;
|
|
36
|
-
handleLinkEntity: (data: any) =>
|
|
36
|
+
handleLinkEntity: (data: any) => any;
|
|
37
37
|
handleRejectAiEntityUnlink: (data: {
|
|
38
38
|
sourceEntityId: string;
|
|
39
39
|
property: string;
|
|
@@ -11,12 +11,11 @@ interface UseEntityNavigationStateOptions {
|
|
|
11
11
|
iconView: boolean;
|
|
12
12
|
tabPaneWidth: number;
|
|
13
13
|
onSaveCrate: (activeEntityId?: string) => void;
|
|
14
|
-
debugScroll?: (...args: any[]) => void;
|
|
15
14
|
}
|
|
16
15
|
interface CaptureViewContextOptions {
|
|
17
16
|
updateActiveTab?: boolean;
|
|
18
17
|
}
|
|
19
|
-
declare const useEntityNavigationState: ({ activeTab, activeContentRef, contextEntity, state, restoreInProgressRef, showAddPanel, reverseSidebarVisible, highlightRequiredProperties, iconView, tabPaneWidth, onSaveCrate,
|
|
18
|
+
declare const useEntityNavigationState: ({ activeTab, activeContentRef, contextEntity, state, restoreInProgressRef, showAddPanel, reverseSidebarVisible, highlightRequiredProperties, iconView, tabPaneWidth, onSaveCrate, }: UseEntityNavigationStateOptions) => {
|
|
20
19
|
captureCurrentViewContext: (tabName?: string) => void;
|
|
21
20
|
captureViewContext: (tabName?: string, explicitScrollTop?: number, options?: CaptureViewContextOptions) => void;
|
|
22
21
|
saveCratePreservingView: (activeEntityId?: string) => void;
|
|
@@ -28,7 +28,6 @@ interface UseEntityScrollRestorationOptions {
|
|
|
28
28
|
updateActiveTab?: boolean;
|
|
29
29
|
}) => void;
|
|
30
30
|
disabled?: boolean;
|
|
31
|
-
debugScroll?: (...args: any[]) => void;
|
|
32
31
|
}
|
|
33
|
-
declare const useEntityScrollRestoration: ({ activeTab, activeContentRef, contextEntity, renderTabs, tabsLength, extraPropertiesLength, scrollRestoreNonce, setScrollRestoreNonce, navigationRestoreReadyRef, pendingRestoredTabRef, restoreInProgressRef, pendingAddedPropertyRef, showAddPanel, reverseSidebarVisible, highlightRequiredProperties, iconView, tabPaneWidth, state, isAiScrollRestoreSuppressed, captureViewContext, disabled,
|
|
32
|
+
declare const useEntityScrollRestoration: ({ activeTab, activeContentRef, contextEntity, renderTabs, tabsLength, extraPropertiesLength, scrollRestoreNonce, setScrollRestoreNonce, navigationRestoreReadyRef, pendingRestoredTabRef, restoreInProgressRef, pendingAddedPropertyRef, showAddPanel, reverseSidebarVisible, highlightRequiredProperties, iconView, tabPaneWidth, state, isAiScrollRestoreSuppressed, captureViewContext, disabled, }: UseEntityScrollRestorationOptions) => void;
|
|
34
33
|
export default useEntityScrollRestoration;
|
|
@@ -176,6 +176,19 @@ declare namespace en {
|
|
|
176
176
|
let external_lookup_timeout_error: string;
|
|
177
177
|
let ror_lookup_timeout_error: string;
|
|
178
178
|
let associate_existing_entity: string;
|
|
179
|
+
let associate_global_entity: string;
|
|
180
|
+
let global_entity_already_exists_title: string;
|
|
181
|
+
let global_entity_reused_notice: string;
|
|
182
|
+
let global_entity_reused_ok: string;
|
|
183
|
+
let global_entity_conflict_title: string;
|
|
184
|
+
let global_entity_conflict_description: string;
|
|
185
|
+
let global_entity_conflict_preserve_links: string;
|
|
186
|
+
let global_entity_conflict_cancel: string;
|
|
187
|
+
let global_entity_conflict_property: string;
|
|
188
|
+
let global_entity_conflict_crate_values: string;
|
|
189
|
+
let global_entity_conflict_global_values: string;
|
|
190
|
+
let global_entity_conflict_keep_crate: string;
|
|
191
|
+
let global_entity_conflict_use_global: string;
|
|
179
192
|
let associate_entity_from_template: string;
|
|
180
193
|
let associate_organization_from_ror: string;
|
|
181
194
|
let associate_user_created_entity: string;
|
|
@@ -176,6 +176,19 @@ declare namespace hu {
|
|
|
176
176
|
let external_lookup_timeout_error: string;
|
|
177
177
|
let ror_lookup_timeout_error: string;
|
|
178
178
|
let associate_existing_entity: string;
|
|
179
|
+
let associate_global_entity: string;
|
|
180
|
+
let global_entity_already_exists_title: string;
|
|
181
|
+
let global_entity_reused_notice: string;
|
|
182
|
+
let global_entity_reused_ok: string;
|
|
183
|
+
let global_entity_conflict_title: string;
|
|
184
|
+
let global_entity_conflict_description: string;
|
|
185
|
+
let global_entity_conflict_preserve_links: string;
|
|
186
|
+
let global_entity_conflict_cancel: string;
|
|
187
|
+
let global_entity_conflict_property: string;
|
|
188
|
+
let global_entity_conflict_crate_values: string;
|
|
189
|
+
let global_entity_conflict_global_values: string;
|
|
190
|
+
let global_entity_conflict_keep_crate: string;
|
|
191
|
+
let global_entity_conflict_use_global: string;
|
|
179
192
|
let associate_entity_from_template: string;
|
|
180
193
|
let associate_organization_from_ror: string;
|
|
181
194
|
let associate_user_created_entity: string;
|
package/dist/recrate.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
.el-tabs__item{height:unset}.el-select-dropdown__wrap{max-height:500px!important}.el-select-group__title{font-size:14px!important}.scrollbar{overflow:overlay}.scrollbar::-webkit-scrollbar{background-color:#0000;height:16px;width:16px;z-index:999999}.scrollbar::-webkit-scrollbar-track{background-color:#0000}.scrollbar::-webkit-scrollbar-thumb{background-color:#0000;border:0 solid #fff;border-radius:16px}.scrollbar::-webkit-scrollbar-button{display:none}.scrollbar:hover::-webkit-scrollbar-thumb{background-color:#a0a0a5;border:4px solid #fff}.scrollbar::-webkit-scrollbar-thumb:hover{background-color:#a0a0a5;border:4px solid #f4f4f4}.cm-editor{font-size:12px;height:auto;max-height:none}.recrate-tab-icon{align-items:center;display:flex;font-size:14px;font-weight:600;height:100%;justify-content:center;width:100%}.recrate-add-only-tabs .ant-tabs-nav,.recrate-add-only-tabs .ant-tabs-nav-wrap{height:100%}.recrate-add-only-tabs .ant-tabs-nav-list{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center}.recrate-add-only-tabs .ant-tabs-tab{justify-content:center}.recrate-tab-rail{background:#fff;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;position:relative}.recrate-tab-rail-actions{border-bottom:1px solid #e5e7eb;display:flex;flex:0 0 auto;gap:8px;justify-content:center;padding:10px 8px 8px}.recrate-tab-rail-actions-only .recrate-tab-rail-actions{border-bottom:0}.recrate-tab-rail-list{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;padding:8px 6px 16px;scrollbar-width:none}.recrate-tab-rail-list::-webkit-scrollbar{display:none}.recrate-tab-rail-item{border-radius:6px;color:#334155;cursor:pointer;display:block;margin:2px 0;outline:none;padding:12px 10px;position:relative;transition:background-color .12s ease,color .12s ease;width:100%}.recrate-tab-rail-item:focus-visible,.recrate-tab-rail-item:hover{background:#f1f5f9}.recrate-tab-rail-item-active{background:#eaf2ff;color:#1d4ed8}.recrate-tab-rail-item-active:before{background:#2563eb;border-radius:999px;bottom:10px;content:"";left:0;position:absolute;top:10px;width:3px}.recrate-tab-rail-item-icon{align-items:center;display:flex;justify-content:center;min-height:42px;padding:8px}.recrate-tab-rail-row{align-items:center;display:flex;gap:8px;justify-content:space-between}.recrate-tab-rail-title{font-size:15px;font-weight:600;line-height:1.35;min-width:0;overflow-wrap:anywhere}.recrate-tab-rail-status{align-items:center;display:inline-flex;flex:0 0 auto;gap:4px}.recrate-tab-rail-remove-button{flex:0 0 auto;transition:opacity .12s ease}.recrate-tab-rail-description{color:#64748b;font-size:12px;line-height:1.35;margin-top:4px;overflow-wrap:anywhere}.recrate-tab-rail:after,.recrate-tab-rail:before{content:"";height:34px;left:0;opacity:0;pointer-events:none;position:absolute;right:0;transition:opacity .12s ease;z-index:2}.recrate-tab-rail:before{background:linear-gradient(#fff,#fff0);top:53px}.recrate-tab-rail:after{background:linear-gradient(#fff0,#fff);bottom:0}.recrate-tab-rail-can-scroll-down:after,.recrate-tab-rail-can-scroll-up:before{opacity:1}.recrate-tab-rail-scroll-button{box-shadow:0 2px 8px #0f172a24;left:50%;position:absolute;transform:translateX(-50%);z-index:3}.recrate-tab-rail-scroll-button-up{top:58px}.recrate-tab-rail-scroll-button-down{bottom:8px}.recrate-add-property-drawer{z-index:6000}.recrate-matching-properties-tooltip,.recrate-schema-filter-dropdown{z-index:6100!important}.recrate-add-property-title.ant-typography{font-size:22px;line-height:1.25;margin:0}.recrate-add-property-results{flex:1 1 auto;min-height:0;position:relative}.recrate-add-property-results-updating .recrate-add-property-list{opacity:.55}.recrate-add-property-results-mask{align-items:center;backdrop-filter:blur(1px);background:#ffffffb8;display:flex;gap:8px;inset:0;justify-content:center;min-height:96px;position:absolute;z-index:2}.recrate-add-property-list{height:100%;min-height:0}.recrate-schema-settings-body{max-height:min(60vh,640px);min-height:0;overflow:hidden}.recrate-schema-settings-scroll{min-height:0;overflow-y:auto;padding-right:4px}.recrate-add-property-row{border:1px solid #0000;border-radius:6px;color:#111827;cursor:pointer;outline:none;padding:10px 12px 10px 14px;position:relative;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease}.recrate-add-property-row:before{background:#0000;border-radius:999px;bottom:10px;content:"";left:0;position:absolute;top:10px;transition:background-color .12s ease;width:3px}.recrate-add-property-row:focus-visible,.recrate-add-property-row:hover{background:#f8fafc;border-color:#dbeafe;box-shadow:0 1px 4px #0f172a14}.recrate-add-property-row:active{transform:translateY(1px)}.recrate-add-property-row-selected{background:#eff6ff;border-color:#93c5fd;box-shadow:0 0 0 1px #2563eb1f}.recrate-add-property-row-selected:before{background:#2563eb}.recrate-add-property-row-header{color:#111827;min-width:0}.recrate-add-property-row-name{color:inherit;flex:0 1 auto;font-weight:600;min-width:0;overflow-wrap:anywhere}.recrate-add-property-row-type{color:#475569;overflow-wrap:anywhere}.recrate-add-property-row-help{color:#6b7280;display:block;line-height:1.45;margin-top:4px}.recrate-add-property-row-check{color:#2563eb;margin-left:auto}.recrate-quick-settings-header{align-items:center;backdrop-filter:blur(8px);background:#fffffff5;border-bottom:1px solid #dbe3ef;box-shadow:0 6px 14px #0f172a14;display:flex;gap:14px;margin:0 -12px 12px;padding:2px 12px 5px 18px;position:sticky;top:0;z-index:4}.recrate-quick-settings-actions{align-items:center;display:inline-flex;flex:0 0 auto;gap:6px}.recrate-quick-settings-filter{flex:1 1 260px;max-width:420px;min-width:160px}.recrate-property-compact .recrate-add-control{margin-bottom:0;margin-top:0;padding-bottom:0;padding-top:0}.recrate-property-name-with-ai{align-items:center;display:inline-flex;gap:6px;min-width:0}.recrate-ai-edited-icon{align-items:center;background:#effbf5;border-radius:50%;color:#087446;display:inline-flex;flex:0 0 auto;font-size:12px;font-weight:800;height:18px;justify-content:center;line-height:1;width:18px}.recrate-ai-edited-filter-button.ant-btn{color:#087446;font-weight:800;min-width:32px;padding-inline:0}.recrate-ai-edited-filter-button.ant-btn-primary{background:#12a76c;border-color:#12a76c;color:#fff}.recrate-ai-entity-review-card{box-shadow:inset 0 0 0 1px #38c88a47,0 2px 8px #186f4a14}.recrate-ai-entity-delete-card{box-shadow:0 2px 8px #b91c1c14}.recrate-ai-entity-delete-card:hover{box-shadow:0 6px 18px #b91c1c24}.recrate-ai-entity-unlink-card{box-shadow:0 2px 8px #c2610014}.recrate-ai-entity-unlink-card:hover{box-shadow:0 6px 18px #c2610024}.recrate-ai-deleted-linked-entity-id{border-bottom:1px solid #0003;color:#00000073;display:block;font-size:.75rem;line-height:1.35;margin-bottom:4px;overflow-wrap:anywhere;padding-bottom:4px}.recrate-ai-deleted-linked-entity-name{color:#000000e0;font-weight:700;overflow-wrap:anywhere}.recrate-ai-entity-reviewed-card{position:relative}.recrate-ai-entity-edited-badge{bottom:14px;position:absolute;right:14px;z-index:1}.recrate-ai-entity-review-card .recrate-ai-entity-edited-badge{right:130px}.recrate-ai-entity-review-summary{align-items:center;display:flex;gap:8px;justify-content:space-between;margin-top:10px}.recrate-ai-entity-review-meta{align-items:center;display:inline-flex;gap:8px;min-width:0}.recrate-ai-entity-review-count{color:#087446;font-size:13px;font-weight:800;white-space:nowrap}.recrate-ai-entity-inline-actions{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-top:18px}.recrate-ai-entity-inline-actions .recrate-ai-actions{gap:12px}.recrate-ai-entity-review-button.ant-btn{background:#57d8a3;border:0;border-radius:6px;box-shadow:0 1px 2px #00000024;color:#0d2d23;font-size:13px;font-weight:800;height:28px;padding:0 10px}.recrate-ai-entity-review-button.ant-btn:focus-visible,.recrate-ai-entity-review-button.ant-btn:hover{background:#45c991!important;color:#0d2d23!important}.recrate-ai-entity-diff-toggle.ant-btn{background:#ffffffd1;border-color:#1486553d;color:#047857;min-width:28px;padding:0;width:28px}.recrate-ai-entity-diff-toggle.ant-btn:focus-visible,.recrate-ai-entity-diff-toggle.ant-btn:hover{background:#ecfdf5!important;border-color:#14865573;color:#047857!important}.recrate-ai-entity-delete-card .recrate-ai-entity-review-count{color:#b91c1c}.recrate-ai-entity-delete-card .recrate-ai-entity-review-button.ant-btn{background:#ff5b63}.recrate-ai-entity-delete-card .recrate-ai-entity-review-button.ant-btn:focus-visible,.recrate-ai-entity-delete-card .recrate-ai-entity-review-button.ant-btn:hover{background:#f0444f!important;color:#111827!important}.recrate-ai-entity-delete-card .recrate-ai-action-approve.ant-btn{background:#ff5b63;border-color:#ff5b63}.recrate-ai-entity-delete-card .recrate-ai-action-approve.ant-btn:focus-visible,.recrate-ai-entity-delete-card .recrate-ai-action-approve.ant-btn:hover{background:#f0444f!important;border-color:#f0444f!important;color:#111827!important}.recrate-ai-entity-delete-card .recrate-ai-action-reject.ant-btn{background:#57d8a3;border-color:#57d8a3}.recrate-ai-entity-delete-card .recrate-ai-action-reject.ant-btn:focus-visible,.recrate-ai-entity-delete-card .recrate-ai-action-reject.ant-btn:hover{background:#45c991!important;border-color:#45c991!important;color:#111827!important}.recrate-ai-entity-unlink-card .recrate-ai-action-approve.ant-btn{background:#fb923c;border-color:#fb923c}.recrate-ai-entity-unlink-card .recrate-ai-action-approve.ant-btn:focus-visible,.recrate-ai-entity-unlink-card .recrate-ai-action-approve.ant-btn:hover{background:#f97316!important;border-color:#f97316!important;color:#111827!important}.recrate-ai-entity-unlink-card .recrate-ai-action-reject.ant-btn{background:#57d8a3;border-color:#57d8a3}.recrate-ai-entity-unlink-card .recrate-ai-action-reject.ant-btn:focus-visible,.recrate-ai-entity-unlink-card .recrate-ai-action-reject.ant-btn:hover{background:#45c991!important;border-color:#45c991!important;color:#111827!important}.recrate-ai-confirm-bar{align-items:center;background:linear-gradient(90deg,#f5fff9,#f9fbfd);border-bottom:1px solid #c8ded4;border-top:1px solid #e7eee9;box-shadow:inset 4px 0 0 #54d69d;color:#2d3b35;display:grid;gap:10px;grid-template-columns:minmax(220px,1fr) auto;min-height:40px;padding:5px 10px 5px 14px}.recrate-ai-confirm-message{align-items:center;display:flex;font-size:13px;font-weight:700;gap:10px;line-height:1.2;min-width:0;overflow:hidden}.recrate-ai-confirm-spark{color:#12a76c;font-size:17px;line-height:1}.recrate-ai-confirm-controls{align-items:center;display:flex;gap:6px;white-space:nowrap}.recrate-ai-confirm-bar-remaining{background:linear-gradient(90deg,#fff9eb,#f9fbfd);box-shadow:inset 4px 0 0 #f59e0b}.recrate-ai-confirm-bar-remaining .recrate-ai-confirm-spark{color:#b45309}.recrate-ai-review-next-entity.ant-btn{background:#fbbf24;border:0;border-radius:5px;box-shadow:0 1px 2px #0000001f;color:#1f1710;font-size:12px;font-weight:800;height:26px;padding:0 10px}.recrate-ai-review-next-entity.ant-btn:focus-visible,.recrate-ai-review-next-entity.ant-btn:hover{background:#f59e0b!important;color:#1f1710!important}.recrate-ai-bulk-action.ant-btn{align-items:center;border:0;border-radius:5px;box-shadow:0 1px 2px #0000001f;color:#14201b;display:inline-flex;font-size:12px;font-weight:800;gap:6px;height:26px;padding:0 9px}.recrate-ai-bulk-action-icon{font-size:10px}.recrate-ai-bulk-action-menu-trigger{align-items:center;align-self:stretch;cursor:pointer;display:inline-flex;margin:0 -5px 0 0;padding:0 5px}.recrate-ai-bulk-accept.ant-btn{background:#57d8a3}.recrate-ai-bulk-accept.ant-btn:focus-visible,.recrate-ai-bulk-accept.ant-btn:hover{background:#45c991!important;color:#14201b!important}.recrate-ai-bulk-reject.ant-btn{background:#ff6a71;color:#1f1717}.recrate-ai-bulk-reject.ant-btn:focus-visible,.recrate-ai-bulk-reject.ant-btn:hover{background:#f0444f!important;color:#1f1717!important}.recrate-ai-stepper{align-items:center;border-left:1px solid #cad7d1;color:#53625c;display:inline-flex;font-weight:800;gap:4px;margin-left:2px;padding-left:8px}.recrate-ai-stepper .ant-btn{border-radius:5px;color:#4a5a54;height:24px;width:24px}.recrate-ai-stepper .ant-btn:not(:disabled):focus-visible,.recrate-ai-stepper .ant-btn:not(:disabled):hover{background:#e6f4ec!important;color:#33443d!important}.recrate-ai-step-count{color:#34443d;font-size:13px;min-width:32px;text-align:center}.recrate-ai-review{border-radius:8px;margin-top:18px;padding-top:20px!important;position:relative}.recrate-ai-review-current .recrate-ai-suggestion,.recrate-ai-review-current.recrate-property,.recrate-ai-suggestion.recrate-ai-review-current{border-color:#12a76ce6!important;box-shadow:inset 4px 0 0 #12a76c,0 0 0 3px #12a76c1f,0 6px 18px #1969461f!important}.recrate-ai-delete.recrate-ai-review-current,.recrate-ai-review-current .recrate-ai-delete{border-color:#dc2626e0!important;box-shadow:inset 4px 0 0 #ef4444,0 0 0 3px #ef44441f,0 6px 18px #b91c1c1f!important}.recrate-ai-suggestion{background:linear-gradient(90deg,#22c55e1c,#22c55e0a 55%,#fff0);border:1px solid #22c55e6b;box-shadow:inset 4px 0 0 #22c55e,0 4px 14px #15803d14}.recrate-ai-delete{background:linear-gradient(90deg,#ef44441c,#ef44440a 55%,#fff0);border:1px solid #ef44446b;box-shadow:inset 4px 0 0 #ef4444,0 4px 14px #b91c1c14}.recrate-ai-suggestion:hover{background:linear-gradient(90deg,#22c55e26,#22c55e0d 55%,#fff0)}.recrate-ai-delete:hover{background:linear-gradient(90deg,#ef444426,#ef44440d 55%,#fff0)}.recrate-ai-deleted-entity-card{border-radius:8px;margin:18px;padding:26px 18px 18px;position:relative}.recrate-ai-deleted-entity-header{align-items:flex-start;display:flex;gap:18px;justify-content:space-between}.recrate-ai-deleted-entity-title{color:#7f1d1d;font-size:18px;font-weight:800;line-height:1.25;overflow-wrap:anywhere}.recrate-ai-deleted-entity-id{color:#991b1b;font-size:13px;font-weight:600;margin-top:4px;overflow-wrap:anywhere}.recrate-ai-deleted-entity-controls{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-top:14px}.recrate-ai-deleted-entity-controls .recrate-ai-actions{gap:8px}.recrate-ai-deleted-entity-controls .recrate-ai-actions .ant-btn{border-radius:6px;font-size:13px;height:28px;min-width:66px}.recrate-ai-deleted-entity-summary{align-items:center;color:#7f1d1d;display:inline-flex;font-size:14px;font-weight:700;gap:10px;min-width:0}.recrate-ai-deleted-entity-summary span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recrate-ai-entity-delete-details-toggle.ant-btn{background:#ffffffb8;border-color:#f8717175;color:#b91c1c;flex:0 0 auto;min-width:30px;padding:0;width:30px}.recrate-ai-entity-delete-details-toggle.ant-btn:focus-visible,.recrate-ai-entity-delete-details-toggle.ant-btn:hover,.recrate-ai-entity-delete-details-toggle.ant-btn[aria-pressed=true]{background:#ffe8e8!important;border-color:#f87171bd;color:#b91c1c!important}.recrate-ai-deleted-entity-fields{background:#f8717152;border:1px solid #f8717152;border-radius:8px;display:grid;gap:1px;grid-template-columns:minmax(120px,220px) minmax(0,1fr);margin-top:14px;overflow:hidden}.recrate-ai-deleted-entity-fields-inline{grid-template-columns:minmax(100px,170px) minmax(0,1fr);margin-top:10px}.recrate-ai-deleted-entity-field{display:contents}.recrate-ai-deleted-entity-field-name,.recrate-ai-deleted-entity-field-value{background:#ffffffb8;font-size:13px;min-width:0;overflow-wrap:anywhere;padding:8px 10px}.recrate-ai-deleted-entity-field-name{color:#7f1d1d;font-weight:800}.recrate-ai-deleted-entity-field-value{color:#450a0a}.recrate-ai-entity-diff-card{background:#f0fbf5;border:1px solid #38c88a8c;border-left:4px solid #38c88a;border-radius:8px;box-shadow:0 2px 8px #186f4a14;min-height:226px;overflow:hidden;position:relative}.recrate-ai-entity-diff-card-delete{background:#fff5f5;border-color:#dd505c7a #dd505c7a #dd505c7a #e24d5c;box-shadow:0 2px 8px #85242f14}.recrate-ai-entity-diff-card-unlink{background:#fff7ed;border-color:#f973167a #f973167a #f973167a #f97316;box-shadow:0 2px 8px #c2610014}.recrate-ai-entity-diff-head{align-items:center;background:#e4f7ed;border-bottom:1px solid #38c88a40;color:#087446;display:flex;font-size:13px;font-weight:900;gap:10px;justify-content:space-between;min-height:36px;padding:0 14px}.recrate-ai-entity-diff-card-delete .recrate-ai-entity-diff-head{background:#ffe8e8;border-bottom-color:#dd505c40;color:#9a1f29}.recrate-ai-entity-diff-card-unlink .recrate-ai-entity-diff-head{background:#ffedd5;border-bottom-color:#f9731640;color:#9a3412}.recrate-ai-entity-diff-close.ant-btn{color:currentColor;flex:0 0 auto}.recrate-ai-entity-diff-close.ant-btn:focus-visible,.recrate-ai-entity-diff-close.ant-btn:hover{background:#ffffff9e!important;color:currentColor!important}.recrate-ai-entity-diff-body{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;padding:10px 0 52px}.recrate-ai-entity-diff-line{align-items:center;border-bottom:1px solid #0000000a;display:grid;grid-template-columns:28px minmax(74px,96px) minmax(0,1fr);min-height:29px}.recrate-ai-entity-diff-line-context{background:#f7faf8}.recrate-ai-entity-diff-line-removed{background:#fff1f1}.recrate-ai-entity-diff-line-added{background:#effbf5}.recrate-ai-entity-diff-marker{align-self:stretch;display:grid;font-weight:900;place-items:center}.recrate-ai-entity-diff-line-context .recrate-ai-entity-diff-marker{background:#eef2f0;color:#738078}.recrate-ai-entity-diff-line-removed .recrate-ai-entity-diff-marker{background:#ffdede;color:#9a1f29}.recrate-ai-entity-diff-line-added .recrate-ai-entity-diff-marker{background:#d8f5e7;color:#087446}.recrate-ai-entity-diff-key{color:#5b7167;padding:0 8px}.recrate-ai-entity-diff-key,.recrate-ai-entity-diff-value{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recrate-ai-entity-diff-value{color:#1e2732;padding-right:10px}.recrate-ai-entity-diff-actions{bottom:14px;display:flex;gap:7px;position:absolute;right:14px}.recrate-ai-entity-diff-button.ant-btn{background:#57d8a3;border:0;border-radius:6px;box-shadow:0 1px 2px #00000024;color:#0d2d23;font-size:13px;font-weight:900;height:31px;min-width:100px;padding:0 10px}.recrate-ai-entity-diff-button.ant-btn:focus-visible,.recrate-ai-entity-diff-button.ant-btn:hover{background:#45c991!important;color:#0d2d23!important}.recrate-ai-entity-diff-button-reject.ant-btn{background:#ff6a71;color:#171717}.recrate-ai-entity-diff-button-reject.ant-btn:focus-visible,.recrate-ai-entity-diff-button-reject.ant-btn:hover{background:#f0444f!important;color:#171717!important}.recrate-ai-suggestion-badge{align-items:center;background:#ecfdf5;border:1px solid #10b98161;border-radius:7px;box-shadow:0 1px 2px #0f764a14;color:#047857;display:inline-flex;font-size:13px;font-weight:700;gap:6px;height:30px;left:18px;line-height:1;padding:0 11px;position:absolute;top:-15px;z-index:1}.recrate-ai-delete .recrate-ai-suggestion-badge{background:#fef2f2;border-color:#f871716b;box-shadow:0 1px 2px #b91c1c14;color:#b91c1c}.recrate-ai-suggestion-badge-icon{color:#047857;font-size:14px;line-height:1}.recrate-ai-delete .recrate-ai-suggestion-badge-icon{color:#b91c1c}.recrate-ai-entity-status-badge{left:14px;top:-15px}.recrate-ai-entity-delete-card .recrate-ai-entity-status-badge{background:#fef2f2;border-color:#f871716b;box-shadow:0 1px 2px #b91c1c14;color:#b91c1c}.recrate-ai-entity-delete-card .recrate-ai-entity-status-badge .recrate-ai-suggestion-badge-icon{color:#b91c1c}.recrate-ai-entity-unlink-card .recrate-ai-entity-status-badge{background:#fff7ed;border-color:#fb923c73;box-shadow:0 1px 2px #c2610014;color:#9a3412}.recrate-ai-entity-unlink-card .recrate-ai-entity-status-badge .recrate-ai-suggestion-badge-icon{color:#c2410c}.recrate-ai-field-row{align-items:flex-start}.recrate-ai-type-field-row{flex-wrap:wrap}.recrate-ai-type-field-row .recrate-ai-field-control{flex:1 1 250px}.recrate-ai-field-control .ant-space-compact{width:100%}.recrate-ai-field-control .ant-input,.recrate-ai-field-control .ant-input-affix-wrapper,.recrate-ai-field-control .ant-input-number,.recrate-ai-field-control .ant-picker,.recrate-ai-field-control .ant-select-selector,.recrate-ai-field-control textarea.ant-input{background:#f0fdf4!important;border-color:#22c55e!important;box-shadow:inset 0 0 0 1px #22c55e2e,0 0 0 3px #22c55e1a!important}.recrate-ai-delete .recrate-ai-field-control .ant-input,.recrate-ai-delete .recrate-ai-field-control .ant-input-affix-wrapper,.recrate-ai-delete .recrate-ai-field-control .ant-input-number,.recrate-ai-delete .recrate-ai-field-control .ant-picker,.recrate-ai-delete .recrate-ai-field-control .ant-select-selector,.recrate-ai-delete .recrate-ai-field-control textarea.ant-input{background:#fef2f2!important;border-color:#ef4444!important;box-shadow:inset 0 0 0 1px #ef44442e,0 0 0 3px #ef44441a!important}.recrate-ai-field-control .ant-space-compact>.ant-input,.recrate-ai-field-control .ant-space-compact>.ant-input-affix-wrapper,.recrate-ai-field-control .ant-space-compact>textarea.ant-input{border-end-end-radius:8px!important;border-start-end-radius:8px!important}.recrate-ai-field-control .ant-space-compact>.ant-btn{display:none}.recrate-context-review-drawer .ant-drawer-content{overflow:hidden}.recrate-context-review-drawer .ant-drawer-body{display:flex;flex-direction:column;min-height:0}.recrate-context-review{display:flex;flex:1 1 auto;flex-direction:column;gap:14px;min-height:0;overflow:hidden;padding:18px 20px 0}.recrate-context-review-summary{align-items:flex-start;background:linear-gradient(90deg,#f0fbf5,#f8fbfd);border:1px solid #38c88a4d;border-radius:8px;box-shadow:inset 4px 0 0 #38c88a,0 2px 8px #186f4a14;display:flex;gap:12px;padding:12px 14px}.recrate-context-review-spark{background:#57d8a3;border-radius:999px;box-shadow:0 1px 2px #0f172a2e;color:#063f2a;display:grid;flex:0 0 auto;font-size:12px;font-weight:900;height:32px;line-height:1;place-items:center;width:32px}.recrate-context-review-description.ant-typography{color:#2d3b35;font-size:14px;font-weight:650;line-height:1.45;margin:0;min-width:0}.recrate-ai-context-diff{background:#f0fbf5;border:1px solid #38c88a8c;border-left:4px solid #38c88a;border-radius:8px;box-shadow:0 2px 8px #186f4a14;display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:hidden}.recrate-ai-context-diff-head{align-items:center;background:#e4f7ed;border-bottom:1px solid #38c88a40;color:#087446;display:flex;font-size:13px;font-weight:900;gap:10px;justify-content:space-between;min-height:38px;padding:0 14px}.recrate-ai-context-diff-body{background:#fff;flex:1 1 auto;min-height:0;overflow:auto}.recrate-ai-context-diff-line{align-items:stretch;border-bottom:1px solid #0000000f;display:grid;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;grid-template-columns:32px 48px 48px minmax(0,1fr);line-height:1.45;min-width:0}.recrate-ai-context-diff-line:last-child{border-bottom:0}.recrate-ai-context-diff-marker{align-self:stretch;display:grid;font-size:16px;font-weight:900;place-items:center}.recrate-ai-context-diff-gutter{align-items:flex-start;background:#ffffff8a;border-right:1px solid #0000000d;color:#7b8781;display:flex;justify-content:flex-end;min-width:0;padding:7px 8px 7px 0;-webkit-user-select:none;user-select:none}.recrate-ai-context-diff-value{color:#1e2732;margin:0;min-width:0;overflow:visible;overflow-wrap:anywhere;padding:7px 12px;white-space:pre-wrap;word-break:break-word}.recrate-ai-context-diff-line-context{background:#fbfcfd}.recrate-ai-context-diff-line-removed{background:#fff1f1}.recrate-ai-context-diff-line-removed .recrate-ai-context-diff-marker{background:#ffdede;color:#9a1f29}.recrate-ai-context-diff-line-added{background:#effbf5}.recrate-ai-context-diff-line-added .recrate-ai-context-diff-marker{background:#d8f5e7;color:#087446}.recrate-ai-context-diff-line-omitted{background:#f7faf8;border:0;border-bottom:1px solid #0000000f;min-height:30px;text-align:left;width:100%}.recrate-ai-context-diff-line-omitted .recrate-ai-context-diff-marker{background:#eef2f0;color:#738078;font-size:12px}.recrate-ai-context-diff-line-omitted .recrate-ai-context-diff-gutter{background:#f7faf8}.recrate-ai-context-diff-omitted-button{cursor:pointer;outline:none}.recrate-ai-context-diff-omitted-button:hover{background:#eef8f2}.recrate-ai-context-diff-omitted-button:hover .recrate-ai-context-diff-gutter,.recrate-ai-context-diff-omitted-button:hover .recrate-ai-context-diff-marker{background:#e1f2e8}.recrate-ai-context-diff-omitted-button:focus-visible{box-shadow:inset 0 0 0 2px #12a76c8c}.recrate-ai-context-diff-omitted-label{align-items:center;color:#5b7167;display:flex;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;font-weight:800;min-width:0;padding:6px 12px}.recrate-context-review-actions{background:#fff;border-top:1px solid #dce5e0;box-shadow:0 -6px 14px #0f172a0d;display:flex;flex:0 0 auto;gap:8px;justify-content:flex-end;padding:14px 20px 18px}.recrate-ai-field-diff{background:#fbfcfd;border:1px solid #d4ddd8;border-radius:7px;box-shadow:0 1px 2px #0000000d;font-size:15px;overflow:hidden;width:100%}.recrate-ai-field-diff-head{align-items:center;background:#f5f8f6;border-bottom:1px solid #dce5e0;color:#506158;display:flex;font-size:13px;font-weight:800;gap:10px;justify-content:space-between;min-height:31px;padding:0 10px}.recrate-ai-field-diff-chip{color:#087446;flex:0 0 auto;font-size:12px}.recrate-ai-field-diff-line{border-bottom:1px solid #0000000a;display:grid;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;grid-template-columns:28px minmax(0,1fr);min-height:36px}.recrate-ai-field-diff-line:last-child{border-bottom:0}.recrate-ai-field-diff-marker{align-self:stretch;display:grid;font-weight:900;place-items:center}.recrate-ai-field-diff-value{color:#27322d;margin:0;min-width:0;overflow:auto;overflow-wrap:anywhere;padding:7px 11px;white-space:pre-wrap}.recrate-ai-field-diff-line-removed{background:#fff1f1}.recrate-ai-field-diff-line-removed .recrate-ai-field-diff-marker{background:#ffdede;color:#9a1f29}.recrate-ai-field-diff-line-added{background:#effbf5}.recrate-ai-field-diff-line-added .recrate-ai-field-diff-marker{background:#d8f5e7;color:#087446}.recrate-ai-field-diff-empty{color:#7b8781;font-style:italic}.recrate-ai-actions{align-items:flex-start;display:flex;flex:0 0 auto;gap:18px}.recrate-ai-type-actions{flex:1 1 260px;flex-wrap:wrap;justify-content:flex-end;max-width:100%;min-width:0}.recrate-ai-actions .ant-btn{border:0;border-radius:8px;box-shadow:0 2px 5px #0f172a2e;color:#111827;font-size:14px;font-weight:700;height:34px;min-width:82px}.recrate-ai-action-diff.ant-btn{background:#fff;border:1px solid #d4ddd8;color:#0f172a;min-width:36px;padding:0;width:36px}.recrate-ai-action-diff.ant-btn:focus-visible,.recrate-ai-action-diff.ant-btn:hover{background:#f5f8f6!important;border-color:#9bc7b3!important;color:#087446!important}.recrate-ai-action-diff.ant-btn[aria-pressed=true]{background:#d8f5e7;border-color:#9bc7b3;color:#087446}.recrate-ai-action-approve.ant-btn{background:#57d8a3;border-color:#57d8a3}.recrate-ai-action-approve.ant-btn:focus-visible,.recrate-ai-action-approve.ant-btn:hover{background:#45c991!important;border-color:#45c991!important;color:#111827!important}.recrate-ai-action-reject.ant-btn,.recrate-ai-delete .recrate-ai-action-approve.ant-btn{background:#ff5b63;border-color:#ff5b63}.recrate-ai-delete .recrate-ai-action-approve.ant-btn:focus-visible,.recrate-ai-delete .recrate-ai-action-approve.ant-btn:hover{background:#f0444f!important;border-color:#f0444f!important;color:#111827!important}.recrate-ai-delete .recrate-ai-action-reject.ant-btn{background:#57d8a3;border-color:#57d8a3}.recrate-ai-delete .recrate-ai-action-reject.ant-btn:focus-visible,.recrate-ai-delete .recrate-ai-action-reject.ant-btn:hover{background:#45c991!important;border-color:#45c991!important;color:#111827!important}.recrate-ai-action-reject.ant-btn:focus-visible,.recrate-ai-action-reject.ant-btn:hover{background:#f0444f!important;border-color:#f0444f!important;color:#111827!important}@media (max-width:900px){.recrate-ai-confirm-bar{grid-template-columns:1fr}.recrate-ai-confirm-controls{flex-wrap:wrap}.recrate-ai-stepper{border-left:0;margin-left:0;padding-left:0}.recrate-ai-field-row{flex-wrap:wrap}.recrate-ai-actions{justify-content:flex-start;width:100%}}@media (max-width:640px){.recrate-quick-settings-header{flex-wrap:wrap}.recrate-quick-settings-filter{flex-basis:100%;max-width:none}}.recrate,.recrate .recrate-ant{display:flex;flex-direction:column;height:100vh;min-height:100vh}.recrate .ant-tabs-left .ant-tabs-nav,.recrate .ant-tabs-right .ant-tabs-nav,.recrate-editor-scroll{height:100%}.recrate .ant-tabs-bottom .ant-tabs-nav-wrap,.recrate .ant-tabs-top .ant-tabs-nav-wrap{overflow-x:auto}
|
|
2
|
-
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer theme, base, components, utilities;@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(88.5% 0.062 18.334);--color-red-500:oklch(63.7% 0.237 25.331);--color-red-600:oklch(57.7% 0.245 27.325);--color-red-700:oklch(50.5% 0.213 27.518);--color-green-100:oklch(96.2% 0.044 156.743);--color-green-200:oklch(92.5% 0.084 155.995);--color-green-600:oklch(62.7% 0.194 149.214);--color-cyan-200:oklch(91.7% 0.08 205.041);--color-sky-100:oklch(95.1% 0.026 236.824);--color-sky-500:oklch(68.5% 0.169 237.323);--color-blue-200:oklch(88.2% 0.059 254.128);--color-blue-300:oklch(80.9% 0.105 251.813);--color-blue-500:oklch(62.3% 0.214 259.815);--color-blue-600:oklch(54.6% 0.245 262.881);--color-blue-700:oklch(48.8% 0.243 264.376);--color-indigo-200:oklch(87% 0.065 274.039);--color-purple-200:oklch(90.2% 0.063 306.703);--color-slate-200:oklch(92.9% 0.013 255.508);--color-slate-300:oklch(86.9% 0.022 252.894);--color-slate-700:oklch(37.2% 0.044 257.287);--color-gray-50:oklch(98.5% 0.002 247.839);--color-gray-200:oklch(92.8% 0.006 264.531);--color-gray-300:oklch(87.2% 0.01 258.338);--color-gray-400:oklch(70.7% 0.022 261.325);--color-gray-600:oklch(44.6% 0.03 256.802);--color-gray-700:oklch(37.3% 0.034 259.733);--color-gray-800:oklch(27.8% 0.033 256.848);--color-black:#000;--color-white:#fff;--spacing:0.25rem;--text-xs:0.75rem;--text-xs--line-height:1.33333;--text-sm:0.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--font-weight-light:300;--font-weight-bold:700;--radius-lg:0.5rem;--animate-pulse:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite;--default-transition-duration:150ms;--default-transition-timing-function:cubic-bezier(0.4,0,0.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:initial}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}::file-selector-button,button,input,optgroup,select,textarea{background-color:initial;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::placeholder{color:currentcolor;@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,currentcolor 50%,#0000)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:0}.right-0{right:0}.right-2{right:calc(var(--spacing)*2)}.bottom-0{bottom:0}.bottom-2{bottom:calc(var(--spacing)*2)}.left-0{left:0}.isolate{isolation:isolate}.z-50{z-index:50}.float-right{float:right}.container{width:100%;@media (width >= 40rem){max-width:40rem}@media (width >= 48rem){max-width:48rem}@media (width >= 64rem){max-width:64rem}@media (width >= 80rem){max-width:80rem}@media (width >= 96rem){max-width:96rem}}.m-1{margin:var(--spacing)}.m-2{margin:calc(var(--spacing)*2)}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing)*2)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.h-1{height:var(--spacing)}.h-3{height:calc(var(--spacing)*3)}.h-8{height:calc(var(--spacing)*8)}.h-\[520px\]{height:520px}.h-full{height:100%}.min-h-0{min-height:0}.w-1{width:var(--spacing)}.w-1\/2{width:50%}.w-1\/3{width:33.33333%}.w-2\/3{width:66.66667%}.w-2\/6{width:33.33333%}.w-3{width:calc(var(--spacing)*3)}.w-4\/6{width:66.66667%}.w-6{width:calc(var(--spacing)*6)}.w-12{width:calc(var(--spacing)*12)}.w-\[600px\]{width:600px}.w-full{width:100%}.w-screen{width:100vw}.max-w-\[715px\]{max-width:715px}.min-w-0{min-width:0}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-72{min-width:calc(var(--spacing)*72)}.flex-1{flex:1}.flex-\[1_1_360px\]{flex:1 1 360px}.flex-grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-between{place-content:space-between}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing)*2)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*var(--tw-space-y-reverse))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*4*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*4*var(--tw-space-y-reverse))}.gap-x-1{column-gap:var(--spacing)}.gap-x-2{column-gap:calc(var(--spacing)*2)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*var(--tw-space-x-reverse))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*2*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*2*var(--tw-space-x-reverse))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}.gap-y-2{row-gap:calc(var(--spacing)*2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-bottom-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse))}:where(.divide-gray-300>:not(:last-child)){border-color:var(--color-gray-300)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-solid{--tw-border-style:solid;border-style:solid}.border-black{border-color:var(--color-black)}.border-black\/20{border-color:color-mix(in srgb,#000 20%,#0000);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-black) 20%,#0000)}}.border-gray-400{border-color:var(--color-gray-400)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-700{border-color:var(--color-slate-700)}.bg-blue-200{background-color:var(--color-blue-200)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-200{background-color:var(--color-green-200)}.bg-indigo-200{background-color:var(--color-indigo-200)}.bg-purple-200{background-color:var(--color-purple-200)}.bg-red-200{background-color:var(--color-red-200)}.bg-red-500{background-color:var(--color-red-500)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-700{background-color:var(--color-slate-700)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing)*2)}.pt-0{padding-top:0}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-1{padding-right:var(--spacing)}.pb-1{padding-bottom:var(--spacing)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-1{padding-left:var(--spacing)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-600{color:var(--color-green-600)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-50{opacity:50%}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\!filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-transform{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.duration-1000{--tw-duration:1000ms;transition-duration:1s}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:100%}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:rounded-r-none:hover{border-bottom-right-radius:0;border-top-right-radius:0}.hover\:bg-blue-300:hover{background-color:var(--color-blue-300)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-cyan-200:hover{background-color:var(--color-cyan-200)}.hover\:bg-green-200:hover{background-color:var(--color-green-200)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-sky-100:hover{background-color:var(--color-sky-100)}.hover\:text-black:hover{color:var(--color-black)}}.focus\:border-2:focus{border-style:var(--tw-border-style);border-width:2px}.focus\:border-green-600:focus{border-color:var(--color-green-600)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-sky-500:focus-visible{--tw-ring-color:var(--color-sky-500)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}@media (width >= 80rem){.xl\:w-1\/5{width:20%}.xl\:w-4\/5{width:80%}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}
|
|
2
|
+
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer theme, base, components, utilities;@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(88.5% 0.062 18.334);--color-red-500:oklch(63.7% 0.237 25.331);--color-red-600:oklch(57.7% 0.245 27.325);--color-red-700:oklch(50.5% 0.213 27.518);--color-green-100:oklch(96.2% 0.044 156.743);--color-green-200:oklch(92.5% 0.084 155.995);--color-green-600:oklch(62.7% 0.194 149.214);--color-cyan-200:oklch(91.7% 0.08 205.041);--color-sky-100:oklch(95.1% 0.026 236.824);--color-sky-500:oklch(68.5% 0.169 237.323);--color-blue-200:oklch(88.2% 0.059 254.128);--color-blue-300:oklch(80.9% 0.105 251.813);--color-blue-500:oklch(62.3% 0.214 259.815);--color-blue-600:oklch(54.6% 0.245 262.881);--color-blue-700:oklch(48.8% 0.243 264.376);--color-indigo-200:oklch(87% 0.065 274.039);--color-purple-200:oklch(90.2% 0.063 306.703);--color-slate-200:oklch(92.9% 0.013 255.508);--color-slate-300:oklch(86.9% 0.022 252.894);--color-slate-700:oklch(37.2% 0.044 257.287);--color-gray-50:oklch(98.5% 0.002 247.839);--color-gray-200:oklch(92.8% 0.006 264.531);--color-gray-300:oklch(87.2% 0.01 258.338);--color-gray-400:oklch(70.7% 0.022 261.325);--color-gray-600:oklch(44.6% 0.03 256.802);--color-gray-700:oklch(37.3% 0.034 259.733);--color-gray-800:oklch(27.8% 0.033 256.848);--color-black:#000;--color-white:#fff;--spacing:0.25rem;--text-xs:0.75rem;--text-xs--line-height:1.33333;--text-sm:0.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--font-weight-light:300;--font-weight-bold:700;--radius-lg:0.5rem;--animate-pulse:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite;--default-transition-duration:150ms;--default-transition-timing-function:cubic-bezier(0.4,0,0.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:initial}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}::file-selector-button,button,input,optgroup,select,textarea{background-color:initial;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::placeholder{color:currentcolor;@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,currentcolor 50%,#0000)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:0}.right-0{right:0}.right-2{right:calc(var(--spacing)*2)}.bottom-0{bottom:0}.bottom-2{bottom:calc(var(--spacing)*2)}.left-0{left:0}.isolate{isolation:isolate}.z-50{z-index:50}.float-right{float:right}.container{width:100%;@media (width >= 40rem){max-width:40rem}@media (width >= 48rem){max-width:48rem}@media (width >= 64rem){max-width:64rem}@media (width >= 80rem){max-width:80rem}@media (width >= 96rem){max-width:96rem}}.m-1{margin:var(--spacing)}.m-2{margin:calc(var(--spacing)*2)}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing)*2)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.h-1{height:var(--spacing)}.h-3{height:calc(var(--spacing)*3)}.h-8{height:calc(var(--spacing)*8)}.h-\[520px\]{height:520px}.h-full{height:100%}.min-h-0{min-height:0}.w-1{width:var(--spacing)}.w-1\/2{width:50%}.w-1\/3{width:33.33333%}.w-2\/3{width:66.66667%}.w-2\/6{width:33.33333%}.w-3{width:calc(var(--spacing)*3)}.w-4\/6{width:66.66667%}.w-6{width:calc(var(--spacing)*6)}.w-12{width:calc(var(--spacing)*12)}.w-\[600px\]{width:600px}.w-full{width:100%}.w-screen{width:100vw}.max-w-\[715px\]{max-width:715px}.min-w-0{min-width:0}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-72{min-width:calc(var(--spacing)*72)}.flex-1{flex:1}.flex-\[1_1_360px\]{flex:1 1 360px}.flex-grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-between{place-content:space-between}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing)*2)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*var(--tw-space-y-reverse))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*4*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*4*var(--tw-space-y-reverse))}.gap-x-1{column-gap:var(--spacing)}.gap-x-2{column-gap:calc(var(--spacing)*2)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*var(--tw-space-x-reverse))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*2*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*2*var(--tw-space-x-reverse))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}.gap-y-2{row-gap:calc(var(--spacing)*2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-bottom-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse))}:where(.divide-gray-300>:not(:last-child)){border-color:var(--color-gray-300)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-solid{--tw-border-style:solid;border-style:solid}.border-black{border-color:var(--color-black)}.border-black\/20{border-color:color-mix(in srgb,#000 20%,#0000);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-black) 20%,#0000)}}.border-gray-400{border-color:var(--color-gray-400)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-700{border-color:var(--color-slate-700)}.bg-blue-200{background-color:var(--color-blue-200)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-200{background-color:var(--color-green-200)}.bg-indigo-200{background-color:var(--color-indigo-200)}.bg-purple-200{background-color:var(--color-purple-200)}.bg-red-200{background-color:var(--color-red-200)}.bg-red-500{background-color:var(--color-red-500)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-700{background-color:var(--color-slate-700)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing)*2)}.pt-0{padding-top:0}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-1{padding-right:var(--spacing)}.pb-1{padding-bottom:var(--spacing)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-1{padding-left:var(--spacing)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-600{color:var(--color-green-600)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-50{opacity:50%}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\!filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-transform{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.duration-1000{--tw-duration:1000ms;transition-duration:1s}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:100%}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:rounded-r-none:hover{border-bottom-right-radius:0;border-top-right-radius:0}.hover\:bg-blue-300:hover{background-color:var(--color-blue-300)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-cyan-200:hover{background-color:var(--color-cyan-200)}.hover\:bg-green-200:hover{background-color:var(--color-green-200)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-sky-100:hover{background-color:var(--color-sky-100)}.hover\:text-black:hover{color:var(--color-black)}}.focus\:border-2:focus{border-style:var(--tw-border-style);border-width:2px}.focus\:border-green-600:focus{border-color:var(--color-green-600)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-sky-500:focus-visible{--tw-ring-color:var(--color-sky-500)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}@media (width >= 80rem){.xl\:w-1\/5{width:20%}.xl\:w-4\/5{width:80%}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}
|
|
3
3
|
.recrate{all:revert-layer}
|
package/dist/recrate.es.js
CHANGED
|
@@ -66720,7 +66720,7 @@ const Text$2 = ({
|
|
|
66720
66720
|
onSaveProperty
|
|
66721
66721
|
}) => {
|
|
66722
66722
|
const { t: t2 } = useTranslation();
|
|
66723
|
-
const [
|
|
66723
|
+
const [displayValue2, setDisplayValue] = useState(decodeValue(value));
|
|
66724
66724
|
const [isValidTextValue, setIsValidTextValue] = useState(true);
|
|
66725
66725
|
const textareaRef = useRef(null);
|
|
66726
66726
|
const saveButtonRef = useRef(null);
|
|
@@ -66729,7 +66729,7 @@ const Text$2 = ({
|
|
|
66729
66729
|
validateTextConstraints(decodeValue(value));
|
|
66730
66730
|
}, [value]);
|
|
66731
66731
|
useEffect(() => {
|
|
66732
|
-
validateTextConstraints(
|
|
66732
|
+
validateTextConstraints(displayValue2);
|
|
66733
66733
|
}, []);
|
|
66734
66734
|
const constraints = {
|
|
66735
66735
|
minLength: definition == null ? void 0 : definition.minLength,
|
|
@@ -66738,7 +66738,7 @@ const Text$2 = ({
|
|
|
66738
66738
|
dateFormat: definition == null ? void 0 : definition.dateFormat
|
|
66739
66739
|
};
|
|
66740
66740
|
function validateTextConstraints(valueToCheck) {
|
|
66741
|
-
const valueToValidate = valueToCheck ??
|
|
66741
|
+
const valueToValidate = valueToCheck ?? displayValue2 ?? "";
|
|
66742
66742
|
if (constraints.minLength !== void 0 && constraints.minLength > valueToValidate.length) {
|
|
66743
66743
|
setIsValidTextValue(false);
|
|
66744
66744
|
} else if (constraints.maxLength !== void 0 && constraints.maxLength < valueToValidate.length) {
|
|
@@ -66762,7 +66762,7 @@ const Text$2 = ({
|
|
|
66762
66762
|
if (isValidTextValue) {
|
|
66763
66763
|
onSaveProperty({
|
|
66764
66764
|
property,
|
|
66765
|
-
value:
|
|
66765
|
+
value: displayValue2.trim()
|
|
66766
66766
|
});
|
|
66767
66767
|
}
|
|
66768
66768
|
}
|
|
@@ -66809,7 +66809,7 @@ const Text$2 = ({
|
|
|
66809
66809
|
{
|
|
66810
66810
|
size: "middle",
|
|
66811
66811
|
type: type4,
|
|
66812
|
-
value:
|
|
66812
|
+
value: displayValue2,
|
|
66813
66813
|
onChange: handleTextChange,
|
|
66814
66814
|
onBlur: handleBlur,
|
|
66815
66815
|
onKeyDown: (e3) => {
|
|
@@ -66822,7 +66822,7 @@ const Text$2 = ({
|
|
|
66822
66822
|
Input2.TextArea,
|
|
66823
66823
|
{
|
|
66824
66824
|
ref: textareaRef,
|
|
66825
|
-
value:
|
|
66825
|
+
value: displayValue2,
|
|
66826
66826
|
onChange: handleTextareaChange,
|
|
66827
66827
|
onBlur: handleBlur,
|
|
66828
66828
|
onKeyDown: (e3) => {
|
|
@@ -93874,6 +93874,10 @@ class Lookup {
|
|
|
93874
93874
|
documents
|
|
93875
93875
|
};
|
|
93876
93876
|
}
|
|
93877
|
+
async globalEntities(type4, queryString) {
|
|
93878
|
+
const results = await this.lookup.globalEntities({ type: type4, queryString });
|
|
93879
|
+
return { endpoint: "global", documents: stringifyDocumentType(results.documents) };
|
|
93880
|
+
}
|
|
93877
93881
|
async dataPacks(type4, queryString) {
|
|
93878
93882
|
var _a2, _b;
|
|
93879
93883
|
if (!queryString) return { endpoint: "datapacks", documents: [] };
|
|
@@ -93993,6 +93997,97 @@ function stringifyDocumentType(documents) {
|
|
|
93993
93997
|
"@type": lodashExports.isArray(d2["@type"]) ? d2["@type"].join(", ") : d2["@type"]
|
|
93994
93998
|
}));
|
|
93995
93999
|
}
|
|
94000
|
+
const entityTypes = (entity) => (Array.isArray(entity["@type"]) ? entity["@type"] : [entity["@type"]]).filter((type4) => typeof type4 === "string");
|
|
94001
|
+
const entityName = (entity) => (Array.isArray(entity.name) ? entity.name.join(" ") : String(entity.name ?? "")).normalize("NFKC").trim().replace(/\s+/g, " ").toLocaleLowerCase();
|
|
94002
|
+
const literalValue = (value) => {
|
|
94003
|
+
if (Array.isArray(value)) {
|
|
94004
|
+
const values = value.map(literalValue).filter((item) => item !== void 0);
|
|
94005
|
+
return values.length ? values : void 0;
|
|
94006
|
+
}
|
|
94007
|
+
if (value && typeof value === "object") {
|
|
94008
|
+
if (typeof value["@id"] === "string") return void 0;
|
|
94009
|
+
const entries = Object.keys(value).sort().flatMap((key) => {
|
|
94010
|
+
const child = literalValue(value[key]);
|
|
94011
|
+
return child === void 0 ? [] : [[key, child]];
|
|
94012
|
+
});
|
|
94013
|
+
return entries.length ? Object.fromEntries(entries) : void 0;
|
|
94014
|
+
}
|
|
94015
|
+
return value;
|
|
94016
|
+
};
|
|
94017
|
+
const globalEntityValues = (entity) => {
|
|
94018
|
+
const values = {};
|
|
94019
|
+
for (const key of Object.keys(entity).sort()) {
|
|
94020
|
+
if (["@id", "@type", "@reverse", "type", "globalRecordId"].includes(key)) continue;
|
|
94021
|
+
const value = literalValue(entity[key]);
|
|
94022
|
+
if (value !== void 0) values[key] = value;
|
|
94023
|
+
}
|
|
94024
|
+
return values;
|
|
94025
|
+
};
|
|
94026
|
+
const comparableValues = (entity) => Object.fromEntries(
|
|
94027
|
+
Object.entries(globalEntityValues(entity)).map(([key, value]) => [
|
|
94028
|
+
key,
|
|
94029
|
+
key === "name" && Array.isArray(value) ? value.join(" ") : Array.isArray(value) && value.length === 1 ? value[0] : value
|
|
94030
|
+
])
|
|
94031
|
+
);
|
|
94032
|
+
const globalEntityValuesMatch = (local, global2) => JSON.stringify(comparableValues(local)) === JSON.stringify(comparableValues(global2));
|
|
94033
|
+
const findGlobalEntityMatches = (crateManager, global2) => {
|
|
94034
|
+
const types2 = entityTypes(global2);
|
|
94035
|
+
const name2 = entityName(global2);
|
|
94036
|
+
return Object.keys((crateManager == null ? void 0 : crateManager.entityIdIndex) ?? {}).flatMap((id2) => {
|
|
94037
|
+
const local = crateManager.getEntity({ id: id2, link: false, materialise: false });
|
|
94038
|
+
if (!local || !entityTypes(local).some((type4) => types2.includes(type4))) return [];
|
|
94039
|
+
if (id2 === global2["@id"] || name2 && entityName(local) === name2 || Object.keys(globalEntityValues(global2)).length > 0 && globalEntityValuesMatch(local, global2)) {
|
|
94040
|
+
return [local];
|
|
94041
|
+
}
|
|
94042
|
+
return [];
|
|
94043
|
+
});
|
|
94044
|
+
};
|
|
94045
|
+
const displayValue = (value) => {
|
|
94046
|
+
if (Array.isArray(value) && value.length === 1) value = value[0];
|
|
94047
|
+
return value === void 0 ? "—" : typeof value === "string" ? value : JSON.stringify(value);
|
|
94048
|
+
};
|
|
94049
|
+
const GlobalEntityConflictDialog = ({ global: global2, matches: matches2, onChoose, onCancel }) => {
|
|
94050
|
+
const { t: t2 } = useTranslation();
|
|
94051
|
+
const globalValues = globalEntityValues(global2);
|
|
94052
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
94053
|
+
Modal,
|
|
94054
|
+
{
|
|
94055
|
+
open: true,
|
|
94056
|
+
title: t2("global_entity_conflict_title"),
|
|
94057
|
+
onCancel,
|
|
94058
|
+
footer: /* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { onClick: onCancel, children: t2("global_entity_conflict_cancel") }),
|
|
94059
|
+
width: 760,
|
|
94060
|
+
children: [
|
|
94061
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: t2("global_entity_conflict_description") }),
|
|
94062
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: t2("global_entity_conflict_preserve_links") }),
|
|
94063
|
+
matches2.map((local) => {
|
|
94064
|
+
const localValues = globalEntityValues(local);
|
|
94065
|
+
const properties = [.../* @__PURE__ */ new Set([...Object.keys(localValues), ...Object.keys(globalValues)])].sort();
|
|
94066
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { marginTop: 20 }, children: [
|
|
94067
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: local.name }),
|
|
94068
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { overflowWrap: "anywhere", marginBottom: 8 }, children: local["@id"] }),
|
|
94069
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("table", { style: { width: "100%", tableLayout: "fixed", borderCollapse: "collapse" }, children: [
|
|
94070
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("thead", { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { children: [
|
|
94071
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { scope: "col", children: t2("global_entity_conflict_property") }),
|
|
94072
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { scope: "col", children: t2("global_entity_conflict_crate_values") }),
|
|
94073
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { scope: "col", children: t2("global_entity_conflict_global_values") })
|
|
94074
|
+
] }) }),
|
|
94075
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("tbody", { children: properties.map((property) => /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { children: [
|
|
94076
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { scope: "row", style: { textAlign: "left", padding: 6, overflowWrap: "anywhere" }, children: property }),
|
|
94077
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { style: { padding: 6, overflowWrap: "anywhere" }, children: displayValue(localValues[property]) }),
|
|
94078
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { style: { padding: 6, overflowWrap: "anywhere" }, children: displayValue(globalValues[property]) })
|
|
94079
|
+
] }, property)) })
|
|
94080
|
+
] }),
|
|
94081
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: 8, marginTop: 12 }, children: [
|
|
94082
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { type: "primary", onClick: () => onChoose(local, false), children: t2("global_entity_conflict_keep_crate") }),
|
|
94083
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Button$1, { onClick: () => onChoose(local, true), children: t2("global_entity_conflict_use_global") })
|
|
94084
|
+
] })
|
|
94085
|
+
] }, local["@id"]);
|
|
94086
|
+
})
|
|
94087
|
+
]
|
|
94088
|
+
}
|
|
94089
|
+
);
|
|
94090
|
+
};
|
|
93996
94091
|
const newEntityFromName = (type4, name2) => ({
|
|
93997
94092
|
type: "new",
|
|
93998
94093
|
"@id": name2,
|
|
@@ -94001,15 +94096,17 @@ const newEntityFromName = (type4, name2) => ({
|
|
|
94001
94096
|
});
|
|
94002
94097
|
const AutoComplete = ({ type: type4, onLinkEntity, onCreateEntity }) => {
|
|
94003
94098
|
const { t: t2 } = useTranslation();
|
|
94099
|
+
const { modal } = App.useApp();
|
|
94004
94100
|
const crateManager = useContext(CrateManagerContext);
|
|
94005
94101
|
const lookupHandler = useContext(LookupsContext);
|
|
94006
|
-
useStateStore();
|
|
94007
94102
|
const [loading, setLoading] = useState(false);
|
|
94008
94103
|
const [selection2, setSelection] = useState(null);
|
|
94009
94104
|
const [matches2, setMatches] = useState([]);
|
|
94105
|
+
const [conflict, setConflict] = useState(null);
|
|
94010
94106
|
const inputValue = useRef("");
|
|
94107
|
+
const searchVersion = useRef(0);
|
|
94011
94108
|
const promiseTimeout = 2500;
|
|
94012
|
-
const querySearch = async (queryString) => {
|
|
94109
|
+
const querySearch = async (queryString, version2 = ++searchVersion.current) => {
|
|
94013
94110
|
var _a2;
|
|
94014
94111
|
setLoading(true);
|
|
94015
94112
|
const lookup = new Lookup({
|
|
@@ -94022,6 +94119,15 @@ const AutoComplete = ({ type: type4, onLinkEntity, onCreateEntity }) => {
|
|
|
94022
94119
|
if (crateManager == null ? void 0 : crateManager.getEntities) {
|
|
94023
94120
|
lookups.push(wrapPromise(lookup.getEntities(type4, queryString), promiseTimeout));
|
|
94024
94121
|
}
|
|
94122
|
+
if (lookupHandler == null ? void 0 : lookupHandler.globalEntities) {
|
|
94123
|
+
lookups.push(wrapPromise(
|
|
94124
|
+
lookup.globalEntities(type4, queryString).catch((error2) => {
|
|
94125
|
+
console.error("Global entity lookup failed:", error2);
|
|
94126
|
+
return { endpoint: "global", documents: [] };
|
|
94127
|
+
}),
|
|
94128
|
+
promiseTimeout
|
|
94129
|
+
));
|
|
94130
|
+
}
|
|
94025
94131
|
if (lookupHandler == null ? void 0 : lookupHandler.dataPacks) {
|
|
94026
94132
|
lookups.push(
|
|
94027
94133
|
wrapPromise(lookup.dataPacks(type4, queryString), promiseTimeout, {
|
|
@@ -94052,59 +94158,122 @@ const AutoComplete = ({ type: type4, onLinkEntity, onCreateEntity }) => {
|
|
|
94052
94158
|
}
|
|
94053
94159
|
const responses = await Promise.all(lookups);
|
|
94054
94160
|
const newMatches = [];
|
|
94161
|
+
const seenEntityIds = /* @__PURE__ */ new Set();
|
|
94162
|
+
const globalEntityIds = new Set(
|
|
94163
|
+
responses.filter((response) => response.endpoint === "global").flatMap((response) => response.documents ?? []).map((entity) => entity["@id"]).filter((id2) => id2 != null).map(String)
|
|
94164
|
+
);
|
|
94165
|
+
const uniqueEntities = (entities, source, limit) => {
|
|
94166
|
+
const unique = [];
|
|
94167
|
+
for (const entity of entities) {
|
|
94168
|
+
const id2 = entity["@id"] == null ? null : String(entity["@id"]);
|
|
94169
|
+
if (source === "internal" && id2 && globalEntityIds.has(id2)) continue;
|
|
94170
|
+
if (id2 && seenEntityIds.has(id2)) continue;
|
|
94171
|
+
if (id2) seenEntityIds.add(id2);
|
|
94172
|
+
unique.push({ ...entity, type: source });
|
|
94173
|
+
if (limit && unique.length === limit) break;
|
|
94174
|
+
}
|
|
94175
|
+
return unique;
|
|
94176
|
+
};
|
|
94177
|
+
const addMatchGroup = (label, entities) => {
|
|
94178
|
+
if (entities.length) newMatches.push({ label, entities });
|
|
94179
|
+
};
|
|
94055
94180
|
responses.forEach((response) => {
|
|
94056
|
-
var _a3, _b, _c, _d, _e2;
|
|
94181
|
+
var _a3, _b, _c, _d, _e2, _f;
|
|
94057
94182
|
if (response.endpoint === "internal" && ((_a3 = response.documents) == null ? void 0 : _a3.length)) {
|
|
94058
|
-
|
|
94059
|
-
|
|
94060
|
-
|
|
94061
|
-
|
|
94062
|
-
} else if (response.endpoint === "
|
|
94063
|
-
|
|
94064
|
-
|
|
94065
|
-
|
|
94066
|
-
|
|
94067
|
-
|
|
94068
|
-
|
|
94069
|
-
|
|
94070
|
-
|
|
94071
|
-
|
|
94072
|
-
|
|
94073
|
-
|
|
94074
|
-
|
|
94075
|
-
|
|
94076
|
-
|
|
94077
|
-
|
|
94078
|
-
|
|
94079
|
-
|
|
94080
|
-
|
|
94081
|
-
|
|
94082
|
-
|
|
94083
|
-
|
|
94084
|
-
|
|
94183
|
+
addMatchGroup(
|
|
94184
|
+
t2("associate_existing_entity"),
|
|
94185
|
+
uniqueEntities(response.documents, "internal", 5)
|
|
94186
|
+
);
|
|
94187
|
+
} else if (response.endpoint === "global" && ((_b = response.documents) == null ? void 0 : _b.length)) {
|
|
94188
|
+
addMatchGroup(
|
|
94189
|
+
t2("associate_global_entity"),
|
|
94190
|
+
uniqueEntities(response.documents, "global")
|
|
94191
|
+
);
|
|
94192
|
+
} else if (response.endpoint === "templates" && ((_c = response.documents) == null ? void 0 : _c.length)) {
|
|
94193
|
+
addMatchGroup(
|
|
94194
|
+
t2("associate_entity_from_template"),
|
|
94195
|
+
uniqueEntities(response.documents, "template")
|
|
94196
|
+
);
|
|
94197
|
+
} else if (response.endpoint === "ror" && ((_d = response.documents) == null ? void 0 : _d.length)) {
|
|
94198
|
+
addMatchGroup(
|
|
94199
|
+
t2("associate_organization_from_ror"),
|
|
94200
|
+
uniqueEntities(response.documents, "ror")
|
|
94201
|
+
);
|
|
94202
|
+
} else if (response.endpoint === "entities" && ((_e2 = response.documents) == null ? void 0 : _e2.length)) {
|
|
94203
|
+
addMatchGroup(
|
|
94204
|
+
t2("associate_user_created_entity"),
|
|
94205
|
+
uniqueEntities(response.documents, "datapack")
|
|
94206
|
+
);
|
|
94207
|
+
} else if (response.endpoint === "datapacks" && ((_f = response.documents) == null ? void 0 : _f.length)) {
|
|
94208
|
+
addMatchGroup(
|
|
94209
|
+
t2("associate_from_datapack"),
|
|
94210
|
+
uniqueEntities(response.documents, "datapack")
|
|
94211
|
+
);
|
|
94085
94212
|
}
|
|
94086
94213
|
});
|
|
94087
|
-
if (type4 !== "ANY") {
|
|
94214
|
+
if (type4 !== "ANY" && newEntity.length) {
|
|
94088
94215
|
newMatches.push({
|
|
94089
94216
|
label: t2("create_new_entity"),
|
|
94090
94217
|
entities: newEntity
|
|
94091
94218
|
});
|
|
94092
94219
|
}
|
|
94220
|
+
if (version2 !== searchVersion.current) return;
|
|
94093
94221
|
setMatches(newMatches);
|
|
94094
94222
|
setLoading(false);
|
|
94095
94223
|
};
|
|
94096
|
-
const debouncedQuerySearch =
|
|
94224
|
+
const debouncedQuerySearch = useMemo$1(
|
|
94225
|
+
() => debounce(querySearch, 1e3, { leading: true }),
|
|
94226
|
+
[type4, crateManager, lookupHandler, t2]
|
|
94227
|
+
);
|
|
94097
94228
|
useEffect(() => {
|
|
94098
94229
|
querySearch("");
|
|
94099
|
-
|
|
94230
|
+
return () => {
|
|
94231
|
+
debouncedQuerySearch.cancel();
|
|
94232
|
+
searchVersion.current += 1;
|
|
94233
|
+
};
|
|
94234
|
+
}, [debouncedQuerySearch]);
|
|
94235
|
+
const mapGlobalEntity = (recordId, entityId) => {
|
|
94236
|
+
if (entityId && (lookupHandler == null ? void 0 : lookupHandler.onGlobalEntityAdded)) {
|
|
94237
|
+
void lookupHandler.onGlobalEntityAdded({ recordId, entityId }).catch((error2) => console.error("Failed to map global entity:", error2));
|
|
94238
|
+
}
|
|
94239
|
+
};
|
|
94240
|
+
const reuseGlobalEntity = (global2, local, useGlobalValues, explainReuse = false) => {
|
|
94241
|
+
const entityId = onLinkEntity({
|
|
94242
|
+
json: local,
|
|
94243
|
+
...useGlobalValues ? { globalEntityValues: global2 } : {}
|
|
94244
|
+
});
|
|
94245
|
+
if (entityId !== null) {
|
|
94246
|
+
mapGlobalEntity(global2.globalRecordId, entityId ?? local["@id"]);
|
|
94247
|
+
if (explainReuse) {
|
|
94248
|
+
modal.info({
|
|
94249
|
+
title: t2("global_entity_already_exists_title"),
|
|
94250
|
+
content: t2("global_entity_reused_notice", { name: local.name || local["@id"] }),
|
|
94251
|
+
okText: t2("global_entity_reused_ok")
|
|
94252
|
+
});
|
|
94253
|
+
}
|
|
94254
|
+
}
|
|
94255
|
+
setConflict(null);
|
|
94256
|
+
};
|
|
94100
94257
|
const handleSelect = (value, option) => {
|
|
94101
94258
|
const entity = option.entity;
|
|
94102
94259
|
if (entity) {
|
|
94260
|
+
const { globalRecordId, type: source, ...json } = entity;
|
|
94103
94261
|
const updatedEntity = {
|
|
94104
|
-
...
|
|
94262
|
+
...json,
|
|
94263
|
+
...source === "global" ? {} : { type: source },
|
|
94105
94264
|
"@type": entity["@type"].split(", ").map((t22) => t22.trim())
|
|
94106
94265
|
};
|
|
94107
|
-
if (
|
|
94266
|
+
if (source === "global") {
|
|
94267
|
+
const existing = findGlobalEntityMatches(crateManager, updatedEntity);
|
|
94268
|
+
if (existing.length === 1 && globalEntityValuesMatch(existing[0], updatedEntity)) {
|
|
94269
|
+
reuseGlobalEntity(entity, existing[0], false, true);
|
|
94270
|
+
} else if (existing.length) {
|
|
94271
|
+
setConflict({ global: entity, matches: existing });
|
|
94272
|
+
} else {
|
|
94273
|
+
const entityId = onCreateEntity({ json: updatedEntity, fromGlobalEntity: true });
|
|
94274
|
+
mapGlobalEntity(globalRecordId, entityId);
|
|
94275
|
+
}
|
|
94276
|
+
} else if (source === "internal") {
|
|
94108
94277
|
onLinkEntity({ json: updatedEntity });
|
|
94109
94278
|
} else {
|
|
94110
94279
|
onCreateEntity({ json: updatedEntity });
|
|
@@ -94114,7 +94283,10 @@ const AutoComplete = ({ type: type4, onLinkEntity, onCreateEntity }) => {
|
|
|
94114
94283
|
};
|
|
94115
94284
|
const handleSearch = (value) => {
|
|
94116
94285
|
inputValue.current = value;
|
|
94117
|
-
|
|
94286
|
+
const version2 = ++searchVersion.current;
|
|
94287
|
+
setMatches([]);
|
|
94288
|
+
setLoading(true);
|
|
94289
|
+
debouncedQuerySearch(value, version2);
|
|
94118
94290
|
};
|
|
94119
94291
|
const handleInputKeyDown = (event) => {
|
|
94120
94292
|
const name2 = inputValue.current;
|
|
@@ -94169,27 +94341,41 @@ const AutoComplete = ({ type: type4, onLinkEntity, onCreateEntity }) => {
|
|
|
94169
94341
|
] });
|
|
94170
94342
|
}
|
|
94171
94343
|
};
|
|
94172
|
-
return /* @__PURE__ */ jsxRuntimeExports.
|
|
94173
|
-
|
|
94174
|
-
|
|
94175
|
-
|
|
94176
|
-
|
|
94177
|
-
|
|
94178
|
-
|
|
94179
|
-
|
|
94180
|
-
|
|
94181
|
-
|
|
94182
|
-
|
|
94183
|
-
|
|
94184
|
-
|
|
94185
|
-
|
|
94186
|
-
|
|
94187
|
-
|
|
94188
|
-
|
|
94189
|
-
|
|
94190
|
-
|
|
94191
|
-
|
|
94192
|
-
|
|
94344
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: loading ? "opacity-50" : "", children: [
|
|
94345
|
+
conflict && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
94346
|
+
GlobalEntityConflictDialog,
|
|
94347
|
+
{
|
|
94348
|
+
global: conflict.global,
|
|
94349
|
+
matches: conflict.matches,
|
|
94350
|
+
onChoose: (local, useGlobalValues) => reuseGlobalEntity(conflict.global, local, useGlobalValues),
|
|
94351
|
+
onCancel: () => setConflict(null)
|
|
94352
|
+
}
|
|
94353
|
+
),
|
|
94354
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
94355
|
+
Select,
|
|
94356
|
+
{
|
|
94357
|
+
showSearch: true,
|
|
94358
|
+
size: "middle",
|
|
94359
|
+
value: selection2,
|
|
94360
|
+
placeholder: t2("select_existing_or_create_new") || "select an existing entity or create a new one",
|
|
94361
|
+
defaultActiveFirstOption: false,
|
|
94362
|
+
filterOption: false,
|
|
94363
|
+
onSearch: handleSearch,
|
|
94364
|
+
onInputKeyDown: handleInputKeyDown,
|
|
94365
|
+
onChange: handleSelect,
|
|
94366
|
+
notFoundContent: loading ? "Loading..." : "No results",
|
|
94367
|
+
options: matches2.map((group, groupIndex) => ({
|
|
94368
|
+
label: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography.Text, { strong: true, children: group.label }),
|
|
94369
|
+
options: group.entities.map((entity, entityIndex) => ({
|
|
94370
|
+
label: renderOption({ entity }),
|
|
94371
|
+
value: `${groupIndex}:${entityIndex}:${String(entity["@id"])}`,
|
|
94372
|
+
entity
|
|
94373
|
+
}))
|
|
94374
|
+
})),
|
|
94375
|
+
optionRender: (option) => option.label
|
|
94376
|
+
}
|
|
94377
|
+
)
|
|
94378
|
+
] });
|
|
94193
94379
|
};
|
|
94194
94380
|
const BulkAdd = ({ types: types2, primitives, onCreateEntity }) => {
|
|
94195
94381
|
const { t: t2 } = useTranslation();
|
|
@@ -94371,12 +94557,14 @@ const Add = ({
|
|
|
94371
94557
|
close();
|
|
94372
94558
|
};
|
|
94373
94559
|
const createEntity = (data) => {
|
|
94374
|
-
onCreateEntity({ ...data, property, propertyId: definition.id });
|
|
94560
|
+
const entityId = onCreateEntity({ ...data, property, propertyId: definition.id });
|
|
94375
94561
|
close();
|
|
94562
|
+
return entityId;
|
|
94376
94563
|
};
|
|
94377
94564
|
const linkEntity = (data) => {
|
|
94378
|
-
onLinkEntity({ ...data, property, propertyId: definition.id });
|
|
94565
|
+
const entityId = onLinkEntity({ ...data, property, propertyId: definition.id });
|
|
94379
94566
|
close();
|
|
94567
|
+
return entityId;
|
|
94380
94568
|
};
|
|
94381
94569
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
94382
94570
|
"div",
|
|
@@ -121519,7 +121707,7 @@ const DialogBrowseEntities = ({
|
|
|
121519
121707
|
query: "",
|
|
121520
121708
|
selectedEntityType: void 0
|
|
121521
121709
|
});
|
|
121522
|
-
const
|
|
121710
|
+
const entityTypes2 = useMemo$1(() => crateManager.getEntityTypes(), [crateManager]);
|
|
121523
121711
|
const entities = useMemo$1(() => {
|
|
121524
121712
|
const offset2 = (data.currentPage - 1) * data.pageSize;
|
|
121525
121713
|
let entities2;
|
|
@@ -121573,7 +121761,7 @@ const DialogBrowseEntities = ({
|
|
|
121573
121761
|
size: "middle",
|
|
121574
121762
|
children: [
|
|
121575
121763
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Select.Option, { value: "", children: t2("filter_by_type") }),
|
|
121576
|
-
|
|
121764
|
+
entityTypes2.map((t22) => /* @__PURE__ */ jsxRuntimeExports.jsx(Select.Option, { value: t22, children: t22 }, t22))
|
|
121577
121765
|
]
|
|
121578
121766
|
}
|
|
121579
121767
|
),
|
|
@@ -124003,19 +124191,37 @@ const useEntityMutationHandlers = ({
|
|
|
124003
124191
|
var _a2;
|
|
124004
124192
|
try {
|
|
124005
124193
|
(_a2 = data.json) == null ? true : delete _a2.type;
|
|
124006
|
-
|
|
124007
|
-
|
|
124008
|
-
|
|
124009
|
-
|
|
124010
|
-
|
|
124011
|
-
|
|
124194
|
+
let createdEntityId = data.json["@id"];
|
|
124195
|
+
if (data.fromGlobalEntity) {
|
|
124196
|
+
const existed = crateManager.getEntity({ id: createdEntityId, materialise: false, link: false });
|
|
124197
|
+
const added = crateManager.addEntity(data.json);
|
|
124198
|
+
createdEntityId = added["@id"];
|
|
124199
|
+
try {
|
|
124200
|
+
crateManager.linkEntity({
|
|
124201
|
+
id: entity["@id"],
|
|
124202
|
+
property: data.property,
|
|
124203
|
+
propertyId: data.propertyId,
|
|
124204
|
+
value: { "@id": createdEntityId }
|
|
124205
|
+
});
|
|
124206
|
+
} catch (error2) {
|
|
124207
|
+
if (!existed) crateManager.deleteEntity({ id: createdEntityId });
|
|
124208
|
+
throw error2;
|
|
124209
|
+
}
|
|
124210
|
+
} else {
|
|
124211
|
+
crateManager.ingestAndLink({
|
|
124212
|
+
id: entity["@id"],
|
|
124213
|
+
property: data.property,
|
|
124214
|
+
propertyId: data.propertyId,
|
|
124215
|
+
json: data.json
|
|
124216
|
+
});
|
|
124217
|
+
}
|
|
124012
124218
|
let warnings = crateManager.getWarnings();
|
|
124013
124219
|
if (warnings.hasWarning) {
|
|
124014
124220
|
onWarning();
|
|
124015
124221
|
}
|
|
124016
124222
|
refresh();
|
|
124017
124223
|
saveCratePreservingView();
|
|
124018
|
-
return
|
|
124224
|
+
return createdEntityId;
|
|
124019
124225
|
} catch (error2) {
|
|
124020
124226
|
onError();
|
|
124021
124227
|
return null;
|
|
@@ -124049,6 +124255,20 @@ const useEntityMutationHandlers = ({
|
|
|
124049
124255
|
};
|
|
124050
124256
|
const handleLinkEntity = (data) => {
|
|
124051
124257
|
try {
|
|
124258
|
+
if (data.globalEntityValues) {
|
|
124259
|
+
const local = crateManager.getEntity({ id: data.json["@id"], link: false, materialise: false });
|
|
124260
|
+
if (!local) return null;
|
|
124261
|
+
for (const [property, value] of Object.entries(globalEntityValues(data.globalEntityValues))) {
|
|
124262
|
+
const values = Array.isArray(value) ? value : [value];
|
|
124263
|
+
if (property === "name") {
|
|
124264
|
+
crateManager.updateProperty({ id: local["@id"], property, value });
|
|
124265
|
+
} else {
|
|
124266
|
+
const localValues = Array.isArray(local[property]) ? local[property] : [local[property]];
|
|
124267
|
+
const references = localValues.filter((item) => item && typeof item === "object" && typeof item["@id"] === "string");
|
|
124268
|
+
crateManager.updateProperty({ id: local["@id"], property, value: [...references, ...values] });
|
|
124269
|
+
}
|
|
124270
|
+
}
|
|
124271
|
+
}
|
|
124052
124272
|
crateManager.linkEntity({
|
|
124053
124273
|
id: entity["@id"],
|
|
124054
124274
|
property: data.property,
|
|
@@ -124057,8 +124277,10 @@ const useEntityMutationHandlers = ({
|
|
|
124057
124277
|
});
|
|
124058
124278
|
refresh();
|
|
124059
124279
|
saveCratePreservingView();
|
|
124280
|
+
return data.json["@id"];
|
|
124060
124281
|
} catch (error2) {
|
|
124061
124282
|
onError();
|
|
124283
|
+
return null;
|
|
124062
124284
|
}
|
|
124063
124285
|
};
|
|
124064
124286
|
const handleDeleteProperty = (data) => {
|
|
@@ -124181,8 +124403,7 @@ const useEntityNavigationState = ({
|
|
|
124181
124403
|
highlightRequiredProperties,
|
|
124182
124404
|
iconView,
|
|
124183
124405
|
tabPaneWidth,
|
|
124184
|
-
onSaveCrate
|
|
124185
|
-
debugScroll = () => void 0
|
|
124406
|
+
onSaveCrate
|
|
124186
124407
|
}) => {
|
|
124187
124408
|
const getVisibleContextMarkers = useCallback((selector, dataAttribute) => {
|
|
124188
124409
|
const source = activeContentRef.current;
|
|
@@ -124190,39 +124411,20 @@ const useEntityNavigationState = ({
|
|
|
124190
124411
|
return Array.from(source.querySelectorAll(selector)).map((node2) => node2.getAttribute(dataAttribute)).filter((value) => Boolean(value));
|
|
124191
124412
|
}, [activeContentRef]);
|
|
124192
124413
|
const captureViewContext = useCallback((tabName = activeTab, explicitScrollTop, options = {}) => {
|
|
124193
|
-
var _a2, _b, _c, _d
|
|
124414
|
+
var _a2, _b, _c, _d;
|
|
124194
124415
|
const entityId = contextEntity == null ? void 0 : contextEntity["@id"];
|
|
124195
124416
|
if (!entityId) return;
|
|
124196
124417
|
const updateActiveTab = options.updateActiveTab !== false;
|
|
124197
124418
|
if (restoreInProgressRef.current && typeof explicitScrollTop !== "number") {
|
|
124198
|
-
debugScroll("capture.skipped-during-restore", {
|
|
124199
|
-
entityId,
|
|
124200
|
-
tabName,
|
|
124201
|
-
latestId: (_a2 = state.editorState.latest()) == null ? void 0 : _a2.id
|
|
124202
|
-
});
|
|
124203
124419
|
return;
|
|
124204
124420
|
}
|
|
124205
124421
|
const previous = state.editorState.getNavigationState(entityId) ?? {};
|
|
124206
|
-
const scrollTop = typeof explicitScrollTop === "number" ? explicitScrollTop : ((
|
|
124422
|
+
const scrollTop = typeof explicitScrollTop === "number" ? explicitScrollTop : ((_a2 = activeContentRef.current) == null ? void 0 : _a2.scrollTop) ?? ((_c = (_b = previous.tabStates) == null ? void 0 : _b[tabName]) == null ? void 0 : _c.scrollTop) ?? 0;
|
|
124207
124423
|
const nextTabState = {
|
|
124208
124424
|
scrollTop,
|
|
124209
124425
|
expandedSections: getVisibleContextMarkers('[aria-expanded="true"],[data-expanded="true"]', "data-section-id"),
|
|
124210
124426
|
selectedItems: getVisibleContextMarkers('[aria-selected="true"],[data-selected="true"]', "data-item-id")
|
|
124211
124427
|
};
|
|
124212
|
-
debugScroll("capture", {
|
|
124213
|
-
entityId,
|
|
124214
|
-
tabName,
|
|
124215
|
-
latestId: (_e2 = state.editorState.latest()) == null ? void 0 : _e2.id,
|
|
124216
|
-
explicitScrollTop,
|
|
124217
|
-
scrollTop,
|
|
124218
|
-
updateActiveTab,
|
|
124219
|
-
previousScrollTop: ((_g = (_f = previous.tabStates) == null ? void 0 : _f[tabName]) == null ? void 0 : _g.scrollTop) ?? null,
|
|
124220
|
-
viewport: activeContentRef.current ? {
|
|
124221
|
-
clientHeight: activeContentRef.current.clientHeight,
|
|
124222
|
-
scrollHeight: activeContentRef.current.scrollHeight,
|
|
124223
|
-
currentScrollTop: activeContentRef.current.scrollTop
|
|
124224
|
-
} : null
|
|
124225
|
-
});
|
|
124226
124428
|
const navigationState = {
|
|
124227
124429
|
...updateActiveTab ? { activeTab: tabName } : {},
|
|
124228
124430
|
tabStates: { [tabName]: nextTabState },
|
|
@@ -124234,7 +124436,7 @@ const useEntityNavigationState = ({
|
|
|
124234
124436
|
tabPaneWidth
|
|
124235
124437
|
}
|
|
124236
124438
|
};
|
|
124237
|
-
if (((
|
|
124439
|
+
if (((_d = state.editorState.latest()) == null ? void 0 : _d.id) === entityId) {
|
|
124238
124440
|
state.editorState.updateNavigationState(navigationState);
|
|
124239
124441
|
} else {
|
|
124240
124442
|
state.editorState.updateNavigationStateForId(entityId, navigationState);
|
|
@@ -124299,8 +124501,7 @@ const useEntityScrollRestoration = ({
|
|
|
124299
124501
|
state,
|
|
124300
124502
|
isAiScrollRestoreSuppressed,
|
|
124301
124503
|
captureViewContext,
|
|
124302
|
-
disabled: disabled2 = false
|
|
124303
|
-
debugScroll = () => void 0
|
|
124504
|
+
disabled: disabled2 = false
|
|
124304
124505
|
}) => {
|
|
124305
124506
|
useEffect(() => {
|
|
124306
124507
|
var _a2, _b, _c, _d;
|
|
@@ -124312,16 +124513,6 @@ const useEntityScrollRestoration = ({
|
|
|
124312
124513
|
const viewport = activeContentRef.current;
|
|
124313
124514
|
if (!viewport) return;
|
|
124314
124515
|
const restoreTarget = ((_d = (_c = (_b = state.editorState.getNavigationState(contextEntity["@id"])) == null ? void 0 : _b.tabStates) == null ? void 0 : _c[activeTab]) == null ? void 0 : _d.scrollTop) ?? 0;
|
|
124315
|
-
debugScroll("restore.start", {
|
|
124316
|
-
entityId: contextEntity["@id"],
|
|
124317
|
-
activeTab,
|
|
124318
|
-
restoreTarget,
|
|
124319
|
-
viewport: {
|
|
124320
|
-
clientHeight: viewport.clientHeight,
|
|
124321
|
-
scrollHeight: viewport.scrollHeight,
|
|
124322
|
-
scrollTop: viewport.scrollTop
|
|
124323
|
-
}
|
|
124324
|
-
});
|
|
124325
124516
|
let cancelled = false;
|
|
124326
124517
|
let rafId = 0;
|
|
124327
124518
|
let timerId = 0;
|
|
@@ -124343,32 +124534,9 @@ const useEntityScrollRestoration = ({
|
|
|
124343
124534
|
viewport.scrollTo({ top: target, behavior: "auto" });
|
|
124344
124535
|
const contentReady = restoreTarget <= maxScrollable || restoreTarget === 0;
|
|
124345
124536
|
const done = contentReady && Math.abs(viewport.scrollTop - target) <= 1;
|
|
124346
|
-
debugScroll("restore.attempt", {
|
|
124347
|
-
entityId: contextEntity["@id"],
|
|
124348
|
-
activeTab,
|
|
124349
|
-
attempts,
|
|
124350
|
-
restoreTarget,
|
|
124351
|
-
maxScrollable,
|
|
124352
|
-
target,
|
|
124353
|
-
actualScrollTop: viewport.scrollTop,
|
|
124354
|
-
clientHeight: viewport.clientHeight,
|
|
124355
|
-
scrollHeight: viewport.scrollHeight,
|
|
124356
|
-
contentReady,
|
|
124357
|
-
done
|
|
124358
|
-
});
|
|
124359
124537
|
if (done || attempts >= maxAttempts) {
|
|
124360
124538
|
restoreInProgressRef.current = false;
|
|
124361
124539
|
viewport.style.scrollBehavior = previousInlineScrollBehavior;
|
|
124362
|
-
debugScroll("restore.stop", {
|
|
124363
|
-
entityId: contextEntity["@id"],
|
|
124364
|
-
activeTab,
|
|
124365
|
-
attempts,
|
|
124366
|
-
restoreTarget,
|
|
124367
|
-
finalScrollTop: viewport.scrollTop,
|
|
124368
|
-
maxScrollable,
|
|
124369
|
-
contentReady,
|
|
124370
|
-
done
|
|
124371
|
-
});
|
|
124372
124540
|
return;
|
|
124373
124541
|
}
|
|
124374
124542
|
timerId = window.setTimeout(() => {
|
|
@@ -124398,11 +124566,6 @@ const useEntityScrollRestoration = ({
|
|
|
124398
124566
|
if (((_a2 = pendingAddedPropertyRef.current) == null ? void 0 : _a2.entityId) === contextEntity["@id"]) return;
|
|
124399
124567
|
if (isAiScrollRestoreSuppressed()) return;
|
|
124400
124568
|
if (pendingTab) {
|
|
124401
|
-
debugScroll("restore.pending-tab", {
|
|
124402
|
-
entityId: contextEntity["@id"],
|
|
124403
|
-
pendingTab,
|
|
124404
|
-
activeTab
|
|
124405
|
-
});
|
|
124406
124569
|
if (activeTab !== pendingTab) {
|
|
124407
124570
|
return;
|
|
124408
124571
|
}
|
|
@@ -125239,7 +125402,6 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
125239
125402
|
const pendingAiScrollPropertyRef = useRef(null);
|
|
125240
125403
|
const aiScrollRestoreSuppressedUntilRef = useRef(0);
|
|
125241
125404
|
const lastAutoNavigatedAiApprovalRef = useRef(null);
|
|
125242
|
-
const debugScroll = (...args) => console.log("[recrate-scroll-debug]", ...args);
|
|
125243
125405
|
const {
|
|
125244
125406
|
activeContentRef,
|
|
125245
125407
|
contentContainerRef,
|
|
@@ -125284,8 +125446,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
125284
125446
|
highlightRequiredProperties,
|
|
125285
125447
|
iconView,
|
|
125286
125448
|
tabPaneWidth,
|
|
125287
|
-
onSaveCrate
|
|
125288
|
-
debugScroll
|
|
125449
|
+
onSaveCrate
|
|
125289
125450
|
});
|
|
125290
125451
|
useEntityScrollRestoration({
|
|
125291
125452
|
activeTab,
|
|
@@ -125308,8 +125469,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
125308
125469
|
state,
|
|
125309
125470
|
isAiScrollRestoreSuppressed,
|
|
125310
125471
|
captureViewContext,
|
|
125311
|
-
disabled: readonly
|
|
125312
|
-
debugScroll
|
|
125472
|
+
disabled: readonly
|
|
125313
125473
|
});
|
|
125314
125474
|
const pendingAiApprovalRecords = useMemo$1(() => getPendingEntityApprovalRecords(approvalContext == null ? void 0 : approvalContext.roCrateApproval, contextEntity == null ? void 0 : contextEntity["@id"]), [approvalContext == null ? void 0 : approvalContext.roCrateApproval, contextEntity == null ? void 0 : contextEntity["@id"]]);
|
|
125315
125475
|
const pendingAiApprovalProperties = useMemo$1(() => pendingAiApprovalRecords.map((approvalRecord) => approvalRecord == null ? void 0 : approvalRecord.propertyName).filter((property) => typeof property === "string" && property.length > 0), [pendingAiApprovalRecords]);
|
|
@@ -125532,20 +125692,6 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
125532
125692
|
willScrollToAddedProperty = true;
|
|
125533
125693
|
}
|
|
125534
125694
|
}
|
|
125535
|
-
debugScroll("init", {
|
|
125536
|
-
entityId: entity2["@id"],
|
|
125537
|
-
latestId: latestEntry == null ? void 0 : latestEntry.id,
|
|
125538
|
-
isCurrentHistoryEntity,
|
|
125539
|
-
renderTabs: layout.renderTabs,
|
|
125540
|
-
tabNames,
|
|
125541
|
-
restorableTabNames,
|
|
125542
|
-
savedActiveTab,
|
|
125543
|
-
savedTabStillValid,
|
|
125544
|
-
currentTabStillValid,
|
|
125545
|
-
restoredTab,
|
|
125546
|
-
nextActiveTab,
|
|
125547
|
-
navState
|
|
125548
|
-
});
|
|
125549
125695
|
pendingRestoredTabRef.current = willScrollToAddedProperty ? null : nextActiveTab;
|
|
125550
125696
|
setActiveTab(nextActiveTab);
|
|
125551
125697
|
if (typeof ((_b2 = navState == null ? void 0 : navState.uiState) == null ? void 0 : _b2.showAddPanel) === "boolean") setShowAddPanel(navState.uiState.showAddPanel);
|
|
@@ -125591,11 +125737,6 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
125591
125737
|
}
|
|
125592
125738
|
}, [readonly, entity == null ? void 0 : entity["@id"]]);
|
|
125593
125739
|
const handleLoadEntityWithContext = (params) => {
|
|
125594
|
-
debugScroll("navigate", {
|
|
125595
|
-
fromEntityId: contextEntity == null ? void 0 : contextEntity["@id"],
|
|
125596
|
-
activeTab,
|
|
125597
|
-
params
|
|
125598
|
-
});
|
|
125599
125740
|
captureCurrentViewContext(activeTab);
|
|
125600
125741
|
onLoadEntity(params);
|
|
125601
125742
|
};
|
|
@@ -130935,9 +131076,9 @@ class ProfileManager {
|
|
|
130935
131076
|
var _a2;
|
|
130936
131077
|
if (!((_a2 = this.profile) == null ? void 0 : _a2.layouts) || !this.profile.layouts.length) return null;
|
|
130937
131078
|
let layouts = this.profile.layouts;
|
|
130938
|
-
const
|
|
131079
|
+
const entityTypes2 = this.normaliseEntityTypes(entity);
|
|
130939
131080
|
let layout = layouts.filter((layout2) => {
|
|
130940
|
-
return intersection(layout2.appliesTo,
|
|
131081
|
+
return intersection(layout2.appliesTo, entityTypes2).length;
|
|
130941
131082
|
});
|
|
130942
131083
|
if (!layout.length) return null;
|
|
130943
131084
|
let firstMatchingLayout = layout[0];
|
|
@@ -134113,6 +134254,19 @@ const en = {
|
|
|
134113
134254
|
external_lookup_timeout_error: "External Lookup Timeout",
|
|
134114
134255
|
ror_lookup_timeout_error: "ROR Lookup Timeout",
|
|
134115
134256
|
associate_existing_entity: "Associate an entity already defined in this crate",
|
|
134257
|
+
associate_global_entity: "Global entities",
|
|
134258
|
+
global_entity_already_exists_title: "Entity already exists in this crate",
|
|
134259
|
+
global_entity_reused_notice: "“{{name}}” already exists in this crate with the same values. The existing entity was reused and linked to this field. No duplicate was added.",
|
|
134260
|
+
global_entity_reused_ok: "OK",
|
|
134261
|
+
global_entity_conflict_title: "This entity may already be in the crate",
|
|
134262
|
+
global_entity_conflict_description: "An entity with the same type and name, or the same values, already exists. Choose which values to keep.",
|
|
134263
|
+
global_entity_conflict_preserve_links: "The existing crate ID, links, and fields absent from the global version will be preserved.",
|
|
134264
|
+
global_entity_conflict_cancel: "Cancel",
|
|
134265
|
+
global_entity_conflict_property: "Field",
|
|
134266
|
+
global_entity_conflict_crate_values: "In this crate",
|
|
134267
|
+
global_entity_conflict_global_values: "Global version",
|
|
134268
|
+
global_entity_conflict_keep_crate: "Keep crate values",
|
|
134269
|
+
global_entity_conflict_use_global: "Use global values",
|
|
134116
134270
|
associate_entity_from_template: "Associate an entity from saved templates",
|
|
134117
134271
|
associate_organization_from_ror: "Associate an Organization defined in the Research Organization Registry",
|
|
134118
134272
|
associate_user_created_entity: "Associate a user created entity",
|
|
@@ -134452,6 +134606,19 @@ const hu = {
|
|
|
134452
134606
|
external_lookup_timeout_error: "Külső lekérdezési időtúllépés",
|
|
134453
134607
|
ror_lookup_timeout_error: "ROR lekérdezési időtúllépés",
|
|
134454
134608
|
associate_existing_entity: "Kapcsolj egy már ebben a csomagban definiált entitást",
|
|
134609
|
+
associate_global_entity: "Globális entitások",
|
|
134610
|
+
global_entity_already_exists_title: "Az entitás már szerepel a csomagban",
|
|
134611
|
+
global_entity_reused_notice: "„{{name}}” már szerepel ebben a csomagban azonos értékekkel. A meglévő entitást használtuk fel és kapcsoltuk ehhez a mezőhöz. Nem adtunk hozzá másolatot.",
|
|
134612
|
+
global_entity_reused_ok: "Rendben",
|
|
134613
|
+
global_entity_conflict_title: "Ez az entitás már szerepelhet a csomagban",
|
|
134614
|
+
global_entity_conflict_description: "Már létezik azonos típusú és nevű, vagy azonos értékekkel rendelkező entitás. Válaszd ki, melyik értékeket tartod meg.",
|
|
134615
|
+
global_entity_conflict_preserve_links: "A meglévő csomagbeli azonosító, kapcsolatok és a globális változatból hiányzó mezők megmaradnak.",
|
|
134616
|
+
global_entity_conflict_cancel: "Mégse",
|
|
134617
|
+
global_entity_conflict_property: "Mező",
|
|
134618
|
+
global_entity_conflict_crate_values: "Ebben a csomagban",
|
|
134619
|
+
global_entity_conflict_global_values: "Globális változat",
|
|
134620
|
+
global_entity_conflict_keep_crate: "Csomagbeli értékek megtartása",
|
|
134621
|
+
global_entity_conflict_use_global: "Globális értékek használata",
|
|
134455
134622
|
associate_entity_from_template: "Kapcsolj egy mentett sablonból származó entitást",
|
|
134456
134623
|
associate_organization_from_ror: "Kapcsolj egy a Research Organization Registryben definiált szervezetet",
|
|
134457
134624
|
associate_user_created_entity: "Kapcsolj egy felhasználó által létrehozott entitást",
|
|
@@ -135451,7 +135618,7 @@ var EmotionCacheContext = /* @__PURE__ */ React.createContext(
|
|
|
135451
135618
|
}) : null
|
|
135452
135619
|
);
|
|
135453
135620
|
var CacheProvider = EmotionCacheContext.Provider;
|
|
135454
|
-
const version = "0.1.
|
|
135621
|
+
const version = "0.1.54";
|
|
135455
135622
|
const pkg = {
|
|
135456
135623
|
version
|
|
135457
135624
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -18,7 +18,16 @@ export interface Lookup {
|
|
|
18
18
|
* result limit. Most host applications should search at least `@id` and
|
|
19
19
|
* `name`.
|
|
20
20
|
*/
|
|
21
|
-
entityTemplates(params: EntityTemplatesParams): Promise<void>;
|
|
21
|
+
entityTemplates?(params: EntityTemplatesParams): Promise<void>;
|
|
22
|
+
/** List reusable global entities, including when the search string is empty. */
|
|
23
|
+
globalEntities?(params: EntityTemplatesParams): Promise<{
|
|
24
|
+
documents: JSONObject[];
|
|
25
|
+
}>;
|
|
26
|
+
/** Record the association after a global entity has been added or linked. */
|
|
27
|
+
onGlobalEntityAdded?(params: {
|
|
28
|
+
recordId: string;
|
|
29
|
+
entityId: string;
|
|
30
|
+
}): Promise<void>;
|
|
22
31
|
}
|
|
23
32
|
export interface RoCrateApprovalSaveData {
|
|
24
33
|
/**
|