@plitzi/sdk-shared 0.33.1 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/dist/actions/cron.d.ts +34 -0
- package/dist/actions/cron.mjs +72 -0
- package/dist/actions/index.d.ts +6 -0
- package/dist/actions/index.mjs +5 -0
- package/dist/actions/triggerParams.d.ts +41 -0
- package/dist/actions/triggerParams.mjs +40 -0
- package/dist/actions/triggers.d.ts +29 -0
- package/dist/actions/triggers.mjs +4 -0
- package/dist/actions/validateDocument.d.ts +23 -0
- package/dist/actions/validateDocument.mjs +267 -0
- package/dist/auth/failureChannel.d.ts +9 -4
- package/dist/auth/failureChannel.mjs +3 -2
- package/dist/authoring/builder.d.ts +51 -0
- package/dist/authoring/builder.mjs +29 -0
- package/dist/authoring/declare.d.ts +64 -0
- package/dist/authoring/declare.mjs +4 -0
- package/dist/authoring/elementCallbacks.d.ts +13 -0
- package/dist/authoring/elementCallbacks.mjs +71 -0
- package/dist/authoring/index.d.ts +21 -0
- package/dist/authoring/index.mjs +6 -0
- package/dist/authoring/paramSpec.d.ts +51 -0
- package/dist/authoring/paramSpec.mjs +40 -0
- package/dist/authoring/spaceCallbacks.d.ts +10 -0
- package/dist/authoring/spaceCallbacks.mjs +51 -0
- package/dist/builder/contexts/BuilderContext.d.ts +2 -4
- package/dist/dataSource/getBindingsDetails.mjs +2 -2
- package/dist/dataSource/helpers/getSourceName.d.ts +1 -3
- package/dist/dataSource/helpers/getSourceName.mjs +1 -1
- package/dist/dataSource/index.d.ts +2 -0
- package/dist/dataSource/index.mjs +6 -5
- package/dist/dataSource/resolveVariables.d.ts +22 -0
- package/dist/dataSource/resolveVariables.mjs +16 -0
- package/dist/dataSource/utility/index.mjs +15 -13
- package/dist/dataSource/utility/not.d.ts +11 -0
- package/dist/dataSource/utility/not.mjs +15 -0
- package/dist/dataSource/utility/styleVariant.mjs +1 -1
- package/dist/devTools/debugCookie.d.ts +16 -0
- package/dist/devTools/debugCookie.mjs +7 -0
- package/dist/devTools/index.d.ts +6 -2
- package/dist/devTools/index.mjs +4 -2
- package/dist/devTools/interactionLog.d.ts +14 -0
- package/dist/devTools/interactionLog.mjs +4 -0
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.mjs +11 -9
- package/dist/helpers/reducerOrigin.d.ts +15 -0
- package/dist/helpers/reducerOrigin.mjs +4 -0
- package/dist/helpers/ruleEvaluator.d.ts +14 -0
- package/dist/helpers/ruleEvaluator.mjs +5 -0
- package/dist/helpers/twigWrapper/AST.d.ts +12 -1
- package/dist/helpers/twigWrapper/AST.mjs +0 -0
- package/dist/helpers/twigWrapper/Evaluator/Evaluator.mjs +7 -0
- package/dist/helpers/twigWrapper/Parser/Cursor.d.ts +7 -0
- package/dist/helpers/twigWrapper/Parser/Cursor.mjs +5 -0
- package/dist/helpers/twigWrapper/Parser/ExpressionParser.mjs +46 -8
- package/dist/helpers/twigWrapper/Parser/types.mjs +0 -0
- package/dist/helpers/twigWrapper/charClass.d.ts +7 -0
- package/dist/helpers/twigWrapper/charClass.mjs +16 -12
- package/dist/helpers/twigWrapper/tokens/tokenPatterns.mjs +2 -2
- package/dist/helpers/utils.d.ts +0 -2
- package/dist/helpers/utils.mjs +16 -19
- package/dist/hooks/index.d.ts +2 -1
- package/dist/hooks/index.mjs +4 -3
- package/dist/hooks/useFontHead.d.ts +3 -0
- package/dist/hooks/useFontHead.mjs +23 -0
- package/dist/hooks/usePlitziServiceContext.d.ts +3 -2
- package/dist/index.mjs +61 -45
- package/dist/navigation/index.d.ts +1 -1
- package/dist/navigation/index.mjs +2 -2
- package/dist/navigation/routes.d.ts +8 -0
- package/dist/navigation/routes.mjs +39 -39
- package/dist/network/graphql/builder/Mutations/Segment/SegmentAddMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Segment/SegmentAddTemplateMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Segment/SegmentUpdateMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Segment/space/elements/SegmentAddElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Segment/space/elements/SegmentCloneElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Segment/space/elements/SegmentMoveElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Segment/space/elements/SegmentRemoveElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Segment/space/elements/SegmentRenameElementMutation.d.ts +3 -0
- package/dist/network/graphql/builder/Mutations/Segment/space/elements/SegmentRenameElementMutation.mjs +9 -0
- package/dist/network/graphql/builder/Mutations/Segment/space/elements/SegmentUpdateElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Segment/space/elements/SegmentUpdateElementsMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/SpaceAddElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/SpaceAddTemplateMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/SpaceCloneElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/SpaceMoveElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/SpaceRemoveElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/SpaceRenameElementMutation.d.ts +5 -0
- package/dist/network/graphql/builder/Mutations/Space/SpaceRenameElementMutation.mjs +9 -0
- package/dist/network/graphql/builder/Mutations/Space/SpaceUpdateElementMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/SpaceUpdateElementsMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/SpaceUpdateMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/SpaceUpdateSchemaMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Space/actions/SpaceAddActionMutation.d.ts +8 -0
- package/dist/network/graphql/builder/Mutations/Space/actions/SpaceAddActionMutation.mjs +16 -0
- package/dist/network/graphql/builder/Mutations/Space/actions/SpaceRemoveActionMutation.d.ts +4 -0
- package/dist/network/graphql/builder/Mutations/Space/actions/SpaceRemoveActionMutation.mjs +16 -0
- package/dist/network/graphql/builder/Mutations/Space/actions/SpaceRunActionMutation.d.ts +4 -0
- package/dist/network/graphql/builder/Mutations/Space/actions/SpaceRunActionMutation.mjs +14 -0
- package/dist/network/graphql/builder/Mutations/Space/actions/SpaceUpdateActionMutation.d.ts +4 -0
- package/dist/network/graphql/builder/Mutations/Space/actions/SpaceUpdateActionMutation.mjs +16 -0
- package/dist/network/graphql/builder/Mutations/Space/pages/SpaceAddPageMutation.mjs +2 -3
- package/dist/network/graphql/builder/Mutations/Space/pages/SpaceUpdatePageMutation.mjs +0 -1
- package/dist/network/graphql/builder/Mutations/Style/fonts/StyleAddFontMutation.d.ts +2 -0
- package/dist/network/graphql/builder/Mutations/Style/fonts/StyleAddFontMutation.mjs +11 -0
- package/dist/network/graphql/builder/Mutations/Style/fonts/StyleRemoveFontMutation.d.ts +2 -0
- package/dist/network/graphql/builder/Mutations/Style/fonts/StyleRemoveFontMutation.mjs +11 -0
- package/dist/network/graphql/builder/Mutations/Style/fonts/StyleUpdateFontMutation.d.ts +2 -0
- package/dist/network/graphql/builder/Mutations/Style/fonts/StyleUpdateFontMutation.mjs +11 -0
- package/dist/network/graphql/builder/Mutations/index.d.ts +24 -0
- package/dist/network/graphql/builder/Mutations/index.mjs +150 -132
- package/dist/network/graphql/builder/Queries/InitQuery.mjs +1 -2
- package/dist/network/graphql/builder/Queries/Segment/SegmentQuery.mjs +0 -1
- package/dist/network/graphql/builder/Queries/Segment/SegmentsQuery.mjs +0 -1
- package/dist/network/graphql/builder/Queries/Space/SpaceActionEventsQuery.d.ts +9 -0
- package/dist/network/graphql/builder/Queries/Space/SpaceActionEventsQuery.mjs +30 -0
- package/dist/network/graphql/builder/Queries/Space/SpaceActionTasksQuery.d.ts +6 -0
- package/dist/network/graphql/builder/Queries/Space/SpaceActionTasksQuery.mjs +16 -0
- package/dist/network/graphql/builder/Queries/Space/SpaceActionsQuery.d.ts +9 -0
- package/dist/network/graphql/builder/Queries/Space/SpaceActionsQuery.mjs +25 -0
- package/dist/network/graphql/builder/Queries/Space/SpaceCheckActionQuery.d.ts +6 -0
- package/dist/network/graphql/builder/Queries/Space/SpaceCheckActionQuery.mjs +17 -0
- package/dist/network/graphql/builder/Queries/Space/SpaceQuotaQuery.d.ts +30 -0
- package/dist/network/graphql/builder/Queries/Space/SpaceQuotaQuery.mjs +40 -0
- package/dist/network/graphql/builder/Queries/index.d.ts +16 -0
- package/dist/network/graphql/builder/Queries/index.mjs +24 -14
- package/dist/network/graphql/sdk/Queries/InitQuery.d.ts +4 -0
- package/dist/network/graphql/sdk/Queries/InitQuery.mjs +5 -2
- package/dist/network/graphql/sdk/Queries/Segment/SegmentQuery.mjs +0 -1
- package/dist/network/graphql/sdk/Queries/Segment/SegmentsQuery.mjs +0 -1
- package/dist/network/spaceEvents.d.ts +20 -1
- package/dist/network/spaceEvents.mjs +89 -74
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.mjs +2 -1
- package/dist/schema/serverElements.d.ts +16 -0
- package/dist/schema/serverElements.mjs +18 -0
- package/dist/server/actions/useActionsSync.d.ts +10 -0
- package/dist/server/actions/useActionsSync.mjs +7 -0
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.mjs +5 -4
- package/dist/server/rsc/refreshRsc.d.ts +11 -1
- package/dist/server/rsc/refreshRsc.mjs +30 -12
- package/dist/server/rsc/useRscSync.mjs +20 -13
- package/dist/state/runtimeStatePersist.mjs +4 -3
- package/dist/store/actionRuns/actionRunsRecorder.d.ts +36 -0
- package/dist/store/actionRuns/actionRunsRecorder.mjs +39 -0
- package/dist/store/actionRuns/actionRunsStore.d.ts +16 -0
- package/dist/store/actionRuns/actionRunsStore.mjs +5 -0
- package/dist/store/actionRuns/index.d.ts +6 -0
- package/dist/store/actionRuns/index.mjs +4 -0
- package/dist/store/actionRuns/useActionRuns.d.ts +13 -0
- package/dist/store/actionRuns/useActionRuns.mjs +10 -0
- package/dist/store/index.d.ts +46 -45
- package/dist/store/index.mjs +6 -3
- package/dist/store/renderSettings.d.ts +3 -0
- package/dist/store/renderSettings.mjs +17 -5
- package/dist/store/tracing/tracingCollector.d.ts +1 -1
- package/dist/store/tracing/tracingCollector.mjs +37 -35
- package/dist/store/tracing/tracingStore.d.ts +13 -0
- package/dist/store/tracing/tracingStore.mjs +3 -3
- package/dist/style/fontAssets.d.ts +12 -0
- package/dist/style/fontAssets.mjs +18 -0
- package/dist/style/fontValidation.d.ts +8 -0
- package/dist/style/fontValidation.mjs +107 -0
- package/dist/style/fonts.d.ts +74 -0
- package/dist/style/fonts.mjs +198 -0
- package/dist/style/fontsFromCss.d.ts +27 -0
- package/dist/style/fontsFromCss.mjs +43 -0
- package/dist/style/index.d.ts +4 -0
- package/dist/style/index.mjs +5 -1
- package/dist/style/styleConstants.d.ts +2 -2
- package/dist/style/styleConstants.mjs +1 -0
- package/dist/theme/ThemeProvider.d.ts +36 -6
- package/dist/theme/ThemeProvider.mjs +49 -35
- package/dist/theme/ThemeScope.d.ts +16 -0
- package/dist/theme/ThemeScope.mjs +6 -0
- package/dist/theme/index.d.ts +7 -1
- package/dist/theme/index.mjs +6 -2
- package/dist/theme/themeCookie.d.ts +30 -0
- package/dist/theme/themeCookie.mjs +24 -0
- package/dist/theme/themeStore.d.ts +40 -0
- package/dist/theme/themeStore.mjs +17 -0
- package/dist/theme/useTheme.d.ts +29 -0
- package/dist/theme/useTheme.mjs +20 -0
- package/dist/types/ActionTypes.d.ts +396 -0
- package/dist/types/ActionTypes.mjs +0 -0
- package/dist/types/AuthTypes.d.ts +23 -2
- package/dist/types/BuilderTypes.d.ts +0 -12
- package/dist/types/CommonTypes.d.ts +13 -0
- package/dist/types/DevToolsTypes.d.ts +57 -14
- package/dist/types/EventBridgeTypes.d.ts +1 -1
- package/dist/types/InteractionTypes.d.ts +23 -3
- package/dist/types/PluginTypes.d.ts +0 -3
- package/dist/types/SchemaTypes.d.ts +29 -4
- package/dist/types/ServerTypes.d.ts +390 -46
- package/dist/types/SpaceTypes.d.ts +16 -0
- package/dist/types/StoreTypes.d.ts +181 -3
- package/dist/types/StyleTypes.d.ts +83 -4
- package/dist/types/TemplateTypes.d.ts +20 -0
- package/dist/types/TemplateTypes.mjs +0 -0
- package/dist/types/ThemeTypes.d.ts +28 -1
- package/dist/types/index.d.ts +2 -0
- package/eslint.config.mjs +2 -0
- package/package.json +244 -29
- package/vite.config.ts +27 -7
package/dist/devTools/index.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { default as debugCookieName } from './debugCookie';
|
|
1
2
|
import { default as DevToolsContext } from './DevToolsContext';
|
|
3
|
+
import { default as isInteractionFlow } from './interactionLog';
|
|
2
4
|
import { default as PlitziConsole } from './utils/PlitziConsole';
|
|
3
|
-
export * from './
|
|
5
|
+
export * from './debugCookie';
|
|
4
6
|
export * from './DevToolsContext';
|
|
5
|
-
export
|
|
7
|
+
export * from './interactionLog';
|
|
8
|
+
export * from './utils/PlitziConsole';
|
|
9
|
+
export { PlitziConsole, DevToolsContext, debugCookieName, isInteractionFlow };
|
package/dist/devTools/index.mjs
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import e from "./DevToolsContext.mjs";
|
|
2
|
-
import
|
|
3
|
-
|
|
2
|
+
import { debugCookieName as t } from "./debugCookie.mjs";
|
|
3
|
+
import n from "./interactionLog.mjs";
|
|
4
|
+
import r, { createStoreDevToolsLogger as i, pConsole as a } from "./utils/PlitziConsole.mjs";
|
|
5
|
+
export { e as DevToolsContext, r as PlitziConsole, i as createStoreDevToolsLogger, t as debugCookieName, n as isInteractionFlow, a as pConsole };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InteractionFlowParams, LogInteraction } from '../types/DevToolsTypes';
|
|
2
|
+
/**
|
|
3
|
+
* Is this entry a flow that finished, as opposed to a note about one of its steps?
|
|
4
|
+
*
|
|
5
|
+
* `nodes` is the discriminant because it is the thing the flow view is made of, and a note — written from inside
|
|
6
|
+
* the traversal, while the flow is still running — can never have one. It is read through `Partial` because a log
|
|
7
|
+
* written by an older build can carry `nodes: undefined` rather than omitting the key: the declared type says
|
|
8
|
+
* that cannot happen, and the crash this guard exists to prevent says it can.
|
|
9
|
+
*
|
|
10
|
+
* Lives here rather than beside the type because `types/` holds types and nothing else: a value exported from
|
|
11
|
+
* that barrel turns every consumer's type-only import into a runtime one.
|
|
12
|
+
*/
|
|
13
|
+
export declare const isInteractionFlow: (params: LogInteraction["params"]) => params is InteractionFlowParams;
|
|
14
|
+
export default isInteractionFlow;
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { default as syntaxHighlight } from './syntaxHighlight';
|
|
|
4
4
|
export * from './fetchManifest';
|
|
5
5
|
export * from './formatDate';
|
|
6
6
|
export * from './generateFacade';
|
|
7
|
+
export * from './reducerOrigin';
|
|
8
|
+
export * from './ruleEvaluator';
|
|
7
9
|
export * from './syntaxHighlight';
|
|
8
10
|
export * from './twigWrapper';
|
|
9
11
|
export * from './utils';
|
package/dist/helpers/index.mjs
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import e from "./
|
|
2
|
-
import t from "./
|
|
3
|
-
import n from "./
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { filters as e } from "./twigWrapper/filters/filters.mjs";
|
|
2
|
+
import { processTwig as t } from "./twigWrapper/processTwig/processTwig.mjs";
|
|
3
|
+
import { hasValidToken as n } from "./twigWrapper/tokens/hasValidToken.mjs";
|
|
4
|
+
import r from "./fetchManifest.mjs";
|
|
5
|
+
import i from "./generateFacade.mjs";
|
|
6
|
+
import a from "./syntaxHighlight.mjs";
|
|
7
|
+
import { formatDate as o, formatDateUTC as s, formatFromNow as c, formatUTCToLocal as l, getDurationMs as u, isDate as d, isValidFormat as f, parseDate as p, toUnixSeconds as m } from "./formatDate.mjs";
|
|
8
|
+
import { isUserEdit as h } from "./reducerOrigin.mjs";
|
|
9
|
+
import { evaluateRuleGroup as g } from "./ruleEvaluator.mjs";
|
|
10
|
+
import { ParamsFromURL as _, delay as v, emptyObject as y, getDisplayName as b, getKeyDecoded as x, getPathsFromObeject as S, hexToRGB as C, isInViewport as w, makeId as T } from "./utils.mjs";
|
|
9
11
|
import { disableReactDevTools as E } from "./security.mjs";
|
|
10
12
|
import { createStripTypenameLink as D, stripTypenameDeep as O } from "./stripTypename.mjs";
|
|
11
|
-
export {
|
|
13
|
+
export { _ as ParamsFromURL, D as createStripTypenameLink, v as delay, E as disableReactDevTools, y as emptyObject, g as evaluateRuleGroup, r as fetchManifest, e as filters, o as formatDate, s as formatDateUTC, c as formatFromNow, l as formatUTCToLocal, i as generateFacade, b as getDisplayName, u as getDurationMs, x as getKeyDecoded, S as getPathsFromObeject, n as hasValidToken, C as hexToRGB, d as isDate, w as isInViewport, h as isUserEdit, f as isValidFormat, T as makeId, p as parseDate, t as processTwig, O as stripTypenameDeep, a as syntaxHighlight, m as toUnixSeconds };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a reducer action is this session's user editing — the only kind of change the undo history and the save
|
|
3
|
+
* queue are for.
|
|
4
|
+
*
|
|
5
|
+
* Two kinds of dispatch look like an edit and are not. `fromSubscriptions` is another session's edit arriving over
|
|
6
|
+
* the space stream: an agent writing through the MCP, or a collaborator. `queryFailed` is the save queue putting
|
|
7
|
+
* back the state a rejected mutation left behind. Recording either as undoable hands the user a button that reverts
|
|
8
|
+
* work this session never did — an agent's whole apply, in one click — and re-queueing either sends the server a
|
|
9
|
+
* change it just gave us, or just refused.
|
|
10
|
+
*/
|
|
11
|
+
export type ReducerActionOrigin = {
|
|
12
|
+
fromSubscriptions?: boolean;
|
|
13
|
+
queryFailed?: boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare const isUserEdit: (action: ReducerActionOrigin) => boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RuleGroup, RuleValue } from '@plitzi/plitzi-ui/QueryBuilder';
|
|
2
|
+
/**
|
|
3
|
+
* Evaluates a `when` rule group against a value bag.
|
|
4
|
+
*
|
|
5
|
+
* A rule group has to be evaluated on both sides — the browser for an interaction, the server for an action — and
|
|
6
|
+
* the only implementation lives in `plitzi-ui`. This wrapper exists for two reasons beyond naming:
|
|
7
|
+
*
|
|
8
|
+
* - the `@plitzi/plitzi-ui/QueryBuilder` BARREL pulls the React components with it, which is the boot weight the
|
|
9
|
+
* MCP already paid for once. `/QueryBuilder/helpers` carries the evaluator and nothing that renders;
|
|
10
|
+
* - it keeps `plitzi-ui` out of the server's dependency list. `sdk-shared` already depends on it, so the chain is
|
|
11
|
+
* declared in exactly one place.
|
|
12
|
+
*/
|
|
13
|
+
export declare const evaluateRuleGroup: (group: RuleGroup, values: Record<string, RuleValue>) => boolean;
|
|
14
|
+
export type { Rule, RuleGroup, RuleValue } from '@plitzi/plitzi-ui/QueryBuilder';
|
|
@@ -44,7 +44,7 @@ export type BreakNode = {
|
|
|
44
44
|
export type ContinueNode = {
|
|
45
45
|
readonly type: 'continue';
|
|
46
46
|
};
|
|
47
|
-
export type Expression = LiteralNode | ArrayLiteralNode | ObjectLiteralNode | RangeNode | PathNode | FunctionNode | FilterExpression | ConcatNode | UnaryNode | BinaryNode | DefaultNode | TernaryNode | ArrowFunctionNode;
|
|
47
|
+
export type Expression = LiteralNode | ArrayLiteralNode | ObjectLiteralNode | RangeNode | PathNode | IndexNode | FunctionNode | FilterExpression | ConcatNode | UnaryNode | BinaryNode | DefaultNode | TernaryNode | ArrowFunctionNode;
|
|
48
48
|
export type LiteralNode = {
|
|
49
49
|
readonly type: 'literal';
|
|
50
50
|
readonly value: string | number | boolean;
|
|
@@ -69,6 +69,17 @@ export type PathNode = {
|
|
|
69
69
|
readonly type: 'path';
|
|
70
70
|
readonly segments: readonly string[];
|
|
71
71
|
};
|
|
72
|
+
/**
|
|
73
|
+
* Member access whose key is not known until the template runs: `items[i]`, `rows[page - 1]`, `record[field]`.
|
|
74
|
+
*
|
|
75
|
+
* A bracket holding a literal never reaches here — the parser folds `items[0]` and `record['title']` straight into
|
|
76
|
+
* a {@link PathNode}'s segments, so the common case stays one flat walk with nothing to evaluate per access.
|
|
77
|
+
*/
|
|
78
|
+
export type IndexNode = {
|
|
79
|
+
readonly type: 'index';
|
|
80
|
+
readonly object: Expression;
|
|
81
|
+
readonly index: Expression;
|
|
82
|
+
};
|
|
72
83
|
export type FunctionNode = {
|
|
73
84
|
readonly type: 'function';
|
|
74
85
|
readonly name: string;
|
|
File without changes
|
|
@@ -121,6 +121,7 @@ var c = [], l = (e, t, n = !1) => {
|
|
|
121
121
|
}
|
|
122
122
|
case "range": return this.evalRange(t.start, t.end);
|
|
123
123
|
case "path": return this.resolvePath(t.segments);
|
|
124
|
+
case "index": return this.resolveIndex(t.object, t.index);
|
|
124
125
|
case "function": return this.evalFunction(t.name, t.args);
|
|
125
126
|
case "filter": return this.applyFilters(this.evalExpression(t.subject), t.filters);
|
|
126
127
|
case "concat": {
|
|
@@ -156,6 +157,12 @@ var c = [], l = (e, t, n = !1) => {
|
|
|
156
157
|
}
|
|
157
158
|
return n;
|
|
158
159
|
}
|
|
160
|
+
resolveIndex(e, t) {
|
|
161
|
+
let n = this.evalExpression(e);
|
|
162
|
+
if (n == null) return;
|
|
163
|
+
let r = this.evalExpression(t);
|
|
164
|
+
if (r != null) return n[String(r)];
|
|
165
|
+
}
|
|
159
166
|
evalRange(e, t) {
|
|
160
167
|
let n = Number(this.evalExpression(e)), r = Number(this.evalExpression(t)), i = n <= r, a = (i ? r - n : n - r) + 1, o = Array(a);
|
|
161
168
|
for (let e = 0; e < a; e++) o[e] = i ? n + e : n - e;
|
|
@@ -7,6 +7,13 @@ export declare class Cursor {
|
|
|
7
7
|
protected at(offset: number): number;
|
|
8
8
|
protected skipWs(): void;
|
|
9
9
|
protected scanName(): string;
|
|
10
|
+
/**
|
|
11
|
+
* Scans a path segment that is a plain array index (`0`, `12`), returning '' when not on one.
|
|
12
|
+
*
|
|
13
|
+
* Digits only, deliberately: `scanNumber` would read `0.title` as the number `0.` and leave the cursor past the
|
|
14
|
+
* dot that separates it from the next segment. A key is a key here — `items.0.title` is three of them.
|
|
15
|
+
*/
|
|
16
|
+
protected scanIndex(): string;
|
|
10
17
|
protected scanStringLiteral(): string;
|
|
11
18
|
protected scanNumber(): number;
|
|
12
19
|
protected matchKeyword(kw: string): boolean;
|
|
@@ -24,6 +24,11 @@ var o = class {
|
|
|
24
24
|
if (!this.eof() && r(this.src.charCodeAt(this.pos))) for (this.pos++; !this.eof() && i(this.src.charCodeAt(this.pos));) this.pos++;
|
|
25
25
|
return this.src.slice(e, this.pos);
|
|
26
26
|
}
|
|
27
|
+
scanIndex() {
|
|
28
|
+
let e = this.pos;
|
|
29
|
+
for (; !this.eof() && t(this.src.charCodeAt(this.pos));) this.pos++;
|
|
30
|
+
return this.src.slice(e, this.pos);
|
|
31
|
+
}
|
|
27
32
|
scanStringLiteral() {
|
|
28
33
|
let t = this.src.charCodeAt(this.pos);
|
|
29
34
|
this.pos++;
|
|
@@ -207,22 +207,60 @@ var r = (e) => new a(e).parseTernary(), i = (e) => new a(e).parseApplyChain(), a
|
|
|
207
207
|
if (this.peek() === e.LParen) {
|
|
208
208
|
this.pos++;
|
|
209
209
|
let n = this.parseArgList(e.RParen);
|
|
210
|
-
return this.maybeTrailingFilters({
|
|
210
|
+
return this.maybeTrailingFilters(this.parseAccessChain({
|
|
211
211
|
type: "function",
|
|
212
212
|
name: t,
|
|
213
213
|
args: n
|
|
214
|
-
});
|
|
214
|
+
}, null));
|
|
215
215
|
}
|
|
216
216
|
let n = [t];
|
|
217
|
-
|
|
217
|
+
return this.maybeTrailingFilters(this.parseAccessChain({
|
|
218
|
+
type: "path",
|
|
219
|
+
segments: n
|
|
220
|
+
}, n));
|
|
221
|
+
}
|
|
222
|
+
parseAccessChain(t, n) {
|
|
223
|
+
let r = t, i = n;
|
|
224
|
+
for (;;) {
|
|
225
|
+
let t = this.peek();
|
|
226
|
+
if (t === e.Dot) {
|
|
227
|
+
let e = this.pos;
|
|
228
|
+
this.pos++;
|
|
229
|
+
let t = this.scanName() || this.scanIndex();
|
|
230
|
+
if (!t) {
|
|
231
|
+
this.pos = e;
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
i ? i.push(t) : r = {
|
|
235
|
+
type: "index",
|
|
236
|
+
object: r,
|
|
237
|
+
index: {
|
|
238
|
+
type: "literal",
|
|
239
|
+
value: t
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
if (t !== e.LBracket) break;
|
|
218
245
|
this.pos++;
|
|
219
|
-
let
|
|
220
|
-
e && n.
|
|
246
|
+
let n = this.parseTernary();
|
|
247
|
+
if (this.skipWs(), this.peek() === e.RBracket && this.pos++, i && n.type === "literal" && typeof n.value != "boolean") {
|
|
248
|
+
i.push(String(n.value));
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
i &&= (r = {
|
|
252
|
+
type: "path",
|
|
253
|
+
segments: i
|
|
254
|
+
}, null), r = {
|
|
255
|
+
type: "index",
|
|
256
|
+
object: r,
|
|
257
|
+
index: n
|
|
258
|
+
};
|
|
221
259
|
}
|
|
222
|
-
return
|
|
260
|
+
return i ? {
|
|
223
261
|
type: "path",
|
|
224
|
-
segments:
|
|
225
|
-
}
|
|
262
|
+
segments: i
|
|
263
|
+
} : r;
|
|
226
264
|
}
|
|
227
265
|
maybeTrailingFilters(t) {
|
|
228
266
|
return this.skipWs(), this.peek() === e.Pipe ? {
|
|
File without changes
|
|
@@ -40,5 +40,12 @@ export declare const isPathPart: (c: number) => boolean;
|
|
|
40
40
|
export declare const isDigit: (c: number) => boolean;
|
|
41
41
|
export declare const isSpace: (c: number) => boolean;
|
|
42
42
|
export declare const isSimpleIdentifier: (s: string) => boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Whether the whole string is a dotted path this file's fast path can resolve: `user.name`, `a.b.c`, `items.0.title`.
|
|
45
|
+
*
|
|
46
|
+
* A segment after the first may be a plain number — an array index is read as a literal key like any other, which is
|
|
47
|
+
* exactly what `resolveDottedPath` does. The FIRST segment may not: `1.5` is a number, and treating it as a path
|
|
48
|
+
* would resolve `context[1][5]` for a template that says one and a half.
|
|
49
|
+
*/
|
|
43
50
|
export declare const isDottedPath: (s: string) => boolean;
|
|
44
51
|
export declare const isVariableName: (s: string) => boolean;
|
|
@@ -40,20 +40,24 @@ var e = {
|
|
|
40
40
|
for (let t = 1; t < r; t++) if (!n(e.charCodeAt(t))) return !1;
|
|
41
41
|
return !0;
|
|
42
42
|
}, s = (r) => {
|
|
43
|
-
let
|
|
44
|
-
if (
|
|
45
|
-
let
|
|
46
|
-
for (let
|
|
47
|
-
let
|
|
48
|
-
if (
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (a && !t(i) || !a && !n(i)) return !1;
|
|
53
|
-
a = !1;
|
|
43
|
+
let a = r.length;
|
|
44
|
+
if (a === 0 || !t(r.charCodeAt(0))) return !1;
|
|
45
|
+
let o = !1, s = !1;
|
|
46
|
+
for (let c = 1; c < a; c++) {
|
|
47
|
+
let a = r.charCodeAt(c);
|
|
48
|
+
if (a === e.Dot) {
|
|
49
|
+
if (o) return !1;
|
|
50
|
+
o = !0, s = !1;
|
|
51
|
+
continue;
|
|
54
52
|
}
|
|
53
|
+
if (o) {
|
|
54
|
+
if (s = i(a), !s && !t(a)) return !1;
|
|
55
|
+
o = !1;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (s ? !i(a) : !n(a)) return !1;
|
|
55
59
|
}
|
|
56
|
-
return !
|
|
60
|
+
return !o;
|
|
57
61
|
}, c = (e) => o(e);
|
|
58
62
|
//#endregion
|
|
59
63
|
export { e as Char, i as isDigit, s as isDottedPath, n as isIdentPart, t as isIdentStart, r as isPathPart, o as isSimpleIdentifier, a as isSpace, c as isVariableName };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/helpers/twigWrapper/tokens/tokenPatterns.ts
|
|
2
|
-
var e = "[a-zA-Z_][a-zA-Z0-9_]*(?:-[a-zA-Z0-9_]+)*", t = `${`${e}(?:\\??\\.${
|
|
2
|
+
var e = "[a-zA-Z_][a-zA-Z0-9_]*(?:-[a-zA-Z0-9_]+)*", t = `(?:${e}|\\d+)`, n = `\\[\\s*(?:\\d+|'[^']*'|"[^"]*"|${e}(?:\\.${t})*)\\s*\\]`, r = `${`${e}(?:${n})*(?:\\??\\.${t}(?:${n})*)*`}(?:\\s*\\?\\?\\s*[^|{}]+?)?(?:\\s*\\|\\s*[a-zA-Z_]+(?:\\([^)]*\\))?)*`, i = `\\{\\{\\s*${r}\\s*\\}\\}`, a = `(?:${`\\{\\{\\{\\s*${r}\\s*\\}\\}\\}`}|${i})`, o = new RegExp(a, "g"), s = RegExp(`^${a}$`);
|
|
3
3
|
//#endregion
|
|
4
|
-
export {
|
|
4
|
+
export { o as TOKEN_REGEX, s as TOKEN_STRICT_REGEX };
|
package/dist/helpers/utils.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
|
-
export declare const isTestMode: () => boolean;
|
|
3
2
|
export declare function getDisplayName<T = unknown>(WrappedComponent?: FC<T>): string;
|
|
4
3
|
declare const emptyObject: {};
|
|
5
4
|
export { emptyObject };
|
|
6
|
-
export declare const generateID: (prevId?: string) => string;
|
|
7
5
|
export declare const getPathsFromObeject: (object?: {
|
|
8
6
|
[key: string]: unknown;
|
|
9
7
|
}, basePath?: string, glue?: string, skipArray?: boolean) => string[];
|
package/dist/helpers/utils.mjs
CHANGED
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
import { get as e } from "@plitzi/plitzi-ui/helpers";
|
|
2
2
|
//#region src/helpers/utils.ts
|
|
3
|
-
|
|
4
|
-
function n(e) {
|
|
3
|
+
function t(e) {
|
|
5
4
|
return e && (e.displayName || e.name) || "Component";
|
|
6
5
|
}
|
|
7
|
-
var
|
|
8
|
-
Object.freeze(
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return typeof e[a] != "object" || Array.isArray(e[a]) && r ? [...i, s] : [
|
|
15
|
-
...i,
|
|
6
|
+
var n = {};
|
|
7
|
+
Object.freeze(n);
|
|
8
|
+
var r = (e, t = "", n = ".", i = !1) => !e || typeof e != "object" ? [] : Object.keys(e).reduce((a, o) => {
|
|
9
|
+
o = o.replaceAll(n, "").replaceAll(".", "");
|
|
10
|
+
let s = `${t}${t ? n : ""}${o}`;
|
|
11
|
+
return typeof e[o] != "object" || Array.isArray(e[o]) && i ? [...a, s] : [
|
|
12
|
+
...a,
|
|
16
13
|
s,
|
|
17
|
-
...
|
|
14
|
+
...r(e[o], s, n, i)
|
|
18
15
|
];
|
|
19
|
-
}, []),
|
|
16
|
+
}, []), i = (e, t = !0, n = !0) => {
|
|
20
17
|
let r = "", i = "abcdefghijklmnopqrstuvwxyz";
|
|
21
18
|
t && (i = `ABCDEFGHIJKLMNOPQRSTUVWXYZ${i}`), n && (i = `${i}0123456789`);
|
|
22
19
|
let a = i.length;
|
|
23
20
|
for (let t = 0; t < e; t++) r += i.charAt(Math.floor(Math.random() * a));
|
|
24
21
|
return r;
|
|
25
22
|
};
|
|
26
|
-
function
|
|
23
|
+
function a(t, n) {
|
|
27
24
|
if (!t) return 0;
|
|
28
25
|
let r = {};
|
|
29
26
|
try {
|
|
@@ -34,7 +31,7 @@ function c(t, n) {
|
|
|
34
31
|
}
|
|
35
32
|
return n ? e(r, "data.spaceId", 0) : r;
|
|
36
33
|
}
|
|
37
|
-
function
|
|
34
|
+
function o(e) {
|
|
38
35
|
!e && typeof window < "u" && (e = window.location.search);
|
|
39
36
|
let t = {};
|
|
40
37
|
if (!e || e.length === 0) return t;
|
|
@@ -45,12 +42,12 @@ function l(e) {
|
|
|
45
42
|
}
|
|
46
43
|
return t;
|
|
47
44
|
}
|
|
48
|
-
var
|
|
45
|
+
var s = (e) => new Promise((t) => {
|
|
49
46
|
setTimeout(t, e);
|
|
50
|
-
}),
|
|
47
|
+
}), c = (e) => {
|
|
51
48
|
let { top: t, left: n, bottom: r, right: i } = e.getBoundingClientRect(), { innerHeight: a, innerWidth: o } = window, { documentElement: { clientHeight: s, clientWidth: c } } = document;
|
|
52
49
|
return t >= 0 && n >= 0 && r <= (a || s) && i <= (o || c);
|
|
53
|
-
},
|
|
50
|
+
}, l = (e, t) => {
|
|
54
51
|
if (!e) return !1;
|
|
55
52
|
let n, r, i;
|
|
56
53
|
if (e.length === 7) [n, r, i] = (e.match(/\w\w/g) ?? []).map((e) => parseInt(e, 16));
|
|
@@ -59,4 +56,4 @@ var u = (e) => new Promise((t) => {
|
|
|
59
56
|
return t ? `rgba(${n},${r},${i},${t})` : `rgb(${n},${r},${i})`;
|
|
60
57
|
};
|
|
61
58
|
//#endregion
|
|
62
|
-
export {
|
|
59
|
+
export { o as ParamsFromURL, s as delay, n as emptyObject, t as getDisplayName, a as getKeyDecoded, r as getPathsFromObeject, l as hexToRGB, c as isInViewport, i as makeId };
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { default as useFontHead } from './useFontHead';
|
|
1
2
|
import { default as useNetwork } from './useNetwork';
|
|
2
3
|
import { default as usePlitziServiceContext } from './usePlitziServiceContext';
|
|
3
4
|
export * from './useNetwork';
|
|
4
5
|
export * from './usePlitziServiceContext';
|
|
5
|
-
export { useNetwork, usePlitziServiceContext };
|
|
6
|
+
export { useFontHead, useNetwork, usePlitziServiceContext };
|
package/dist/hooks/index.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import e from "./
|
|
2
|
-
import t
|
|
3
|
-
|
|
1
|
+
import e from "./useFontHead.mjs";
|
|
2
|
+
import t from "./useNetwork.mjs";
|
|
3
|
+
import n, { PlitziServiceContext as r, PlitziServiceProvider as i } from "./usePlitziServiceContext.mjs";
|
|
4
|
+
export { r as PlitziServiceContext, i as PlitziServiceProvider, e as useFontHead, t as useNetwork, n as usePlitziServiceContext };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useEffect as e } from "react";
|
|
2
|
+
//#region src/hooks/useFontHead.ts
|
|
3
|
+
var t = "data-plitzi-fonts", n = (n) => {
|
|
4
|
+
e(() => {
|
|
5
|
+
if (typeof document > "u") return;
|
|
6
|
+
let { head: e } = document, r = [];
|
|
7
|
+
if (n.preconnect.forEach((t) => {
|
|
8
|
+
if (e.querySelector(`link[rel="preconnect"][href="${CSS.escape(t.href)}"]`)) return;
|
|
9
|
+
let n = document.createElement("link");
|
|
10
|
+
n.rel = "preconnect", n.href = t.href, t.crossorigin && (n.crossOrigin = ""), e.appendChild(n), r.push(n);
|
|
11
|
+
}), n.links.forEach((t) => {
|
|
12
|
+
if (e.querySelector(`link[rel="${t.rel}"][href="${CSS.escape(t.href)}"]`)) return;
|
|
13
|
+
let n = document.createElement("link");
|
|
14
|
+
n.rel = t.rel, n.href = t.href, t.as && (n.as = t.as), t.type && (n.type = t.type), t.crossorigin && (n.crossOrigin = ""), e.appendChild(n), r.push(n);
|
|
15
|
+
}), n.faces && !e.querySelector(`style[${t}]`)) {
|
|
16
|
+
let i = document.createElement("style");
|
|
17
|
+
i.setAttribute(t, ""), i.textContent = n.faces, e.appendChild(i), r.push(i);
|
|
18
|
+
}
|
|
19
|
+
return () => r.forEach((e) => e.remove());
|
|
20
|
+
}, [n]);
|
|
21
|
+
};
|
|
22
|
+
//#endregion
|
|
23
|
+
export { n as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BuilderContextValue } from '../builder';
|
|
2
2
|
import { NetworkContextValue } from '../network';
|
|
3
|
-
import { ComponentContextValue, EventBridgeContextValue, InteractionsContextValue, PluginsContextValue,
|
|
3
|
+
import { ComponentContextValue, EventBridgeContextValue, InteractionsContextValue, PluginsContextValue, ColorScheme, SegmentsContextValue } from '../types';
|
|
4
4
|
import { Context, ReactNode, RefObject } from 'react';
|
|
5
5
|
export type PlitziServiceContextValue<TEventBridge = any, TInteractions = any> = {
|
|
6
6
|
settings: {
|
|
@@ -8,7 +8,8 @@ export type PlitziServiceContextValue<TEventBridge = any, TInteractions = any> =
|
|
|
8
8
|
previewMode?: boolean;
|
|
9
9
|
environment?: string;
|
|
10
10
|
[key: string]: unknown;
|
|
11
|
-
|
|
11
|
+
/** Already resolved: an element paints in one of two schemes and has no use for the word `system`. */
|
|
12
|
+
theme: ColorScheme;
|
|
12
13
|
};
|
|
13
14
|
root: {
|
|
14
15
|
baseElementId: string;
|