1
0
Fork 0
mirror of synced 2024-09-20 19:33:10 +12:00

authenticated iframe PoC

This commit is contained in:
Martin McKeaveney 2024-08-06 18:46:23 +01:00
parent e16929b574
commit ac62a9a5a8
3 changed files with 140 additions and 104 deletions

View file

@ -56,6 +56,7 @@ export const getBindableProperties = (asset, componentId) => {
const stateBindings = getStateBindings()
const selectedRowsBindings = getSelectedRowsBindings(asset)
const roleBindings = getRoleBindings()
const embedBindings = getEmbedBindings()
return [
...contextBindings,
...urlBindings,
@ -64,6 +65,7 @@ export const getBindableProperties = (asset, componentId) => {
...deviceBindings,
...selectedRowsBindings,
...roleBindings,
...embedBindings,
]
}
@ -823,6 +825,26 @@ export const getActionBindings = (actions, actionId) => {
return bindings
}
/**
* Gets all device bindings for embeds.
*/
const getEmbedBindings = () => {
let bindings = []
const safeEmbed = makePropSafe("embed")
bindings = [
{
type: "context",
runtimeBinding: `${safeEmbed}.`,
readableBinding: `ParentData`,
category: "Embed",
icon: "DevicePhone",
display: { type: "object", name: "Parent Data" },
},
]
return bindings
}
/**
* Gets the schema for a certain datasource plus.
* The options which can be passed in are:

View file

@ -42,6 +42,7 @@
import FreeFooter from "components/FreeFooter.svelte"
import MaintenanceScreen from "components/MaintenanceScreen.svelte"
import SnippetsProvider from "./context/SnippetsProvider.svelte"
import EmbedProvider from "./context/EmbedProvider.svelte"
// Provide contexts
setContext("sdk", SDK)
@ -160,6 +161,7 @@
{#if $environmentStore.maintenance.length > 0}
<MaintenanceScreen maintenanceList={$environmentStore.maintenance} />
{:else}
<EmbedProvider>
<DeviceBindingsProvider>
<UserBindingsProvider>
<StateBindingsProvider>
@ -273,6 +275,7 @@
</StateBindingsProvider>
</UserBindingsProvider>
</DeviceBindingsProvider>
</EmbedProvider>
{/if}
</div>
<KeyboardManager />

View file

@ -0,0 +1,11 @@
<script>
import Provider from "./Provider.svelte"
$: data = window.parent?.data
$: console.log("parentWindow", data)
</script>
<Provider key="embed" {data}>
<slot />
</Provider>