@player-ui/reference-assets-plugin 0.15.5--canary.888.37918 → 0.15.5
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/ReferenceAssetsPlugin.native.js +3734 -5558
- package/dist/ReferenceAssetsPlugin.native.js.map +1 -1
- package/dist/cjs/index.cjs +11 -100
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/index.legacy-esm.js +11 -100
- package/dist/index.mjs +11 -100
- package/dist/index.mjs.map +1 -1
- package/dist/xlr/Assets.ActionAsset.json +2 -2
- package/dist/xlr/Assets.ChatMessageAsset.json +1 -1
- package/dist/xlr/Assets.ChoiceAsset.json +5 -5
- package/dist/xlr/Assets.CollectionAsset.json +1 -1
- package/dist/xlr/Assets.ImageAsset.json +2 -2
- package/dist/xlr/Assets.InputAsset.json +2 -2
- package/dist/xlr/Assets.TextAsset.json +4 -4
- package/dist/xlr/Expressions.send.json +1 -1
- package/dist/xlr/Views.InfoAsset.json +1 -1
- package/package.json +9 -11
- package/src/__tests__/plugin.test.ts +2 -162
- package/src/assets/action/types.ts +3 -2
- package/src/assets/choice/types.ts +3 -2
- package/src/assets/input/types.ts +3 -2
- package/src/plugin.ts +0 -8
- package/src/plugins/chat-ui-demo-plugin.ts +13 -76
- package/src/plugins/reference-assets-transform-plugin.ts +12 -15
- package/src/plugins/error-recovery-plugin.ts +0 -37
- package/types/plugins/error-recovery-plugin.d.ts +0 -7
package/dist/cjs/index.cjs
CHANGED
|
@@ -204,12 +204,6 @@ var import_meta_plugin = require("@player-ui/meta-plugin");
|
|
|
204
204
|
var import_async_node_plugin2 = require("@player-ui/async-node-plugin");
|
|
205
205
|
var import_player = require("@player-ui/player");
|
|
206
206
|
var import_expression_plugin = require("@player-ui/expression-plugin");
|
|
207
|
-
var isInChatDemo = (node) => {
|
|
208
|
-
if (node.parent?.parent?.type === import_player.NodeType.View && node.parent.parent.value.id === "chat-view") {
|
|
209
|
-
return true;
|
|
210
|
-
}
|
|
211
|
-
return node.parent?.parent?.type === import_player.NodeType.Asset && node.parent.parent.value.id.startsWith("collection-async-chat-demo");
|
|
212
|
-
};
|
|
213
207
|
var createContentFromMessage = (message, id) => ({
|
|
214
208
|
asset: {
|
|
215
209
|
type: "chat-message",
|
|
@@ -223,23 +217,6 @@ var createContentFromMessage = (message, id) => ({
|
|
|
223
217
|
}
|
|
224
218
|
}
|
|
225
219
|
});
|
|
226
|
-
var createBrokenRenderContent = (id) => ({
|
|
227
|
-
asset: {
|
|
228
|
-
id,
|
|
229
|
-
type: "input",
|
|
230
|
-
binding: "binding",
|
|
231
|
-
label: 100
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
|
-
var createBrokenTransformContent = (id) => ({
|
|
235
|
-
asset: {
|
|
236
|
-
id,
|
|
237
|
-
type: "input",
|
|
238
|
-
binding: {
|
|
239
|
-
prop: "value"
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
220
|
var ChatUiDemoPlugin = class {
|
|
244
221
|
constructor() {
|
|
245
222
|
this.name = "chat-ui-demo-plugin";
|
|
@@ -257,7 +234,7 @@ var ChatUiDemoPlugin = class {
|
|
|
257
234
|
let deferredPromises = {};
|
|
258
235
|
let allPromiseKeys = [];
|
|
259
236
|
let counter = 0;
|
|
260
|
-
const sendMessage = (context,
|
|
237
|
+
const sendMessage = (context, message, nodeId) => {
|
|
261
238
|
if (nodeId && !(nodeId in deferredPromises)) {
|
|
262
239
|
context.logger?.warn(
|
|
263
240
|
`'send' expression called with unrecognized id '${nodeId}'`
|
|
@@ -270,8 +247,12 @@ var ChatUiDemoPlugin = class {
|
|
|
270
247
|
}
|
|
271
248
|
const keys = nodeId ? [nodeId] : allPromiseKeys;
|
|
272
249
|
for (const id of keys) {
|
|
250
|
+
const content = createContentFromMessage(
|
|
251
|
+
message,
|
|
252
|
+
`chat-demo-${counter++}`
|
|
253
|
+
);
|
|
273
254
|
const resolveFunction = deferredPromises[id];
|
|
274
|
-
resolveFunction?.(
|
|
255
|
+
resolveFunction?.(content);
|
|
275
256
|
delete deferredPromises[id];
|
|
276
257
|
}
|
|
277
258
|
if (nodeId) {
|
|
@@ -282,7 +263,7 @@ var ChatUiDemoPlugin = class {
|
|
|
282
263
|
}
|
|
283
264
|
};
|
|
284
265
|
asyncNodePlugin.hooks.onAsyncNode.tap(this.name, (node) => {
|
|
285
|
-
if (!
|
|
266
|
+
if (node.parent?.parent?.type !== import_player.NodeType.Asset && node.parent?.parent?.type !== import_player.NodeType.View || !node.parent.parent.value.id.startsWith("collection-async-chat-demo")) {
|
|
286
267
|
return Promise.resolve(void 0);
|
|
287
268
|
}
|
|
288
269
|
return new Promise((res) => {
|
|
@@ -290,38 +271,13 @@ var ChatUiDemoPlugin = class {
|
|
|
290
271
|
allPromiseKeys.push(node.id);
|
|
291
272
|
});
|
|
292
273
|
});
|
|
293
|
-
const sendRealMessage = (context, message, nodeId) => {
|
|
294
|
-
return sendMessage(
|
|
295
|
-
context,
|
|
296
|
-
nodeId,
|
|
297
|
-
() => createContentFromMessage(message, `chat-demo-${counter++}`)
|
|
298
|
-
);
|
|
299
|
-
};
|
|
300
|
-
const sendBrokenMessage = (context, _, nodeId) => {
|
|
301
|
-
return sendMessage(
|
|
302
|
-
context,
|
|
303
|
-
nodeId,
|
|
304
|
-
() => createBrokenRenderContent(`chat-demo-${counter++}`)
|
|
305
|
-
);
|
|
306
|
-
};
|
|
307
|
-
const sendBrokenTransformMessage = (context, _, nodeId) => {
|
|
308
|
-
return sendMessage(
|
|
309
|
-
context,
|
|
310
|
-
nodeId,
|
|
311
|
-
() => createBrokenTransformContent(`chat-demo-${counter++}`)
|
|
312
|
-
);
|
|
313
|
-
};
|
|
314
274
|
player.hooks.view.tap(this.name, (_) => {
|
|
315
275
|
deferredPromises = {};
|
|
316
276
|
allPromiseKeys = [];
|
|
317
277
|
counter = 0;
|
|
318
278
|
});
|
|
319
279
|
const expressionPlugin = new import_expression_plugin.ExpressionPlugin(
|
|
320
|
-
/* @__PURE__ */ new Map([
|
|
321
|
-
["send", sendRealMessage],
|
|
322
|
-
["sendBroken", sendBrokenMessage],
|
|
323
|
-
["sendBrokenTransform", sendBrokenTransformMessage]
|
|
324
|
-
])
|
|
280
|
+
/* @__PURE__ */ new Map([["send", sendMessage]])
|
|
325
281
|
);
|
|
326
282
|
player.registerPlugin(expressionPlugin);
|
|
327
283
|
}
|
|
@@ -348,61 +304,16 @@ var ReferenceAssetsTransformPlugin = class {
|
|
|
348
304
|
};
|
|
349
305
|
|
|
350
306
|
// ../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugin.ts
|
|
351
|
-
var import_async_node_plugin4 = require("@player-ui/async-node-plugin");
|
|
352
|
-
|
|
353
|
-
// ../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugins/error-recovery-plugin.ts
|
|
354
307
|
var import_async_node_plugin3 = require("@player-ui/async-node-plugin");
|
|
355
|
-
var ErrorRecoveryPlugin = class {
|
|
356
|
-
constructor() {
|
|
357
|
-
this.name = "ErrorRecoveryPlugin";
|
|
358
|
-
}
|
|
359
|
-
/** */
|
|
360
|
-
apply(player) {
|
|
361
|
-
player.applyTo(import_async_node_plugin3.AsyncNodePlugin.Symbol, (plugin) => {
|
|
362
|
-
plugin.hooks.onAsyncNodeError.tap(this.name, (err, node) => {
|
|
363
|
-
const playerState = player.getState();
|
|
364
|
-
if (playerState.status !== "in-progress") {
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
367
|
-
const viewId = playerState.controllers.view.currentView?.initialView.id;
|
|
368
|
-
if (viewId !== "chat-view") {
|
|
369
|
-
return;
|
|
370
|
-
}
|
|
371
|
-
return {
|
|
372
|
-
asset: {
|
|
373
|
-
type: "chat-message",
|
|
374
|
-
id: `${node.id}-recovery`,
|
|
375
|
-
value: {
|
|
376
|
-
asset: {
|
|
377
|
-
id: `${node.id}-recovery-text`,
|
|
378
|
-
type: "text",
|
|
379
|
-
value: "Something went wrong, please try again."
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
};
|
|
384
|
-
});
|
|
385
|
-
});
|
|
386
|
-
}
|
|
387
|
-
};
|
|
388
|
-
|
|
389
|
-
// ../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugin.ts
|
|
390
|
-
var import_common_types_plugin = require("@player-ui/common-types-plugin");
|
|
391
|
-
var import_common_expressions_plugin = require("@player-ui/common-expressions-plugin");
|
|
392
|
-
var import_computed_properties_plugin = require("@player-ui/computed-properties-plugin");
|
|
393
308
|
var ReferenceAssetsPlugin = class {
|
|
394
309
|
constructor() {
|
|
395
310
|
this.name = "reference-assets-plugin";
|
|
396
311
|
this.metaPlugin = new import_meta_plugin.MetaPlugin([
|
|
397
|
-
new
|
|
398
|
-
|
|
399
|
-
new import_computed_properties_plugin.ComputedPropertiesPlugin(),
|
|
400
|
-
new import_async_node_plugin4.AsyncNodePlugin({
|
|
401
|
-
plugins: [new import_async_node_plugin4.AsyncNodePluginPlugin()]
|
|
312
|
+
new import_async_node_plugin3.AsyncNodePlugin({
|
|
313
|
+
plugins: [new import_async_node_plugin3.AsyncNodePluginPlugin()]
|
|
402
314
|
}),
|
|
403
315
|
new ReferenceAssetsTransformPlugin(),
|
|
404
|
-
new ChatUiDemoPlugin()
|
|
405
|
-
new ErrorRecoveryPlugin()
|
|
316
|
+
new ChatUiDemoPlugin()
|
|
406
317
|
]);
|
|
407
318
|
}
|
|
408
319
|
apply(player) {
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/index.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/input/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/action/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/info/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/image/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/choice/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/chat-message/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugin.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugins/chat-ui-demo-plugin.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugins/reference-assets-transform-plugin.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugins/error-recovery-plugin.ts"],"sourcesContent":["export * from \"./assets\";\nexport * from \"./plugin\";\n","import type { TransformFunction } from \"@player-ui/player\";\nimport type { InputAsset, TransformedInput } from \"./types\";\n\n/**\n * Docs about the asset transform\n */\nexport const inputTransform: TransformFunction<InputAsset, TransformedInput> = (\n asset,\n options,\n) => {\n return {\n ...asset,\n format(val) {\n if (asset.binding === undefined) {\n return val;\n }\n\n return options.data.format(asset.binding, val);\n },\n set(val) {\n if (asset.binding === undefined) {\n return;\n }\n\n return options.data.model.set([[asset.binding, val]], {\n formatted: true,\n });\n },\n value:\n asset.binding === undefined\n ? \"\"\n : options.data.model.get(asset.binding, {\n includeInvalid: true,\n formatted: true,\n }),\n validation:\n asset.binding === undefined\n ? undefined\n : options.validation?.get(asset.binding, { track: true }),\n dataType:\n asset.binding === undefined\n ? undefined\n : options.validation?.type(asset.binding),\n };\n};\n","import type {\n Asset,\n TransformFunction,\n BeforeTransformFunction,\n} from \"@player-ui/player\";\nimport { compose, composeBefore } from \"@player-ui/asset-transform-plugin\";\nimport type { ActionAsset, TransformedAction } from \"./types\";\n\n/**\n * Function to find prev button\n */\nexport function isBackAction(action: ActionAsset): boolean {\n return action.value === \"Prev\";\n}\n\n/**\n * Attaches the methods to execute an action to an action\n */\nconst transform: TransformFunction<ActionAsset, TransformedAction> = (\n action,\n options,\n) => {\n return {\n ...action,\n run() {\n if (action.exp) {\n options.evaluate(action.exp);\n }\n\n if (action.value) {\n const skipValidation = action.metaData?.skipValidation;\n options.transition?.(action.value, { force: skipValidation });\n }\n },\n };\n};\n\n/**\n * De couples back button from the back icon\n */\nconst backIconTransform: TransformFunction<ActionAsset, ActionAsset> = (\n action,\n) => {\n /** For previous versions of player, the back button would already have the back icon.\n * This ensures that the old functionality does not break and back button is still visible when they update the player.\n */\n if (isBackAction(action) && action?.metaData?.role === undefined) {\n return {\n ...action,\n metaData: {\n ...action?.metaData,\n role: \"back\",\n },\n };\n }\n\n return action;\n};\n\n/**\n * Appends `exp` to the plugins.stringResolver.propertiesToSkip array or creates it if it doesn't exist\n *\n * @param asset - Asset to apply the transform to\n */\nexport const expPropTransform: BeforeTransformFunction<Asset> = (asset) => {\n const skipArray = asset.plugins?.stringResolver?.propertiesToSkip;\n\n if (skipArray && skipArray.indexOf(\"exp\") > 1) {\n return asset;\n }\n\n return {\n ...asset,\n plugins: {\n ...asset.plugins,\n stringResolver: {\n ...asset?.plugins?.stringResolver,\n propertiesToSkip: [\n ...(asset.plugins?.stringResolver?.propertiesToSkip ?? []),\n \"exp\",\n ],\n },\n },\n };\n};\n\nexport const actionTransform = compose(\n transform,\n backIconTransform,\n composeBefore(expPropTransform),\n);\n","import type { TransformFunction } from \"@player-ui/player\";\nimport type { AssetWrapper } from \"@player-ui/player\";\nimport type { InfoAsset, InfoAssetTransform } from \"./types\";\nimport type { ActionAsset } from \"../action/types\";\nimport { isBackAction } from \"../action/transform\";\n\n/**\n * This transform should add segmentedActions to the info asset.\n * Segmented actions display side by side in larger viewports. Segmented Actions is an object of next and prev actions\n */\nexport const infoTransform: TransformFunction<InfoAsset, InfoAssetTransform> = (\n infoAsset,\n) => {\n const actions = infoAsset?.actions;\n const segmentedActions = actions?.reduce(\n (segmentedActionsArray, action) => {\n segmentedActionsArray[\n isBackAction(action.asset as ActionAsset) ? \"prev\" : \"next\"\n ].push(action as AssetWrapper<ActionAsset>);\n return segmentedActionsArray;\n },\n { next: [], prev: [] } as {\n /**\n * next is an array of next actions\n */\n next: Array<AssetWrapper<ActionAsset>>;\n /**\n * prev is an array of prev actions\n */\n prev: Array<AssetWrapper<ActionAsset>>;\n },\n );\n\n return {\n ...infoAsset,\n segmentedActions,\n };\n};\n","import type { TransformFunction } from \"@player-ui/player\";\nimport type { ImageAsset, TransformedImage } from \"./types\";\n\n/**\n * Function to retrieve the desired alt text based on passed in props.\n * @param props Image props\n * @returns The alt text for the image asset\n */\nconst getImageAlt = (props: ImageAsset): string => {\n const { metaData, placeholder } = props;\n if (metaData.accessibility) return metaData.accessibility;\n\n if (placeholder) return placeholder;\n\n return \"Image\";\n};\n\n/**\n * Sets the Image's placeholder and accessibilty\n */\nexport const imageTransform: TransformFunction<ImageAsset, TransformedImage> = (\n props,\n) => {\n const altText = getImageAlt(props);\n\n const newImage = {\n ...props,\n altText,\n };\n\n return newImage;\n};\n","import type { TransformFunction } from \"@player-ui/player\";\nimport type {\n ChoiceAsset,\n TransformedChoice,\n TransformedChoiceItem,\n} from \"./types\";\n\n/**\n * Docs about the asset transform\n */\nexport const choiceTransform: TransformFunction<\n ChoiceAsset,\n TransformedChoice\n> = (asset, options) => {\n const { items, binding, ...rest } = asset;\n\n const assetHasBinding = binding !== undefined;\n\n const currentValue = assetHasBinding\n ? options.data.model.get(binding, {\n includeInvalid: true,\n })\n : undefined;\n\n const resetValue = () => {\n if (assetHasBinding) {\n return options.data.model.set([[binding, null]]);\n }\n };\n\n const transformedChoiceItems: TransformedChoiceItem[] = (items || []).map(\n (item, index) => ({\n ...item,\n id: item.id ?? `${asset.id}-choice-${index}`,\n select() {\n if (assetHasBinding) {\n return options.data.model.set([[binding, item.value]]);\n }\n },\n unselect: resetValue,\n }),\n );\n\n return {\n ...rest,\n binding,\n clearSelection: resetValue,\n items: transformedChoiceItems,\n value: currentValue,\n validation: assetHasBinding\n ? options.validation?.get(binding, { track: true })\n : undefined,\n dataType: assetHasBinding ? options.validation?.type(binding) : undefined,\n };\n};\n","import type {\n BeforeTransformFunction,\n TransformFunctions,\n} from \"@player-ui/player\";\nimport { composeBefore, compose } from \"@player-ui/asset-transform-plugin\";\nimport { createAsyncTransform } from \"@player-ui/async-node-plugin\";\nimport { ChatMessageAsset } from \"./types\";\n/**\n * In beforeTransform function, pass in flatten marker and call beforeResolve function.\n * Flatten default value is true.\n * input: ChatMessageAsset\n * @param asset - Asset to apply the transform to\n * @returns - transformed asset with async node and asset node\n */\nexport const transform: BeforeTransformFunction<ChatMessageAsset> =\n createAsyncTransform({\n transformAssetType: \"chat-message\",\n wrapperAssetType: \"collection\",\n getNestedAsset: (node) => node.children?.[0]?.value,\n });\n\nexport const chatMessageTransform: TransformFunctions = compose(\n composeBefore(transform),\n);\n","import type { Player, PlayerPlugin } from \"@player-ui/player\";\nimport { MetaPlugin } from \"@player-ui/meta-plugin\";\nimport { ChatUiDemoPlugin, ReferenceAssetsTransformPlugin } from \"./plugins\";\nimport {\n AsyncNodePlugin,\n AsyncNodePluginPlugin,\n} from \"@player-ui/async-node-plugin\";\nimport { ErrorRecoveryPlugin } from \"./plugins/error-recovery-plugin\";\nimport { CommonTypesPlugin } from \"@player-ui/common-types-plugin\";\nimport { CommonExpressionsPlugin } from \"@player-ui/common-expressions-plugin\";\nimport { ComputedPropertiesPlugin } from \"@player-ui/computed-properties-plugin\";\n\n/**\n * A plugin to add transforms for the reference assets\n */\nexport class ReferenceAssetsPlugin implements PlayerPlugin {\n name = \"reference-assets-plugin\";\n\n private readonly metaPlugin = new MetaPlugin([\n new CommonTypesPlugin(),\n new CommonExpressionsPlugin(),\n new ComputedPropertiesPlugin(),\n new AsyncNodePlugin({\n plugins: [new AsyncNodePluginPlugin()],\n }),\n new ReferenceAssetsTransformPlugin(),\n new ChatUiDemoPlugin(),\n new ErrorRecoveryPlugin(),\n ]);\n\n apply(player: Player): void {\n player.registerPlugin(this.metaPlugin);\n }\n}\n","import { AsyncNodePlugin } from \"@player-ui/async-node-plugin\";\nimport {\n ExpressionContext,\n ExtendedPlayerPlugin,\n NodeType,\n Player,\n Node,\n} from \"@player-ui/player\";\nimport { ExpressionPlugin } from \"@player-ui/expression-plugin\";\nimport { send } from \"./send\";\n\nconst isInChatDemo = (node: Node.Node) => {\n if (\n node.parent?.parent?.type === NodeType.View &&\n node.parent.parent.value.id === \"chat-view\"\n ) {\n return true;\n }\n\n return (\n node.parent?.parent?.type === NodeType.Asset &&\n node.parent.parent.value.id.startsWith(\"collection-async-chat-demo\")\n );\n};\n\nconst createContentFromMessage = (message: string, id: string): any => ({\n asset: {\n type: \"chat-message\",\n id,\n value: {\n asset: {\n type: \"text\",\n id: `${id}-value`,\n value: message,\n },\n },\n },\n});\n\n/** This content will fail to display its label since it isn't a valid asset */\nconst createBrokenRenderContent = (id: string): any => ({\n asset: {\n id,\n type: \"input\",\n binding: \"binding\",\n label: 100,\n },\n});\n\n/** this content will fail to fetch from the data model since the binding is an object */\nconst createBrokenTransformContent = (id: string): any => ({\n asset: {\n id,\n type: \"input\",\n binding: {\n prop: \"value\",\n },\n },\n});\n\nexport class ChatUiDemoPlugin implements ExtendedPlayerPlugin<[], [], [send]> {\n public readonly name = \"chat-ui-demo-plugin\";\n\n public apply(player: Player): void {\n const asyncNodePlugin = player.findPlugin<AsyncNodePlugin>(\n AsyncNodePlugin.Symbol,\n );\n\n if (!asyncNodePlugin) {\n player.logger.warn(\n `Failed to apply '${this.name}'. Reason: Could not find AsyncNodePlugin.`,\n );\n return;\n }\n\n let deferredPromises: Record<string, (val: string) => void> = {};\n let allPromiseKeys: string[] = [];\n let counter = 0;\n\n const sendMessage = (\n context: ExpressionContext,\n nodeId?: string,\n getContent?: () => any,\n ): void => {\n if (nodeId && !(nodeId in deferredPromises)) {\n context.logger?.warn(\n `'send' expression called with unrecognized id '${nodeId}'`,\n );\n return;\n }\n\n if (!nodeId && allPromiseKeys.length === 0) {\n context.logger?.warn(`'send' called with no waiting async nodes`);\n return;\n }\n\n // Either resolve the node by the id or resolve all of them if no id provided\n const keys = nodeId ? [nodeId] : allPromiseKeys;\n\n for (const id of keys) {\n const resolveFunction = deferredPromises[id];\n resolveFunction?.(getContent?.());\n delete deferredPromises[id];\n }\n\n if (nodeId) {\n const index = allPromiseKeys.indexOf(nodeId);\n allPromiseKeys.splice(index, 1);\n } else {\n allPromiseKeys = [];\n }\n };\n\n asyncNodePlugin.hooks.onAsyncNode.tap(this.name, (node) => {\n // Ensure this is only used on the chat-ui.tsx mock to prevent the promise from setting up during tests.\n if (!isInChatDemo(node)) {\n return Promise.resolve(undefined);\n }\n\n return new Promise((res) => {\n deferredPromises[node.id] = res;\n allPromiseKeys.push(node.id);\n });\n });\n\n const sendRealMessage: send = (\n context: ExpressionContext,\n message: string,\n nodeId?: string,\n ) => {\n return sendMessage(context, nodeId, () =>\n createContentFromMessage(message, `chat-demo-${counter++}`),\n );\n };\n\n /** These expressions are used as examples in the storybook to allow broken content through and show the error recovery fallback pattern. */\n const sendBrokenMessage: send = (\n context: ExpressionContext,\n _: string,\n nodeId?: string,\n ) => {\n return sendMessage(context, nodeId, () =>\n createBrokenRenderContent(`chat-demo-${counter++}`),\n );\n };\n\n const sendBrokenTransformMessage: send = (\n context: ExpressionContext,\n _: string,\n nodeId?: string,\n ) => {\n return sendMessage(context, nodeId, () =>\n createBrokenTransformContent(`chat-demo-${counter++}`),\n );\n };\n\n // Reset at the start of a new view.\n player.hooks.view.tap(this.name, (_) => {\n deferredPromises = {};\n allPromiseKeys = [];\n counter = 0;\n });\n\n // Register 'send' expression\n const expressionPlugin = new ExpressionPlugin(\n new Map([\n [\"send\", sendRealMessage],\n [\"sendBroken\", sendBrokenMessage],\n [\"sendBrokenTransform\", sendBrokenTransformMessage],\n ]),\n );\n player.registerPlugin(expressionPlugin);\n }\n}\n","import type { ExtendedPlayerPlugin, Player } from \"@player-ui/player\";\nimport { AssetTransformPlugin } from \"@player-ui/asset-transform-plugin\";\nimport {\n actionTransform,\n chatMessageTransform,\n choiceTransform,\n imageTransform,\n infoTransform,\n inputTransform,\n} from \"../assets\";\nimport type {\n ActionAsset,\n ChatMessageAsset,\n ChoiceAsset,\n CollectionAsset,\n ImageAsset,\n InfoAsset,\n InputAsset,\n TextAsset,\n} from \"../assets\";\n\nexport class ReferenceAssetsTransformPlugin\n implements\n ExtendedPlayerPlugin<\n [\n ActionAsset,\n InputAsset,\n ImageAsset,\n TextAsset,\n CollectionAsset,\n ChoiceAsset,\n ChatMessageAsset,\n ],\n [InfoAsset]\n >\n{\n name = \"reference-assets-transforms\";\n\n apply(player: Player): void {\n player.registerPlugin(\n new AssetTransformPlugin([\n [{ type: \"action\" }, actionTransform],\n [{ type: \"input\" }, inputTransform],\n [{ type: \"image\" }, imageTransform],\n [{ type: \"info\" }, infoTransform],\n [{ type: \"choice\" }, choiceTransform],\n [{ type: \"chat-message\" }, chatMessageTransform],\n ]),\n );\n }\n}\n","import { AsyncNodePlugin } from \"@player-ui/async-node-plugin\";\nimport { Player, PlayerPlugin } from \"@player-ui/player\";\n\nexport class ErrorRecoveryPlugin implements PlayerPlugin {\n readonly name = \"ErrorRecoveryPlugin\";\n /** */\n apply(player: Player): void {\n player.applyTo<AsyncNodePlugin>(AsyncNodePlugin.Symbol, (plugin) => {\n plugin.hooks.onAsyncNodeError.tap(this.name, (err, node) => {\n const playerState = player.getState();\n if (playerState.status !== \"in-progress\") {\n return;\n }\n\n // Limit error recovery to chat-ui view example to avoid breaking tests.\n const viewId = playerState.controllers.view.currentView?.initialView.id;\n if (viewId !== \"chat-view\") {\n return;\n }\n\n return {\n asset: {\n type: \"chat-message\",\n id: `${node.id}-recovery`,\n value: {\n asset: {\n id: `${node.id}-recovery-text`,\n type: \"text\",\n value: \"Something went wrong, please try again.\",\n },\n },\n },\n };\n });\n });\n }\n}\n"],"mappings":"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","names":["transform","import_asset_transform_plugin","transform","import_async_node_plugin","import_asset_transform_plugin","import_async_node_plugin","import_async_node_plugin"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/index.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/input/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/action/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/info/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/image/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/choice/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/assets/chat-message/transform.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugin.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugins/chat-ui-demo-plugin.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugins/reference-assets-transform-plugin.ts"],"sourcesContent":["export * from \"./assets\";\nexport * from \"./plugin\";\n","import type { TransformFunction } from \"@player-ui/player\";\nimport type { InputAsset, TransformedInput } from \"./types\";\n\n/**\n * Docs about the asset transform\n */\nexport const inputTransform: TransformFunction<InputAsset, TransformedInput> = (\n asset,\n options,\n) => {\n return {\n ...asset,\n format(val) {\n if (asset.binding === undefined) {\n return val;\n }\n\n return options.data.format(asset.binding, val);\n },\n set(val) {\n if (asset.binding === undefined) {\n return;\n }\n\n return options.data.model.set([[asset.binding, val]], {\n formatted: true,\n });\n },\n value:\n asset.binding === undefined\n ? \"\"\n : options.data.model.get(asset.binding, {\n includeInvalid: true,\n formatted: true,\n }),\n validation:\n asset.binding === undefined\n ? undefined\n : options.validation?.get(asset.binding, { track: true }),\n dataType:\n asset.binding === undefined\n ? undefined\n : options.validation?.type(asset.binding),\n };\n};\n","import type {\n Asset,\n TransformFunction,\n BeforeTransformFunction,\n} from \"@player-ui/player\";\nimport { compose, composeBefore } from \"@player-ui/asset-transform-plugin\";\nimport type { ActionAsset, TransformedAction } from \"./types\";\n\n/**\n * Function to find prev button\n */\nexport function isBackAction(action: ActionAsset): boolean {\n return action.value === \"Prev\";\n}\n\n/**\n * Attaches the methods to execute an action to an action\n */\nconst transform: TransformFunction<ActionAsset, TransformedAction> = (\n action,\n options,\n) => {\n return {\n ...action,\n run() {\n if (action.exp) {\n options.evaluate(action.exp);\n }\n\n if (action.value) {\n const skipValidation = action.metaData?.skipValidation;\n options.transition?.(action.value, { force: skipValidation });\n }\n },\n };\n};\n\n/**\n * De couples back button from the back icon\n */\nconst backIconTransform: TransformFunction<ActionAsset, ActionAsset> = (\n action,\n) => {\n /** For previous versions of player, the back button would already have the back icon.\n * This ensures that the old functionality does not break and back button is still visible when they update the player.\n */\n if (isBackAction(action) && action?.metaData?.role === undefined) {\n return {\n ...action,\n metaData: {\n ...action?.metaData,\n role: \"back\",\n },\n };\n }\n\n return action;\n};\n\n/**\n * Appends `exp` to the plugins.stringResolver.propertiesToSkip array or creates it if it doesn't exist\n *\n * @param asset - Asset to apply the transform to\n */\nexport const expPropTransform: BeforeTransformFunction<Asset> = (asset) => {\n const skipArray = asset.plugins?.stringResolver?.propertiesToSkip;\n\n if (skipArray && skipArray.indexOf(\"exp\") > 1) {\n return asset;\n }\n\n return {\n ...asset,\n plugins: {\n ...asset.plugins,\n stringResolver: {\n ...asset?.plugins?.stringResolver,\n propertiesToSkip: [\n ...(asset.plugins?.stringResolver?.propertiesToSkip ?? []),\n \"exp\",\n ],\n },\n },\n };\n};\n\nexport const actionTransform = compose(\n transform,\n backIconTransform,\n composeBefore(expPropTransform),\n);\n","import type { TransformFunction } from \"@player-ui/player\";\nimport type { AssetWrapper } from \"@player-ui/player\";\nimport type { InfoAsset, InfoAssetTransform } from \"./types\";\nimport type { ActionAsset } from \"../action/types\";\nimport { isBackAction } from \"../action/transform\";\n\n/**\n * This transform should add segmentedActions to the info asset.\n * Segmented actions display side by side in larger viewports. Segmented Actions is an object of next and prev actions\n */\nexport const infoTransform: TransformFunction<InfoAsset, InfoAssetTransform> = (\n infoAsset,\n) => {\n const actions = infoAsset?.actions;\n const segmentedActions = actions?.reduce(\n (segmentedActionsArray, action) => {\n segmentedActionsArray[\n isBackAction(action.asset as ActionAsset) ? \"prev\" : \"next\"\n ].push(action as AssetWrapper<ActionAsset>);\n return segmentedActionsArray;\n },\n { next: [], prev: [] } as {\n /**\n * next is an array of next actions\n */\n next: Array<AssetWrapper<ActionAsset>>;\n /**\n * prev is an array of prev actions\n */\n prev: Array<AssetWrapper<ActionAsset>>;\n },\n );\n\n return {\n ...infoAsset,\n segmentedActions,\n };\n};\n","import type { TransformFunction } from \"@player-ui/player\";\nimport type { ImageAsset, TransformedImage } from \"./types\";\n\n/**\n * Function to retrieve the desired alt text based on passed in props.\n * @param props Image props\n * @returns The alt text for the image asset\n */\nconst getImageAlt = (props: ImageAsset): string => {\n const { metaData, placeholder } = props;\n if (metaData.accessibility) return metaData.accessibility;\n\n if (placeholder) return placeholder;\n\n return \"Image\";\n};\n\n/**\n * Sets the Image's placeholder and accessibilty\n */\nexport const imageTransform: TransformFunction<ImageAsset, TransformedImage> = (\n props,\n) => {\n const altText = getImageAlt(props);\n\n const newImage = {\n ...props,\n altText,\n };\n\n return newImage;\n};\n","import type { TransformFunction } from \"@player-ui/player\";\nimport type {\n ChoiceAsset,\n TransformedChoice,\n TransformedChoiceItem,\n} from \"./types\";\n\n/**\n * Docs about the asset transform\n */\nexport const choiceTransform: TransformFunction<\n ChoiceAsset,\n TransformedChoice\n> = (asset, options) => {\n const { items, binding, ...rest } = asset;\n\n const assetHasBinding = binding !== undefined;\n\n const currentValue = assetHasBinding\n ? options.data.model.get(binding, {\n includeInvalid: true,\n })\n : undefined;\n\n const resetValue = () => {\n if (assetHasBinding) {\n return options.data.model.set([[binding, null]]);\n }\n };\n\n const transformedChoiceItems: TransformedChoiceItem[] = (items || []).map(\n (item, index) => ({\n ...item,\n id: item.id ?? `${asset.id}-choice-${index}`,\n select() {\n if (assetHasBinding) {\n return options.data.model.set([[binding, item.value]]);\n }\n },\n unselect: resetValue,\n }),\n );\n\n return {\n ...rest,\n binding,\n clearSelection: resetValue,\n items: transformedChoiceItems,\n value: currentValue,\n validation: assetHasBinding\n ? options.validation?.get(binding, { track: true })\n : undefined,\n dataType: assetHasBinding ? options.validation?.type(binding) : undefined,\n };\n};\n","import type {\n BeforeTransformFunction,\n TransformFunctions,\n} from \"@player-ui/player\";\nimport { composeBefore, compose } from \"@player-ui/asset-transform-plugin\";\nimport { createAsyncTransform } from \"@player-ui/async-node-plugin\";\nimport { ChatMessageAsset } from \"./types\";\n/**\n * In beforeTransform function, pass in flatten marker and call beforeResolve function.\n * Flatten default value is true.\n * input: ChatMessageAsset\n * @param asset - Asset to apply the transform to\n * @returns - transformed asset with async node and asset node\n */\nexport const transform: BeforeTransformFunction<ChatMessageAsset> =\n createAsyncTransform({\n transformAssetType: \"chat-message\",\n wrapperAssetType: \"collection\",\n getNestedAsset: (node) => node.children?.[0]?.value,\n });\n\nexport const chatMessageTransform: TransformFunctions = compose(\n composeBefore(transform),\n);\n","import type { Player, PlayerPlugin } from \"@player-ui/player\";\nimport { MetaPlugin } from \"@player-ui/meta-plugin\";\nimport { ChatUiDemoPlugin, ReferenceAssetsTransformPlugin } from \"./plugins\";\nimport {\n AsyncNodePlugin,\n AsyncNodePluginPlugin,\n} from \"@player-ui/async-node-plugin\";\n\n/**\n * A plugin to add transforms for the reference assets\n */\nexport class ReferenceAssetsPlugin implements PlayerPlugin {\n name = \"reference-assets-plugin\";\n\n private readonly metaPlugin = new MetaPlugin([\n new AsyncNodePlugin({\n plugins: [new AsyncNodePluginPlugin()],\n }),\n new ReferenceAssetsTransformPlugin(),\n new ChatUiDemoPlugin(),\n ]);\n\n apply(player: Player): void {\n player.registerPlugin(this.metaPlugin);\n }\n}\n","import { AsyncNodePlugin } from \"@player-ui/async-node-plugin\";\nimport {\n ExpressionContext,\n ExtendedPlayerPlugin,\n NodeType,\n Player,\n} from \"@player-ui/player\";\nimport { ExpressionPlugin } from \"@player-ui/expression-plugin\";\nimport { send } from \"./send\";\n\nconst createContentFromMessage = (message: string, id: string): any => ({\n asset: {\n type: \"chat-message\",\n id,\n value: {\n asset: {\n type: \"text\",\n id: `${id}-value`,\n value: message,\n },\n },\n },\n});\n\nexport class ChatUiDemoPlugin implements ExtendedPlayerPlugin<[], [], [send]> {\n public readonly name = \"chat-ui-demo-plugin\";\n\n public apply(player: Player): void {\n const asyncNodePlugin = player.findPlugin<AsyncNodePlugin>(\n AsyncNodePlugin.Symbol,\n );\n\n if (!asyncNodePlugin) {\n player.logger.warn(\n `Failed to apply '${this.name}'. Reason: Could not find AsyncNodePlugin.`,\n );\n return;\n }\n\n let deferredPromises: Record<string, (val: string) => void> = {};\n let allPromiseKeys: string[] = [];\n let counter = 0;\n\n const sendMessage: send = (\n context: ExpressionContext,\n message: string,\n nodeId?: string,\n ): void => {\n if (nodeId && !(nodeId in deferredPromises)) {\n context.logger?.warn(\n `'send' expression called with unrecognized id '${nodeId}'`,\n );\n return;\n }\n\n if (!nodeId && allPromiseKeys.length === 0) {\n context.logger?.warn(`'send' called with no waiting async nodes`);\n return;\n }\n\n // Either resolve the node by the id or resolve all of them if no id provided\n const keys = nodeId ? [nodeId] : allPromiseKeys;\n\n for (const id of keys) {\n const content = createContentFromMessage(\n message,\n `chat-demo-${counter++}`,\n );\n const resolveFunction = deferredPromises[id];\n resolveFunction?.(content);\n delete deferredPromises[id];\n }\n\n if (nodeId) {\n const index = allPromiseKeys.indexOf(nodeId);\n allPromiseKeys.splice(index, 1);\n } else {\n allPromiseKeys = [];\n }\n };\n\n asyncNodePlugin.hooks.onAsyncNode.tap(this.name, (node) => {\n // Ensure this is only used on the chat-ui.tsx mock to prevent the promise from setting up during tests.\n if (\n (node.parent?.parent?.type !== NodeType.Asset &&\n node.parent?.parent?.type !== NodeType.View) ||\n !node.parent.parent.value.id.startsWith(\"collection-async-chat-demo\")\n ) {\n return Promise.resolve(undefined);\n }\n\n return new Promise((res) => {\n deferredPromises[node.id] = res;\n allPromiseKeys.push(node.id);\n });\n });\n\n // Reset at the start of a new view.\n player.hooks.view.tap(this.name, (_) => {\n deferredPromises = {};\n allPromiseKeys = [];\n counter = 0;\n });\n\n // Register 'send' expression\n const expressionPlugin = new ExpressionPlugin(\n new Map([[\"send\", sendMessage]]),\n );\n player.registerPlugin(expressionPlugin);\n }\n}\n","import type { ExtendedPlayerPlugin, Player } from \"@player-ui/player\";\nimport { AssetTransformPlugin } from \"@player-ui/asset-transform-plugin\";\nimport {\n actionTransform,\n chatMessageTransform,\n choiceTransform,\n imageTransform,\n infoTransform,\n inputTransform,\n} from \"../assets\";\nimport type {\n ActionAsset,\n ChatMessageAsset,\n ChoiceAsset,\n CollectionAsset,\n ImageAsset,\n InfoAsset,\n InputAsset,\n TextAsset,\n} from \"../assets\";\n\nexport class ReferenceAssetsTransformPlugin implements ExtendedPlayerPlugin<\n [\n ActionAsset,\n InputAsset,\n ImageAsset,\n TextAsset,\n CollectionAsset,\n ChoiceAsset,\n ChatMessageAsset,\n ],\n [InfoAsset]\n> {\n name = \"reference-assets-transforms\";\n\n apply(player: Player): void {\n player.registerPlugin(\n new AssetTransformPlugin([\n [{ type: \"action\" }, actionTransform],\n [{ type: \"input\" }, inputTransform],\n [{ type: \"image\" }, imageTransform],\n [{ type: \"info\" }, infoTransform],\n [{ type: \"choice\" }, choiceTransform],\n [{ type: \"chat-message\" }, chatMessageTransform],\n ]),\n );\n }\n}\n"],"mappings":"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","names":["transform","import_asset_transform_plugin","transform","import_async_node_plugin","import_asset_transform_plugin","import_async_node_plugin"]}
|
package/dist/index.legacy-esm.js
CHANGED
|
@@ -171,12 +171,6 @@ import {
|
|
|
171
171
|
NodeType
|
|
172
172
|
} from "@player-ui/player";
|
|
173
173
|
import { ExpressionPlugin } from "@player-ui/expression-plugin";
|
|
174
|
-
var isInChatDemo = (node) => {
|
|
175
|
-
if (node.parent?.parent?.type === NodeType.View && node.parent.parent.value.id === "chat-view") {
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
return node.parent?.parent?.type === NodeType.Asset && node.parent.parent.value.id.startsWith("collection-async-chat-demo");
|
|
179
|
-
};
|
|
180
174
|
var createContentFromMessage = (message, id) => ({
|
|
181
175
|
asset: {
|
|
182
176
|
type: "chat-message",
|
|
@@ -190,23 +184,6 @@ var createContentFromMessage = (message, id) => ({
|
|
|
190
184
|
}
|
|
191
185
|
}
|
|
192
186
|
});
|
|
193
|
-
var createBrokenRenderContent = (id) => ({
|
|
194
|
-
asset: {
|
|
195
|
-
id,
|
|
196
|
-
type: "input",
|
|
197
|
-
binding: "binding",
|
|
198
|
-
label: 100
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
var createBrokenTransformContent = (id) => ({
|
|
202
|
-
asset: {
|
|
203
|
-
id,
|
|
204
|
-
type: "input",
|
|
205
|
-
binding: {
|
|
206
|
-
prop: "value"
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
187
|
var ChatUiDemoPlugin = class {
|
|
211
188
|
constructor() {
|
|
212
189
|
this.name = "chat-ui-demo-plugin";
|
|
@@ -224,7 +201,7 @@ var ChatUiDemoPlugin = class {
|
|
|
224
201
|
let deferredPromises = {};
|
|
225
202
|
let allPromiseKeys = [];
|
|
226
203
|
let counter = 0;
|
|
227
|
-
const sendMessage = (context,
|
|
204
|
+
const sendMessage = (context, message, nodeId) => {
|
|
228
205
|
if (nodeId && !(nodeId in deferredPromises)) {
|
|
229
206
|
context.logger?.warn(
|
|
230
207
|
`'send' expression called with unrecognized id '${nodeId}'`
|
|
@@ -237,8 +214,12 @@ var ChatUiDemoPlugin = class {
|
|
|
237
214
|
}
|
|
238
215
|
const keys = nodeId ? [nodeId] : allPromiseKeys;
|
|
239
216
|
for (const id of keys) {
|
|
217
|
+
const content = createContentFromMessage(
|
|
218
|
+
message,
|
|
219
|
+
`chat-demo-${counter++}`
|
|
220
|
+
);
|
|
240
221
|
const resolveFunction = deferredPromises[id];
|
|
241
|
-
resolveFunction?.(
|
|
222
|
+
resolveFunction?.(content);
|
|
242
223
|
delete deferredPromises[id];
|
|
243
224
|
}
|
|
244
225
|
if (nodeId) {
|
|
@@ -249,7 +230,7 @@ var ChatUiDemoPlugin = class {
|
|
|
249
230
|
}
|
|
250
231
|
};
|
|
251
232
|
asyncNodePlugin.hooks.onAsyncNode.tap(this.name, (node) => {
|
|
252
|
-
if (!
|
|
233
|
+
if (node.parent?.parent?.type !== NodeType.Asset && node.parent?.parent?.type !== NodeType.View || !node.parent.parent.value.id.startsWith("collection-async-chat-demo")) {
|
|
253
234
|
return Promise.resolve(void 0);
|
|
254
235
|
}
|
|
255
236
|
return new Promise((res) => {
|
|
@@ -257,38 +238,13 @@ var ChatUiDemoPlugin = class {
|
|
|
257
238
|
allPromiseKeys.push(node.id);
|
|
258
239
|
});
|
|
259
240
|
});
|
|
260
|
-
const sendRealMessage = (context, message, nodeId) => {
|
|
261
|
-
return sendMessage(
|
|
262
|
-
context,
|
|
263
|
-
nodeId,
|
|
264
|
-
() => createContentFromMessage(message, `chat-demo-${counter++}`)
|
|
265
|
-
);
|
|
266
|
-
};
|
|
267
|
-
const sendBrokenMessage = (context, _, nodeId) => {
|
|
268
|
-
return sendMessage(
|
|
269
|
-
context,
|
|
270
|
-
nodeId,
|
|
271
|
-
() => createBrokenRenderContent(`chat-demo-${counter++}`)
|
|
272
|
-
);
|
|
273
|
-
};
|
|
274
|
-
const sendBrokenTransformMessage = (context, _, nodeId) => {
|
|
275
|
-
return sendMessage(
|
|
276
|
-
context,
|
|
277
|
-
nodeId,
|
|
278
|
-
() => createBrokenTransformContent(`chat-demo-${counter++}`)
|
|
279
|
-
);
|
|
280
|
-
};
|
|
281
241
|
player.hooks.view.tap(this.name, (_) => {
|
|
282
242
|
deferredPromises = {};
|
|
283
243
|
allPromiseKeys = [];
|
|
284
244
|
counter = 0;
|
|
285
245
|
});
|
|
286
246
|
const expressionPlugin = new ExpressionPlugin(
|
|
287
|
-
/* @__PURE__ */ new Map([
|
|
288
|
-
["send", sendRealMessage],
|
|
289
|
-
["sendBroken", sendBrokenMessage],
|
|
290
|
-
["sendBrokenTransform", sendBrokenTransformMessage]
|
|
291
|
-
])
|
|
247
|
+
/* @__PURE__ */ new Map([["send", sendMessage]])
|
|
292
248
|
);
|
|
293
249
|
player.registerPlugin(expressionPlugin);
|
|
294
250
|
}
|
|
@@ -316,63 +272,18 @@ var ReferenceAssetsTransformPlugin = class {
|
|
|
316
272
|
|
|
317
273
|
// ../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugin.ts
|
|
318
274
|
import {
|
|
319
|
-
AsyncNodePlugin as
|
|
275
|
+
AsyncNodePlugin as AsyncNodePlugin2,
|
|
320
276
|
AsyncNodePluginPlugin
|
|
321
277
|
} from "@player-ui/async-node-plugin";
|
|
322
|
-
|
|
323
|
-
// ../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugins/error-recovery-plugin.ts
|
|
324
|
-
import { AsyncNodePlugin as AsyncNodePlugin2 } from "@player-ui/async-node-plugin";
|
|
325
|
-
var ErrorRecoveryPlugin = class {
|
|
326
|
-
constructor() {
|
|
327
|
-
this.name = "ErrorRecoveryPlugin";
|
|
328
|
-
}
|
|
329
|
-
/** */
|
|
330
|
-
apply(player) {
|
|
331
|
-
player.applyTo(AsyncNodePlugin2.Symbol, (plugin) => {
|
|
332
|
-
plugin.hooks.onAsyncNodeError.tap(this.name, (err, node) => {
|
|
333
|
-
const playerState = player.getState();
|
|
334
|
-
if (playerState.status !== "in-progress") {
|
|
335
|
-
return;
|
|
336
|
-
}
|
|
337
|
-
const viewId = playerState.controllers.view.currentView?.initialView.id;
|
|
338
|
-
if (viewId !== "chat-view") {
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
return {
|
|
342
|
-
asset: {
|
|
343
|
-
type: "chat-message",
|
|
344
|
-
id: `${node.id}-recovery`,
|
|
345
|
-
value: {
|
|
346
|
-
asset: {
|
|
347
|
-
id: `${node.id}-recovery-text`,
|
|
348
|
-
type: "text",
|
|
349
|
-
value: "Something went wrong, please try again."
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
};
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
}
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
// ../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugin.ts
|
|
360
|
-
import { CommonTypesPlugin } from "@player-ui/common-types-plugin";
|
|
361
|
-
import { CommonExpressionsPlugin } from "@player-ui/common-expressions-plugin";
|
|
362
|
-
import { ComputedPropertiesPlugin } from "@player-ui/computed-properties-plugin";
|
|
363
278
|
var ReferenceAssetsPlugin = class {
|
|
364
279
|
constructor() {
|
|
365
280
|
this.name = "reference-assets-plugin";
|
|
366
281
|
this.metaPlugin = new MetaPlugin([
|
|
367
|
-
new
|
|
368
|
-
new CommonExpressionsPlugin(),
|
|
369
|
-
new ComputedPropertiesPlugin(),
|
|
370
|
-
new AsyncNodePlugin3({
|
|
282
|
+
new AsyncNodePlugin2({
|
|
371
283
|
plugins: [new AsyncNodePluginPlugin()]
|
|
372
284
|
}),
|
|
373
285
|
new ReferenceAssetsTransformPlugin(),
|
|
374
|
-
new ChatUiDemoPlugin()
|
|
375
|
-
new ErrorRecoveryPlugin()
|
|
286
|
+
new ChatUiDemoPlugin()
|
|
376
287
|
]);
|
|
377
288
|
}
|
|
378
289
|
apply(player) {
|
package/dist/index.mjs
CHANGED
|
@@ -171,12 +171,6 @@ import {
|
|
|
171
171
|
NodeType
|
|
172
172
|
} from "@player-ui/player";
|
|
173
173
|
import { ExpressionPlugin } from "@player-ui/expression-plugin";
|
|
174
|
-
var isInChatDemo = (node) => {
|
|
175
|
-
if (node.parent?.parent?.type === NodeType.View && node.parent.parent.value.id === "chat-view") {
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
return node.parent?.parent?.type === NodeType.Asset && node.parent.parent.value.id.startsWith("collection-async-chat-demo");
|
|
179
|
-
};
|
|
180
174
|
var createContentFromMessage = (message, id) => ({
|
|
181
175
|
asset: {
|
|
182
176
|
type: "chat-message",
|
|
@@ -190,23 +184,6 @@ var createContentFromMessage = (message, id) => ({
|
|
|
190
184
|
}
|
|
191
185
|
}
|
|
192
186
|
});
|
|
193
|
-
var createBrokenRenderContent = (id) => ({
|
|
194
|
-
asset: {
|
|
195
|
-
id,
|
|
196
|
-
type: "input",
|
|
197
|
-
binding: "binding",
|
|
198
|
-
label: 100
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
var createBrokenTransformContent = (id) => ({
|
|
202
|
-
asset: {
|
|
203
|
-
id,
|
|
204
|
-
type: "input",
|
|
205
|
-
binding: {
|
|
206
|
-
prop: "value"
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
187
|
var ChatUiDemoPlugin = class {
|
|
211
188
|
constructor() {
|
|
212
189
|
this.name = "chat-ui-demo-plugin";
|
|
@@ -224,7 +201,7 @@ var ChatUiDemoPlugin = class {
|
|
|
224
201
|
let deferredPromises = {};
|
|
225
202
|
let allPromiseKeys = [];
|
|
226
203
|
let counter = 0;
|
|
227
|
-
const sendMessage = (context,
|
|
204
|
+
const sendMessage = (context, message, nodeId) => {
|
|
228
205
|
if (nodeId && !(nodeId in deferredPromises)) {
|
|
229
206
|
context.logger?.warn(
|
|
230
207
|
`'send' expression called with unrecognized id '${nodeId}'`
|
|
@@ -237,8 +214,12 @@ var ChatUiDemoPlugin = class {
|
|
|
237
214
|
}
|
|
238
215
|
const keys = nodeId ? [nodeId] : allPromiseKeys;
|
|
239
216
|
for (const id of keys) {
|
|
217
|
+
const content = createContentFromMessage(
|
|
218
|
+
message,
|
|
219
|
+
`chat-demo-${counter++}`
|
|
220
|
+
);
|
|
240
221
|
const resolveFunction = deferredPromises[id];
|
|
241
|
-
resolveFunction?.(
|
|
222
|
+
resolveFunction?.(content);
|
|
242
223
|
delete deferredPromises[id];
|
|
243
224
|
}
|
|
244
225
|
if (nodeId) {
|
|
@@ -249,7 +230,7 @@ var ChatUiDemoPlugin = class {
|
|
|
249
230
|
}
|
|
250
231
|
};
|
|
251
232
|
asyncNodePlugin.hooks.onAsyncNode.tap(this.name, (node) => {
|
|
252
|
-
if (!
|
|
233
|
+
if (node.parent?.parent?.type !== NodeType.Asset && node.parent?.parent?.type !== NodeType.View || !node.parent.parent.value.id.startsWith("collection-async-chat-demo")) {
|
|
253
234
|
return Promise.resolve(void 0);
|
|
254
235
|
}
|
|
255
236
|
return new Promise((res) => {
|
|
@@ -257,38 +238,13 @@ var ChatUiDemoPlugin = class {
|
|
|
257
238
|
allPromiseKeys.push(node.id);
|
|
258
239
|
});
|
|
259
240
|
});
|
|
260
|
-
const sendRealMessage = (context, message, nodeId) => {
|
|
261
|
-
return sendMessage(
|
|
262
|
-
context,
|
|
263
|
-
nodeId,
|
|
264
|
-
() => createContentFromMessage(message, `chat-demo-${counter++}`)
|
|
265
|
-
);
|
|
266
|
-
};
|
|
267
|
-
const sendBrokenMessage = (context, _, nodeId) => {
|
|
268
|
-
return sendMessage(
|
|
269
|
-
context,
|
|
270
|
-
nodeId,
|
|
271
|
-
() => createBrokenRenderContent(`chat-demo-${counter++}`)
|
|
272
|
-
);
|
|
273
|
-
};
|
|
274
|
-
const sendBrokenTransformMessage = (context, _, nodeId) => {
|
|
275
|
-
return sendMessage(
|
|
276
|
-
context,
|
|
277
|
-
nodeId,
|
|
278
|
-
() => createBrokenTransformContent(`chat-demo-${counter++}`)
|
|
279
|
-
);
|
|
280
|
-
};
|
|
281
241
|
player.hooks.view.tap(this.name, (_) => {
|
|
282
242
|
deferredPromises = {};
|
|
283
243
|
allPromiseKeys = [];
|
|
284
244
|
counter = 0;
|
|
285
245
|
});
|
|
286
246
|
const expressionPlugin = new ExpressionPlugin(
|
|
287
|
-
/* @__PURE__ */ new Map([
|
|
288
|
-
["send", sendRealMessage],
|
|
289
|
-
["sendBroken", sendBrokenMessage],
|
|
290
|
-
["sendBrokenTransform", sendBrokenTransformMessage]
|
|
291
|
-
])
|
|
247
|
+
/* @__PURE__ */ new Map([["send", sendMessage]])
|
|
292
248
|
);
|
|
293
249
|
player.registerPlugin(expressionPlugin);
|
|
294
250
|
}
|
|
@@ -316,63 +272,18 @@ var ReferenceAssetsTransformPlugin = class {
|
|
|
316
272
|
|
|
317
273
|
// ../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugin.ts
|
|
318
274
|
import {
|
|
319
|
-
AsyncNodePlugin as
|
|
275
|
+
AsyncNodePlugin as AsyncNodePlugin2,
|
|
320
276
|
AsyncNodePluginPlugin
|
|
321
277
|
} from "@player-ui/async-node-plugin";
|
|
322
|
-
|
|
323
|
-
// ../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugins/error-recovery-plugin.ts
|
|
324
|
-
import { AsyncNodePlugin as AsyncNodePlugin2 } from "@player-ui/async-node-plugin";
|
|
325
|
-
var ErrorRecoveryPlugin = class {
|
|
326
|
-
constructor() {
|
|
327
|
-
this.name = "ErrorRecoveryPlugin";
|
|
328
|
-
}
|
|
329
|
-
/** */
|
|
330
|
-
apply(player) {
|
|
331
|
-
player.applyTo(AsyncNodePlugin2.Symbol, (plugin) => {
|
|
332
|
-
plugin.hooks.onAsyncNodeError.tap(this.name, (err, node) => {
|
|
333
|
-
const playerState = player.getState();
|
|
334
|
-
if (playerState.status !== "in-progress") {
|
|
335
|
-
return;
|
|
336
|
-
}
|
|
337
|
-
const viewId = playerState.controllers.view.currentView?.initialView.id;
|
|
338
|
-
if (viewId !== "chat-view") {
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
return {
|
|
342
|
-
asset: {
|
|
343
|
-
type: "chat-message",
|
|
344
|
-
id: `${node.id}-recovery`,
|
|
345
|
-
value: {
|
|
346
|
-
asset: {
|
|
347
|
-
id: `${node.id}-recovery-text`,
|
|
348
|
-
type: "text",
|
|
349
|
-
value: "Something went wrong, please try again."
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
};
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
}
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
// ../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/plugins/reference-assets/core/src/plugin.ts
|
|
360
|
-
import { CommonTypesPlugin } from "@player-ui/common-types-plugin";
|
|
361
|
-
import { CommonExpressionsPlugin } from "@player-ui/common-expressions-plugin";
|
|
362
|
-
import { ComputedPropertiesPlugin } from "@player-ui/computed-properties-plugin";
|
|
363
278
|
var ReferenceAssetsPlugin = class {
|
|
364
279
|
constructor() {
|
|
365
280
|
this.name = "reference-assets-plugin";
|
|
366
281
|
this.metaPlugin = new MetaPlugin([
|
|
367
|
-
new
|
|
368
|
-
new CommonExpressionsPlugin(),
|
|
369
|
-
new ComputedPropertiesPlugin(),
|
|
370
|
-
new AsyncNodePlugin3({
|
|
282
|
+
new AsyncNodePlugin2({
|
|
371
283
|
plugins: [new AsyncNodePluginPlugin()]
|
|
372
284
|
}),
|
|
373
285
|
new ReferenceAssetsTransformPlugin(),
|
|
374
|
-
new ChatUiDemoPlugin()
|
|
375
|
-
new ErrorRecoveryPlugin()
|
|
286
|
+
new ChatUiDemoPlugin()
|
|
376
287
|
]);
|
|
377
288
|
}
|
|
378
289
|
apply(player) {
|