@qoretechnologies/reqraft 0.10.13-pr.74.gccefa54 → 0.10.13
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/.claude/CLAUDE.md +8 -11
- package/dist/components/form/engine/FormEngine.d.ts +1 -1
- package/dist/helpers/common.d.ts +0 -5
- package/dist/helpers/common.d.ts.map +1 -1
- package/dist/helpers/common.js +1 -20
- package/dist/helpers/common.js.map +1 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -7
- package/dist/index.js.map +1 -1
- package/dist/providers/StorageProvider.d.ts +13 -0
- package/dist/providers/StorageProvider.d.ts.map +1 -1
- package/dist/providers/StorageProvider.js +29 -5
- package/dist/providers/StorageProvider.js.map +1 -1
- package/package.json +3 -3
- package/src/helpers/common.ts +0 -19
- package/src/hooks/useStorage/useStorage.stories.tsx +52 -0
- package/src/index.tsx +0 -5
- package/src/providers/StorageProvider.tsx +30 -4
- package/dist/components/composer/Composer.d.ts +0 -108
- package/dist/components/composer/Composer.d.ts.map +0 -1
- package/dist/components/composer/Composer.js +0 -238
- package/dist/components/composer/Composer.js.map +0 -1
- package/dist/components/composer/helpers.d.ts +0 -21
- package/dist/components/composer/helpers.d.ts.map +0 -1
- package/dist/components/composer/helpers.js +0 -75
- package/dist/components/composer/helpers.js.map +0 -1
- package/dist/components/composer/index.d.ts +0 -3
- package/dist/components/composer/index.d.ts.map +0 -1
- package/dist/components/composer/index.js +0 -19
- package/dist/components/composer/index.js.map +0 -1
- package/dist/components/imageLightbox/ImageLightbox.d.ts +0 -17
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +0 -1
- package/dist/components/imageLightbox/ImageLightbox.js +0 -129
- package/dist/components/imageLightbox/ImageLightbox.js.map +0 -1
- package/dist/components/imageLightbox/index.d.ts +0 -2
- package/dist/components/imageLightbox/index.d.ts.map +0 -1
- package/dist/components/imageLightbox/index.js +0 -18
- package/dist/components/imageLightbox/index.js.map +0 -1
- package/dist/components/supportTicket/AttachmentChips.d.ts +0 -10
- package/dist/components/supportTicket/AttachmentChips.d.ts.map +0 -1
- package/dist/components/supportTicket/AttachmentChips.js +0 -119
- package/dist/components/supportTicket/AttachmentChips.js.map +0 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +0 -35
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +0 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.js +0 -31
- package/dist/components/supportTicket/InterfaceReferenceTags.js.map +0 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts +0 -41
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +0 -1
- package/dist/components/supportTicket/ReferencePicker.js +0 -86
- package/dist/components/supportTicket/ReferencePicker.js.map +0 -1
- package/dist/components/supportTicket/TicketHeader.d.ts +0 -86
- package/dist/components/supportTicket/TicketHeader.d.ts.map +0 -1
- package/dist/components/supportTicket/TicketHeader.js +0 -149
- package/dist/components/supportTicket/TicketHeader.js.map +0 -1
- package/dist/components/supportTicket/TicketMetaTags.d.ts +0 -32
- package/dist/components/supportTicket/TicketMetaTags.d.ts.map +0 -1
- package/dist/components/supportTicket/TicketMetaTags.js +0 -21
- package/dist/components/supportTicket/TicketMetaTags.js.map +0 -1
- package/dist/components/supportTicket/TicketReplyBox.d.ts +0 -63
- package/dist/components/supportTicket/TicketReplyBox.d.ts.map +0 -1
- package/dist/components/supportTicket/TicketReplyBox.js +0 -115
- package/dist/components/supportTicket/TicketReplyBox.js.map +0 -1
- package/dist/components/supportTicket/fileToAttachment.d.ts +0 -9
- package/dist/components/supportTicket/fileToAttachment.d.ts.map +0 -1
- package/dist/components/supportTicket/fileToAttachment.js +0 -28
- package/dist/components/supportTicket/fileToAttachment.js.map +0 -1
- package/dist/components/supportTicket/index.d.ts +0 -9
- package/dist/components/supportTicket/index.d.ts.map +0 -1
- package/dist/components/supportTicket/index.js +0 -25
- package/dist/components/supportTicket/index.js.map +0 -1
- package/dist/components/supportTicket/meta.d.ts +0 -63
- package/dist/components/supportTicket/meta.d.ts.map +0 -1
- package/dist/components/supportTicket/meta.js +0 -79
- package/dist/components/supportTicket/meta.js.map +0 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts +0 -52
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +0 -1
- package/dist/components/ticketReferences/TicketReferences.js +0 -453
- package/dist/components/ticketReferences/TicketReferences.js.map +0 -1
- package/dist/components/ticketReferences/index.d.ts +0 -3
- package/dist/components/ticketReferences/index.d.ts.map +0 -1
- package/dist/components/ticketReferences/index.js +0 -6
- package/dist/components/ticketReferences/index.js.map +0 -1
- package/dist/components/ticketThread/TicketThread.d.ts +0 -52
- package/dist/components/ticketThread/TicketThread.d.ts.map +0 -1
- package/dist/components/ticketThread/TicketThread.js +0 -248
- package/dist/components/ticketThread/TicketThread.js.map +0 -1
- package/dist/components/ticketThread/index.d.ts +0 -3
- package/dist/components/ticketThread/index.d.ts.map +0 -1
- package/dist/components/ticketThread/index.js +0 -7
- package/dist/components/ticketThread/index.js.map +0 -1
- package/dist/helpers/scrollbar.d.ts +0 -2
- package/dist/helpers/scrollbar.d.ts.map +0 -1
- package/dist/helpers/scrollbar.js +0 -25
- package/dist/helpers/scrollbar.js.map +0 -1
- package/src/components/composer/Composer.stories.tsx +0 -238
- package/src/components/composer/Composer.tsx +0 -545
- package/src/components/composer/helpers.ts +0 -74
- package/src/components/composer/index.ts +0 -2
- package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -156
- package/src/components/imageLightbox/ImageLightbox.tsx +0 -169
- package/src/components/imageLightbox/index.ts +0 -1
- package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -122
- package/src/components/supportTicket/AttachmentChips.tsx +0 -142
- package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -134
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -85
- package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -296
- package/src/components/supportTicket/ReferencePicker.tsx +0 -237
- package/src/components/supportTicket/TicketConversation.stories.tsx +0 -122
- package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
- package/src/components/supportTicket/TicketHeader.tsx +0 -247
- package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
- package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
- package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -355
- package/src/components/supportTicket/TicketReplyBox.tsx +0 -146
- package/src/components/supportTicket/fileToAttachment.ts +0 -24
- package/src/components/supportTicket/index.ts +0 -8
- package/src/components/supportTicket/meta.ts +0 -145
- package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -301
- package/src/components/ticketReferences/TicketReferences.tsx +0 -899
- package/src/components/ticketReferences/index.ts +0 -2
- package/src/components/ticketThread/TicketThread.stories.tsx +0 -751
- package/src/components/ticketThread/TicketThread.tsx +0 -650
- package/src/components/ticketThread/index.ts +0 -6
- package/src/helpers/scrollbar.ts +0 -32
package/.claude/CLAUDE.md
CHANGED
|
@@ -44,7 +44,7 @@ ReQraft (`@qoretechnologies/reqraft`) is a **React hooks and components toolkit*
|
|
|
44
44
|
- **Styling:** styled-components (inherited from ReQore); no CSS modules
|
|
45
45
|
- **State Management:** zustand (stores) + React Context (`use-context-selector`)
|
|
46
46
|
- **Data Fetching:** `@tanstack/react-query` v4 (via `query()` util + `useFetch` hook)
|
|
47
|
-
- **Testing:**
|
|
47
|
+
- **Testing:** Jest + React Testing Library (tests in `__tests__/`)
|
|
48
48
|
- **Documentation:** Storybook (stories co-located in `src/` with `.stories.tsx` suffix)
|
|
49
49
|
- **Storybook port:** `6008` (not 6007 — that's reqore)
|
|
50
50
|
|
|
@@ -155,9 +155,7 @@ A generic `<Field>` component dispatches to the appropriate field by type.
|
|
|
155
155
|
```bash
|
|
156
156
|
yarn install
|
|
157
157
|
yarn storybook # Dev mode on http://localhost:6008
|
|
158
|
-
yarn test
|
|
159
|
-
yarn test:watch # Vitest unit watch mode
|
|
160
|
-
yarn test:stories # Story / interaction tests in a real browser (+ Qlip capture)
|
|
158
|
+
yarn test:watch # Jest watch mode
|
|
161
159
|
yarn lint # ESLint check
|
|
162
160
|
yarn build # TypeScript compilation (tsconfig.prod.json)
|
|
163
161
|
yarn build:test # Type-check without emit
|
|
@@ -179,17 +177,16 @@ yarn build:test # Type-check without emit
|
|
|
179
177
|
|
|
180
178
|
### Testing Patterns
|
|
181
179
|
|
|
182
|
-
-
|
|
183
|
-
- Wrap
|
|
180
|
+
- Tests live in `__tests__/` (mirror `src/` structure)
|
|
181
|
+
- Wrap tests with `ReqraftProvider` (or at minimum `QueryClientProvider`)
|
|
184
182
|
- Use `mock-socket` for WebSocket testing
|
|
185
|
-
- Run:
|
|
183
|
+
- Run: `./node_modules/.bin/jest --passWithNoTests`
|
|
186
184
|
|
|
187
|
-
### Storybook Stories
|
|
185
|
+
### Storybook Stories
|
|
188
186
|
|
|
189
187
|
- Stories are co-located alongside source: `src/hooks/useFetch/useFetch.stories.tsx`
|
|
190
188
|
- Storybook port: **6008**
|
|
191
|
-
-
|
|
192
|
-
- **Visual regression via Qlip** (not Chromatic): the story run captures snapshots through the `qlip` Vitest plugin. Upload is gated on `QLIP_UPLOAD_TOKEN` (`vitest.config.ts`), so **local runs capture but never upload** — PNGs land in `qlip/screenshots/<ts>/stories/auto/<StoryId>.png` (gitignored); read the PNG to verify a visual change. CI (`.github/workflows/tests.yml`) sets the token and uploads a build for dashboard review. The full visual-change flow + the `qlip` MCP review skill live in the imported `stacks/frontend/FRONTEND.md`.
|
|
189
|
+
- Visual testing via Chromatic (`yarn chromatic`)
|
|
193
190
|
|
|
194
191
|
## Code Patterns & Conventions
|
|
195
192
|
|
|
@@ -271,7 +268,7 @@ yarn build:test # Type-check without emit
|
|
|
271
268
|
| `src/components/log/` | Log display component |
|
|
272
269
|
| `src/components/menu/` | Navigation menu component |
|
|
273
270
|
| `src/types/` | Shared TypeScript types |
|
|
274
|
-
| `__tests__/` |
|
|
271
|
+
| `__tests__/` | Jest tests |
|
|
275
272
|
|
|
276
273
|
## Other
|
|
277
274
|
|
|
@@ -46,7 +46,7 @@ export declare const flattenOptions: (options: TQorusForm) => TQorusFlatForm;
|
|
|
46
46
|
export declare const getTypeAndCanBeNull: (type: TQorusType | TQorusType[], allowed_values?: any[], operatorData?: TOperatorValue, operators?: IOperatorsSchema) => {
|
|
47
47
|
type: TQorusType;
|
|
48
48
|
defaultType: TQorusType;
|
|
49
|
-
defaultInternalType: "string" | "number" | "boolean" | "function" | "
|
|
49
|
+
defaultInternalType: "string" | "number" | "boolean" | "function" | "url" | "data" | "richtext" | "type" | "group" | "list" | "fsm" | "errors" | "step" | "class" | "bool" | "int" | "float" | "hash" | "mapper" | "workflow" | "service" | "job" | "connection" | "constant" | "mapper-code" | "queue" | "pipeline" | "sla" | "value-map" | "qog" | "ai-collection" | "ai-endpoint" | "ai-guardrail" | "binary" | "date" | "email" | "long-string" | "enum" | "integer" | "range" | "free-list" | "rgbcolor" | "free-hash" | "null" | "nothing" | "data-provider" | "context" | "file" | "processor-mappings" | "tool-catalog" | "code-editor";
|
|
50
50
|
canBeNull: boolean;
|
|
51
51
|
};
|
|
52
52
|
/** Display metadata for a read-first group, keyed by the raw `group` string;
|
package/dist/helpers/common.d.ts
CHANGED
|
@@ -26,11 +26,6 @@ export declare const richtextToSegments: (richtext: IReqoreRichTextEditorProps['
|
|
|
26
26
|
export declare const insertAtIndex: (array: any[], index: number, value: any) => any[];
|
|
27
27
|
/** Splits a byte-size string (e.g. `"10MiB"`) into `[amount, unit]`. */
|
|
28
28
|
export declare const splitByteSize: (value?: string) => [number | undefined, string | undefined];
|
|
29
|
-
/** Human-readable file size, e.g. `"12.3 KB"` — whole bytes below 1 KiB, one
|
|
30
|
-
* decimal above. Shared by the ticket thread / references attachment rows. */
|
|
31
|
-
export declare const formatBytes: (bytes: number) => string;
|
|
32
|
-
/** True when a MIME content type is an image (`image/*`). */
|
|
33
|
-
export declare const isImage: (contentType: string) => boolean;
|
|
34
29
|
export declare const getProtocol: (v?: string) => string;
|
|
35
30
|
export declare const getAddress: (v?: string) => string;
|
|
36
31
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/helpers/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAKrE,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AACpD,KAAK,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AA4C1C,eAAO,MAAM,WAAW,eAAgB,MAAM,KAAG,UAOhD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,UAAU,KAAG,MAQ/C,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,qBAAqB,KAAG,OAAO,GAAG,SAUzE,CAAC;AAEF,eAAO,MAAM,gBAAgB,aAAc,0BAA0B,CAAC,OAAO,CAAC,KAAG,MA6BhF,CAAC;AAEF;;+EAE+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;sEAEsE;AACtE,eAAO,MAAM,kBAAkB,aACnB,0BAA0B,CAAC,OAAO,CAAC,KAC5C,gBAAgB,EAkClB,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,GAAG,EAAE,wBAAyB,GAAG,KAAG,GAAG,EAE3E,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,CAIrF,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/helpers/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAKrE,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AACpD,KAAK,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AA4C1C,eAAO,MAAM,WAAW,eAAgB,MAAM,KAAG,UAOhD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,UAAU,KAAG,MAQ/C,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,qBAAqB,KAAG,OAAO,GAAG,SAUzE,CAAC;AAEF,eAAO,MAAM,gBAAgB,aAAc,0BAA0B,CAAC,OAAO,CAAC,KAAG,MA6BhF,CAAC;AAEF;;+EAE+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;sEAEsE;AACtE,eAAO,MAAM,kBAAkB,aACnB,0BAA0B,CAAC,OAAO,CAAC,KAC5C,gBAAgB,EAkClB,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,GAAG,EAAE,wBAAyB,GAAG,KAAG,GAAG,EAE3E,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,CAIrF,CAAC;AAKF,eAAO,MAAM,WAAW,OAAQ,MAAM,KAAG,MAQxC,CAAC;AAEF,eAAO,MAAM,UAAU,OAAQ,MAAM,KAAG,MAavC,CAAC"}
|
package/dist/helpers/common.js
CHANGED
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.getAddress = exports.getProtocol = exports.
|
|
15
|
+
exports.getAddress = exports.getProtocol = exports.splitByteSize = exports.insertAtIndex = exports.richtextToSegments = exports.richtextToString = exports.getDefaultValue = exports.typedToYaml = exports.yamlToTyped = void 0;
|
|
16
16
|
var js_yaml_1 = __importDefault(require("js-yaml"));
|
|
17
17
|
var inferTypedValue = function (raw) {
|
|
18
18
|
if (raw === null || raw === undefined)
|
|
@@ -176,25 +176,6 @@ var splitByteSize = function (value) {
|
|
|
176
176
|
return [(amount === null || amount === void 0 ? void 0 : amount[0]) ? Number(amount[0]) : undefined, unit === null || unit === void 0 ? void 0 : unit[0]];
|
|
177
177
|
};
|
|
178
178
|
exports.splitByteSize = splitByteSize;
|
|
179
|
-
/** Human-readable file size, e.g. `"12.3 KB"` — whole bytes below 1 KiB, one
|
|
180
|
-
* decimal above. Shared by the ticket thread / references attachment rows. */
|
|
181
|
-
var formatBytes = function (bytes) {
|
|
182
|
-
if (bytes < 1024) {
|
|
183
|
-
return "".concat(bytes, " B");
|
|
184
|
-
}
|
|
185
|
-
var units = ['KB', 'MB', 'GB'];
|
|
186
|
-
var value = bytes / 1024;
|
|
187
|
-
var unit = 0;
|
|
188
|
-
while (value >= 1024 && unit < units.length - 1) {
|
|
189
|
-
value /= 1024;
|
|
190
|
-
unit += 1;
|
|
191
|
-
}
|
|
192
|
-
return "".concat(value.toFixed(1), " ").concat(units[unit]);
|
|
193
|
-
};
|
|
194
|
-
exports.formatBytes = formatBytes;
|
|
195
|
-
/** True when a MIME content type is an image (`image/*`). */
|
|
196
|
-
var isImage = function (contentType) { return contentType.startsWith('image/'); };
|
|
197
|
-
exports.isImage = isImage;
|
|
198
179
|
// URL value splitting (IDE `urlField.tsx` behavior). Lives here rather than
|
|
199
180
|
// in the Url component so `validations.ts` can use it without pulling the
|
|
200
181
|
// component chain into non-DOM consumers (jest).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/helpers/common.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/helpers/common.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,6 @@ export * from './components/form';
|
|
|
2
2
|
export * from './components/log/Log';
|
|
3
3
|
export { validateField, validateFieldWithResult, isValueSet, getTypeFromValue, maybeParseYaml, hasAllDependenciesFullfilled, validateOptionWithRequiredGroups, } from './helpers/validations';
|
|
4
4
|
export type { IValidationResult } from './helpers/validations';
|
|
5
|
-
export { thinScrollbar } from './helpers/scrollbar';
|
|
6
|
-
export * from './components/imageLightbox';
|
|
7
5
|
export { ReqraftMenu } from './components/menu/Menu';
|
|
8
6
|
export type { IReqraftMenuItem, IReqraftMenuProps, TReqraftMenu, TReqraftMenuItem, } from './components/menu/Menu';
|
|
9
7
|
export { useFetch } from './hooks/useFetch/useFetch';
|
|
@@ -19,10 +17,7 @@ export * from './utils/websocket';
|
|
|
19
17
|
export { ReqraftLspClient } from './utils/lspClient';
|
|
20
18
|
export type { IReqraftLspClientOptions } from './utils/lspClient';
|
|
21
19
|
export type { ILspCompletionItem, ILspDiagnostic, ILspMarkupContent, ILspParameterInformation, ILspPosition, ILspRange, ILspSemanticToken, ILspSemanticTokensLegend, ILspServerCapabilities, ILspSignatureHelp, ILspSignatureInformation, ILspTextEdit, TLspDocumentText, } from './utils/lspClient.types';
|
|
22
|
-
export * from './components/composer';
|
|
23
20
|
export * from './components/smartEditor';
|
|
24
21
|
export * from './components/dpqlEditor';
|
|
25
22
|
export * from './components/qonsoleSmartInput';
|
|
26
|
-
export * from './components/supportTicket';
|
|
27
|
-
export * from './components/ticketThread';
|
|
28
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,cAAc,mCAAmC,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,YAAY,EACV,YAAY,EACZ,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.ReqraftLspClient = exports.query = exports.ReqraftCurrentUserStore = exports.ReqraftQueryClient = exports.ReqraftProvider = exports.initializeReqraft = exports.useReqraftStorage = exports.useFetch = exports.ReqraftMenu = exports.
|
|
17
|
+
exports.ReqraftLspClient = exports.query = exports.ReqraftCurrentUserStore = exports.ReqraftQueryClient = exports.ReqraftProvider = exports.initializeReqraft = exports.useReqraftStorage = exports.useFetch = exports.ReqraftMenu = exports.validateOptionWithRequiredGroups = exports.hasAllDependenciesFullfilled = exports.maybeParseYaml = exports.getTypeFromValue = exports.isValueSet = exports.validateFieldWithResult = exports.validateField = void 0;
|
|
18
18
|
__exportStar(require("./components/form"), exports);
|
|
19
19
|
__exportStar(require("./components/log/Log"), exports);
|
|
20
20
|
var validations_1 = require("./helpers/validations");
|
|
@@ -25,9 +25,6 @@ Object.defineProperty(exports, "getTypeFromValue", { enumerable: true, get: func
|
|
|
25
25
|
Object.defineProperty(exports, "maybeParseYaml", { enumerable: true, get: function () { return validations_1.maybeParseYaml; } });
|
|
26
26
|
Object.defineProperty(exports, "hasAllDependenciesFullfilled", { enumerable: true, get: function () { return validations_1.hasAllDependenciesFullfilled; } });
|
|
27
27
|
Object.defineProperty(exports, "validateOptionWithRequiredGroups", { enumerable: true, get: function () { return validations_1.validateOptionWithRequiredGroups; } });
|
|
28
|
-
var scrollbar_1 = require("./helpers/scrollbar");
|
|
29
|
-
Object.defineProperty(exports, "thinScrollbar", { enumerable: true, get: function () { return scrollbar_1.thinScrollbar; } });
|
|
30
|
-
__exportStar(require("./components/imageLightbox"), exports);
|
|
31
28
|
var Menu_1 = require("./components/menu/Menu");
|
|
32
29
|
Object.defineProperty(exports, "ReqraftMenu", { enumerable: true, get: function () { return Menu_1.ReqraftMenu; } });
|
|
33
30
|
var useFetch_1 = require("./hooks/useFetch/useFetch");
|
|
@@ -46,10 +43,7 @@ Object.defineProperty(exports, "query", { enumerable: true, get: function () { r
|
|
|
46
43
|
__exportStar(require("./utils/websocket"), exports);
|
|
47
44
|
var lspClient_1 = require("./utils/lspClient");
|
|
48
45
|
Object.defineProperty(exports, "ReqraftLspClient", { enumerable: true, get: function () { return lspClient_1.ReqraftLspClient; } });
|
|
49
|
-
__exportStar(require("./components/composer"), exports);
|
|
50
46
|
__exportStar(require("./components/smartEditor"), exports);
|
|
51
47
|
__exportStar(require("./components/dpqlEditor"), exports);
|
|
52
48
|
__exportStar(require("./components/qonsoleSmartInput"), exports);
|
|
53
|
-
__exportStar(require("./components/supportTicket"), exports);
|
|
54
|
-
__exportStar(require("./components/ticketThread"), exports);
|
|
55
49
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,uDAAqC;AACrC,qDAQ+B;AAP7B,4GAAA,aAAa,OAAA;AACb,sHAAA,uBAAuB,OAAA;AACvB,yGAAA,UAAU,OAAA;AACV,+GAAA,gBAAgB,OAAA;AAChB,6GAAA,cAAc,OAAA;AACd,2HAAA,4BAA4B,OAAA;AAC5B,+HAAA,gCAAgC,OAAA;AAGlC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,uDAAqC;AACrC,qDAQ+B;AAP7B,4GAAA,aAAa,OAAA;AACb,sHAAA,uBAAuB,OAAA;AACvB,yGAAA,UAAU,OAAA;AACV,+GAAA,gBAAgB,OAAA;AAChB,6GAAA,cAAc,OAAA;AACd,2HAAA,4BAA4B,OAAA;AAC5B,+HAAA,gCAAgC,OAAA;AAGlC,+CAAqD;AAA5C,mGAAA,WAAW,OAAA;AAQpB,sDAAqD;AAA5C,oGAAA,QAAQ,OAAA;AAEjB,4DAAkE;AAAzD,+GAAA,iBAAiB,OAAA;AAE1B,oEAAkD;AAClD,+DAIqC;AAHnC,oHAAA,iBAAiB,OAAA;AACjB,kHAAA,eAAe,OAAA;AACf,qHAAA,kBAAkB,OAAA;AAEpB,gEAA+F;AAAtF,sHAAA,gBAAgB,OAA2B;AAKpD,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AACd,oDAAkC;AAClC,+CAAqD;AAA5C,6GAAA,gBAAgB,OAAA;AAiBzB,2DAAyC;AACzC,0DAAwC;AACxC,iEAA+C"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
+
import { TReqraftStorage } from '../contexts/StorageContext';
|
|
2
3
|
import { IReqraftProviderProps } from './ReqraftProvider';
|
|
4
|
+
/**
|
|
5
|
+
* Apply a single path write onto the current storage blob, seeding a fresh object
|
|
6
|
+
* when the user has no storage yet.
|
|
7
|
+
*
|
|
8
|
+
* `?? {}` is load-bearing: a user who has never written storage has
|
|
9
|
+
* `storage === undefined | null`, and `set(cloneDeep(undefined), …)` returns
|
|
10
|
+
* `undefined` (lodash won't set on a nullish target). Without the seed the FIRST
|
|
11
|
+
* write for such a user — e.g. accepting the cookie-consent banner — persists an
|
|
12
|
+
* empty body and silently drops the value, so the flag stays unset forever and
|
|
13
|
+
* the banner never closes. Exported for testing.
|
|
14
|
+
*/
|
|
15
|
+
export declare const applyStorageWrite: (storage: TReqraftStorage | undefined, path: string, value: unknown) => TReqraftStorage;
|
|
3
16
|
export interface IReqraftStorageProviderProps extends Pick<IReqraftProviderProps, 'waitForStorage'> {
|
|
4
17
|
children: ReactNode;
|
|
5
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageProvider.d.ts","sourceRoot":"","sources":["../../src/providers/StorageProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"StorageProvider.d.ts","sourceRoot":"","sources":["../../src/providers/StorageProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAC;AAGxD,OAAO,EAAyB,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAKpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,YACnB,eAAe,GAAG,SAAS,QAC9B,MAAM,SACL,OAAO,KACb,eAA6D,CAAC;AAEjE,MAAM,WAAW,4BACf,SAAQ,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;IACrD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,mBAAmB,iCAAkC,4BAA4B,4CAkF7F,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReqraftUserProvider = void 0;
|
|
3
|
+
exports.ReqraftUserProvider = exports.applyStorageWrite = void 0;
|
|
4
4
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
var lodash_1 = require("lodash");
|
|
6
6
|
var react_1 = require("react");
|
|
@@ -9,6 +9,19 @@ var StorageContext_1 = require("../contexts/StorageContext");
|
|
|
9
9
|
var useFetch_1 = require("../hooks/useFetch/useFetch");
|
|
10
10
|
var useReqraftProperty_1 = require("../hooks/useReqraftProperty");
|
|
11
11
|
var currentUser_1 = require("../stores/currentUser/currentUser");
|
|
12
|
+
/**
|
|
13
|
+
* Apply a single path write onto the current storage blob, seeding a fresh object
|
|
14
|
+
* when the user has no storage yet.
|
|
15
|
+
*
|
|
16
|
+
* `?? {}` is load-bearing: a user who has never written storage has
|
|
17
|
+
* `storage === undefined | null`, and `set(cloneDeep(undefined), …)` returns
|
|
18
|
+
* `undefined` (lodash won't set on a nullish target). Without the seed the FIRST
|
|
19
|
+
* write for such a user — e.g. accepting the cookie-consent banner — persists an
|
|
20
|
+
* empty body and silently drops the value, so the flag stays unset forever and
|
|
21
|
+
* the banner never closes. Exported for testing.
|
|
22
|
+
*/
|
|
23
|
+
var applyStorageWrite = function (storage, path, value) { var _a; return (0, lodash_1.set)((_a = (0, lodash_1.cloneDeep)(storage)) !== null && _a !== void 0 ? _a : {}, path, value); };
|
|
24
|
+
exports.applyStorageWrite = applyStorageWrite;
|
|
12
25
|
var ReqraftUserProvider = function (_a) {
|
|
13
26
|
var children = _a.children, waitForStorage = _a.waitForStorage;
|
|
14
27
|
var appName = (0, useReqraftProperty_1.useReqraftProperty)('appName');
|
|
@@ -28,19 +41,30 @@ var ReqraftUserProvider = function (_a) {
|
|
|
28
41
|
return (_a = (0, lodash_1.get)(currentUser === null || currentUser === void 0 ? void 0 : currentUser.storage, _path)) !== null && _a !== void 0 ? _a : defaultValue;
|
|
29
42
|
}, [appName, currentUser === null || currentUser === void 0 ? void 0 : currentUser.storage]);
|
|
30
43
|
var updateStorage = (0, react_1.useCallback)(function (path, value, includeAppPrefix) {
|
|
44
|
+
var _a;
|
|
31
45
|
if (includeAppPrefix === void 0) { includeAppPrefix = true; }
|
|
32
46
|
var _path = includeAppPrefix ? "".concat(appName, ".").concat(path) : path;
|
|
33
|
-
|
|
47
|
+
// Base the write on the LATEST storage read straight from the store, not
|
|
48
|
+
// the blob captured in this callback's closure. A caller holding a stale
|
|
49
|
+
// updater — e.g. an imperative store subscription created on mount, before
|
|
50
|
+
// other keys had loaded — would otherwise persist an out-of-date blob and
|
|
51
|
+
// wipe every key written to storage since its closure was captured.
|
|
52
|
+
var latestStorage = (_a = currentUser_1.currentUserStore.getState().currentUser) === null || _a === void 0 ? void 0 : _a.storage;
|
|
53
|
+
var updatedStorage = (0, exports.applyStorageWrite)(latestStorage, _path, value);
|
|
34
54
|
updateCurrentUserStorage(updatedStorage);
|
|
35
55
|
load({ body: { storage: updatedStorage } });
|
|
36
|
-
}, [appName,
|
|
56
|
+
}, [appName, load, updateCurrentUserStorage]);
|
|
37
57
|
var removeStorageValue = (0, react_1.useCallback)(function (path, includeAppPrefix) {
|
|
58
|
+
var _a;
|
|
38
59
|
if (includeAppPrefix === void 0) { includeAppPrefix = true; }
|
|
39
60
|
var _path = includeAppPrefix ? "".concat(appName, ".").concat(path) : path;
|
|
40
|
-
|
|
61
|
+
// Same as `updateStorage`: mutate the LATEST blob (never a stale closure
|
|
62
|
+
// copy), seeding a fresh object when there's no storage yet.
|
|
63
|
+
var latestStorage = (_a = currentUser_1.currentUserStore.getState().currentUser) === null || _a === void 0 ? void 0 : _a.storage;
|
|
64
|
+
var updatedStorage = (0, exports.applyStorageWrite)(latestStorage, _path, null);
|
|
41
65
|
updateCurrentUserStorage(updatedStorage);
|
|
42
66
|
load({ body: { storage_path: _path } });
|
|
43
|
-
}, [appName,
|
|
67
|
+
}, [appName, load, updateCurrentUserStorage]);
|
|
44
68
|
var contextValue = (0, react_1.useMemo)(function () { return ({ storage: currentUser === null || currentUser === void 0 ? void 0 : currentUser.storage, getStorage: getStorage, updateStorage: updateStorage, removeStorageValue: removeStorageValue }); }, [currentUser === null || currentUser === void 0 ? void 0 : currentUser.storage, getStorage, updateStorage, removeStorageValue]);
|
|
45
69
|
if (loading && waitForStorage) {
|
|
46
70
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageProvider.js","sourceRoot":"","sources":["../../src/providers/StorageProvider.tsx"],"names":[],"mappings":";;;;AAAA,iCAA6C;AAC7C,+BAAwD;AACxD,uCAA0C;AAE1C,6DAAoF;AACpF,uDAAsD;AACtD,kEAAiE;AAEjE,iEAAqE;
|
|
1
|
+
{"version":3,"file":"StorageProvider.js","sourceRoot":"","sources":["../../src/providers/StorageProvider.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qoretechnologies/reqraft",
|
|
3
|
-
"version": "0.10.13
|
|
3
|
+
"version": "0.10.13",
|
|
4
4
|
"description": "ReQraft is a collection of React components and hooks that are used across Qore Technologies' products made using the ReQore component library from Qore.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@chromatic-com/storybook": "^5.2.1",
|
|
57
57
|
"@netsells/storybook-mockdate": "^0.3.3",
|
|
58
|
-
"@qoretechnologies/qlip": "^0.1.3-beta.
|
|
59
|
-
"@qoretechnologies/reqore": "^0.70.
|
|
58
|
+
"@qoretechnologies/qlip": "^0.1.3-beta.20260622084321",
|
|
59
|
+
"@qoretechnologies/reqore": "^0.70.6",
|
|
60
60
|
"@storybook/addon-docs": "^10.4.6",
|
|
61
61
|
"@storybook/addon-links": "^10.4.6",
|
|
62
62
|
"@storybook/addon-vitest": "^10.4.6",
|
package/src/helpers/common.ts
CHANGED
|
@@ -174,25 +174,6 @@ export const splitByteSize = (value?: string): [number | undefined, string | und
|
|
|
174
174
|
return [amount?.[0] ? Number(amount[0]) : undefined, unit?.[0]];
|
|
175
175
|
};
|
|
176
176
|
|
|
177
|
-
/** Human-readable file size, e.g. `"12.3 KB"` — whole bytes below 1 KiB, one
|
|
178
|
-
* decimal above. Shared by the ticket thread / references attachment rows. */
|
|
179
|
-
export const formatBytes = (bytes: number): string => {
|
|
180
|
-
if (bytes < 1024) {
|
|
181
|
-
return `${bytes} B`;
|
|
182
|
-
}
|
|
183
|
-
const units = ['KB', 'MB', 'GB'];
|
|
184
|
-
let value = bytes / 1024;
|
|
185
|
-
let unit = 0;
|
|
186
|
-
while (value >= 1024 && unit < units.length - 1) {
|
|
187
|
-
value /= 1024;
|
|
188
|
-
unit += 1;
|
|
189
|
-
}
|
|
190
|
-
return `${value.toFixed(1)} ${units[unit]}`;
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
/** True when a MIME content type is an image (`image/*`). */
|
|
194
|
-
export const isImage = (contentType: string): boolean => contentType.startsWith('image/');
|
|
195
|
-
|
|
196
177
|
// URL value splitting (IDE `urlField.tsx` behavior). Lives here rather than
|
|
197
178
|
// in the Url component so `validations.ts` can use it without pulling the
|
|
198
179
|
// component chain into non-DOM consumers (jest).
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReqoreButton, ReqoreControlGroup, ReqoreP } from '@qoretechnologies/reqore';
|
|
2
2
|
import { StoryObj } from '@storybook/react-vite';
|
|
3
|
+
import { useRef } from 'react';
|
|
3
4
|
import { fireEvent, within } from 'storybook/test';
|
|
4
5
|
import { storiesStorageMock } from '../../../__tests__/ mock';
|
|
5
6
|
import { testsWaitForText } from '../../../__tests__/utils';
|
|
@@ -93,6 +94,57 @@ export const ValueCanBeUpdated: Story = {
|
|
|
93
94
|
},
|
|
94
95
|
};
|
|
95
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Regression for the "stale updater clobbers other keys" bug: the storage
|
|
99
|
+
* updater must persist onto the LATEST storage blob, not the one captured in
|
|
100
|
+
* its closure. Long-lived callers (an imperative store subscription, a ref to
|
|
101
|
+
* the mount-time setter) hold an old updater; writing through it must not wipe
|
|
102
|
+
* keys other hooks wrote in the meantime.
|
|
103
|
+
*/
|
|
104
|
+
export const StaleUpdaterDoesNotClobberOtherKeys: Story = {
|
|
105
|
+
args: { reqraftOptions: { waitForStorage: true } },
|
|
106
|
+
parameters: {
|
|
107
|
+
docs: {
|
|
108
|
+
description: {
|
|
109
|
+
story:
|
|
110
|
+
"Renders two useReqraftStorage keys and captures the mount-time setter for the first one (a deliberately STALE updater). After a second key is written, writing through the stale updater must keep the second key intact — proving storage writes merge onto the latest blob rather than a closure copy. This is the regression test for page-visit tracking wiping other stored settings.",
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
mockData: [...storiesStorageMock],
|
|
114
|
+
},
|
|
115
|
+
render: () => {
|
|
116
|
+
const [someVal, setSomeVal] = useReqraftStorage<string>('some-path', 'default');
|
|
117
|
+
const [keyB] = useReqraftStorage<string>('key-b', 'b-default');
|
|
118
|
+
const [, setKeyB] = useReqraftStorage<string>('key-b', 'b-default');
|
|
119
|
+
// Capture the mount-time setter — it stays stale once other keys change.
|
|
120
|
+
const staleSetSomeVal = useRef(setSomeVal);
|
|
121
|
+
|
|
122
|
+
return (
|
|
123
|
+
<ReqoreControlGroup vertical>
|
|
124
|
+
<ReqoreP>{`some-path: ${someVal}`}</ReqoreP>
|
|
125
|
+
<ReqoreP>{`key-b: ${keyB}`}</ReqoreP>
|
|
126
|
+
<ReqoreButton onClick={() => setKeyB('b-written')}>Write B</ReqoreButton>
|
|
127
|
+
<ReqoreButton onClick={() => staleSetSomeVal.current('a-written')}>
|
|
128
|
+
Write A (stale)
|
|
129
|
+
</ReqoreButton>
|
|
130
|
+
</ReqoreControlGroup>
|
|
131
|
+
);
|
|
132
|
+
},
|
|
133
|
+
play: async ({ canvasElement }) => {
|
|
134
|
+
const canvas = within(canvasElement);
|
|
135
|
+
|
|
136
|
+
await testsWaitForText('some-path: This is a storage value');
|
|
137
|
+
// Write a second key through its own (fresh) updater.
|
|
138
|
+
await fireEvent.click(canvas.getByText('Write B'));
|
|
139
|
+
await testsWaitForText('key-b: b-written');
|
|
140
|
+
// Write the first key through the STALE mount-time updater.
|
|
141
|
+
await fireEvent.click(canvas.getByText('Write A (stale)'));
|
|
142
|
+
await testsWaitForText('some-path: a-written');
|
|
143
|
+
// The stale write must NOT have wiped the second key.
|
|
144
|
+
await testsWaitForText('key-b: b-written');
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
|
|
96
148
|
export const ValueCanBeRemoved: Story = {
|
|
97
149
|
...StorageValue,
|
|
98
150
|
parameters: {
|
package/src/index.tsx
CHANGED
|
@@ -10,8 +10,6 @@ export {
|
|
|
10
10
|
validateOptionWithRequiredGroups,
|
|
11
11
|
} from './helpers/validations';
|
|
12
12
|
export type { IValidationResult } from './helpers/validations';
|
|
13
|
-
export { thinScrollbar } from './helpers/scrollbar';
|
|
14
|
-
export * from './components/imageLightbox';
|
|
15
13
|
export { ReqraftMenu } from './components/menu/Menu';
|
|
16
14
|
export type {
|
|
17
15
|
IReqraftMenuItem,
|
|
@@ -54,9 +52,6 @@ export type {
|
|
|
54
52
|
ILspTextEdit,
|
|
55
53
|
TLspDocumentText,
|
|
56
54
|
} from './utils/lspClient.types';
|
|
57
|
-
export * from './components/composer';
|
|
58
55
|
export * from './components/smartEditor';
|
|
59
56
|
export * from './components/dpqlEditor';
|
|
60
57
|
export * from './components/qonsoleSmartInput';
|
|
61
|
-
export * from './components/supportTicket';
|
|
62
|
-
export * from './components/ticketThread';
|
|
@@ -9,6 +9,23 @@ import { TReqraftStorageValue } from '../hooks/useStorage/useStorage';
|
|
|
9
9
|
import { currentUserStore } from '../stores/currentUser/currentUser';
|
|
10
10
|
import { IReqraftProviderProps } from './ReqraftProvider';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Apply a single path write onto the current storage blob, seeding a fresh object
|
|
14
|
+
* when the user has no storage yet.
|
|
15
|
+
*
|
|
16
|
+
* `?? {}` is load-bearing: a user who has never written storage has
|
|
17
|
+
* `storage === undefined | null`, and `set(cloneDeep(undefined), …)` returns
|
|
18
|
+
* `undefined` (lodash won't set on a nullish target). Without the seed the FIRST
|
|
19
|
+
* write for such a user — e.g. accepting the cookie-consent banner — persists an
|
|
20
|
+
* empty body and silently drops the value, so the flag stays unset forever and
|
|
21
|
+
* the banner never closes. Exported for testing.
|
|
22
|
+
*/
|
|
23
|
+
export const applyStorageWrite = (
|
|
24
|
+
storage: TReqraftStorage | undefined,
|
|
25
|
+
path: string,
|
|
26
|
+
value: unknown
|
|
27
|
+
): TReqraftStorage => set(cloneDeep(storage) ?? {}, path, value);
|
|
28
|
+
|
|
12
29
|
export interface IReqraftStorageProviderProps
|
|
13
30
|
extends Pick<IReqraftProviderProps, 'waitForStorage'> {
|
|
14
31
|
children: ReactNode;
|
|
@@ -53,26 +70,35 @@ export const ReqraftUserProvider = ({ children, waitForStorage }: IReqraftStorag
|
|
|
53
70
|
includeAppPrefix: boolean = true
|
|
54
71
|
) {
|
|
55
72
|
const _path = includeAppPrefix ? `${appName}.${path}` : path;
|
|
56
|
-
|
|
73
|
+
// Base the write on the LATEST storage read straight from the store, not
|
|
74
|
+
// the blob captured in this callback's closure. A caller holding a stale
|
|
75
|
+
// updater — e.g. an imperative store subscription created on mount, before
|
|
76
|
+
// other keys had loaded — would otherwise persist an out-of-date blob and
|
|
77
|
+
// wipe every key written to storage since its closure was captured.
|
|
78
|
+
const latestStorage = currentUserStore.getState().currentUser?.storage;
|
|
79
|
+
const updatedStorage = applyStorageWrite(latestStorage, _path, value);
|
|
57
80
|
|
|
58
81
|
updateCurrentUserStorage(updatedStorage);
|
|
59
82
|
|
|
60
83
|
load({ body: { storage: updatedStorage } });
|
|
61
84
|
},
|
|
62
|
-
[appName,
|
|
85
|
+
[appName, load, updateCurrentUserStorage]
|
|
63
86
|
);
|
|
64
87
|
|
|
65
88
|
const removeStorageValue = useCallback(
|
|
66
89
|
function (path: string, includeAppPrefix: boolean = true) {
|
|
67
90
|
const _path = includeAppPrefix ? `${appName}.${path}` : path;
|
|
68
91
|
|
|
69
|
-
|
|
92
|
+
// Same as `updateStorage`: mutate the LATEST blob (never a stale closure
|
|
93
|
+
// copy), seeding a fresh object when there's no storage yet.
|
|
94
|
+
const latestStorage = currentUserStore.getState().currentUser?.storage;
|
|
95
|
+
const updatedStorage = applyStorageWrite(latestStorage, _path, null);
|
|
70
96
|
|
|
71
97
|
updateCurrentUserStorage(updatedStorage);
|
|
72
98
|
|
|
73
99
|
load({ body: { storage_path: _path } });
|
|
74
100
|
},
|
|
75
|
-
[appName,
|
|
101
|
+
[appName, load, updateCurrentUserStorage]
|
|
76
102
|
);
|
|
77
103
|
|
|
78
104
|
const contextValue = useMemo(
|