Esempio n. 1
0
        public Clipboard(IJSRuntime jsRuntime, IJSObjectReferenceStore jsRefStore)
        {
            _jsRuntime  = jsRuntime;
            _jsRefStore = jsRefStore;

            jsRefStore.TryGet(ModuleKey, out _jsInProcessObjectRef);
        }
Esempio n. 2
0
        public ElementService(IJSRuntime jsRuntime, IJSObjectReferenceStore jsRefStore)
        {
            _jsRuntime  = jsRuntime;
            _jsRefStore = jsRefStore;

            jsRefStore.TryGet(ModuleKey, out _jsInProcessObjectRef);
        }
Esempio n. 3
0
        public WindowService(IJSRuntime jsRuntime, IJSObjectReferenceStore jsRefStore)
        {
            _jsRuntime    = jsRuntime;
            _jsRefStore   = jsRefStore;
            _eventManager = new WindowEventManager(jsRuntime, jsRefStore);

            jsRefStore.TryGet(ModuleKey, out _jsInProcessObjectRef);
        }
Esempio n. 4
0
        public WindowEventManager(IJSRuntime jsRuntime, IJSObjectReferenceStore jsRefStore)
        {
            _jsRuntime           = jsRuntime;
            _jsRefStore          = jsRefStore;
            _eventHandlerMapping = new();

            jsRefStore.TryGet(WindowService.ModuleKey, out _jsInProcessObjectRef);
        }
Esempio n. 5
0
        /// <summary>
        /// Imports the file with the given <paramref name="path"/> and stores the reference with the given <paramref name="name"/> in the <paramref name="store"/>.
        /// When a reference with the same <paramref name="name"/> already exists, that reference will be returned.
        /// </summary>
        /// <param name="jsRuntime">The js-runtime to use for importing.</param>
        /// <param name="path">The path of the file to import.</param>
        /// <param name="name">The name used for storing/retrieving the imported reference.</param>
        /// <param name="store">The store in/from which the imported reference gets stored/retrieved.</param>
        public static async ValueTask <T> ImportOrGetModuleAsync <T>(this IJSRuntime jsRuntime, string path, string name, IJSObjectReferenceStore store)
            where T : IJSObjectReference
        {
            _ = path ?? throw new ArgumentNullException(nameof(path));
            _ = name ?? throw new ArgumentNullException(nameof(name));
            _ = store ?? throw new ArgumentNullException(nameof(store));

            if (store.TryGet(name, out var reference))
            {
                if (reference is not T castedReference)
                {
                    throw new ApplicationException($"An module with the name \"{name}\" was already imported as another type \"{reference?.GetType().FullName}\".");
                }

                return(castedReference);
            }

            // Import module from javascript
            var jsObjectRef = await jsRuntime.InvokeAsync <T>("import", path);

            if (jsObjectRef == null)
            {
                throw new ApplicationException($"Module with name \"{name}\" couldn't be imported.");
            }

            // Add module to store
            store.Add(name, jsObjectRef);

            return(jsObjectRef);
        }
Esempio n. 6
0
 /// <summary>
 /// Imports the file with the given <paramref name="path"/> and stores the reference with the given <paramref name="name"/> in the <paramref name="store"/>.
 /// When a reference with the same <paramref name="name"/> already exists, that reference will be returned.
 /// <para>
 /// The type of the reference gets determined automatically by looking at the supplied <see cref="IJSRuntime"/>.
 /// </para>
 /// </summary>
 /// <param name="jsRuntime">The js-runtime to use for importing.</param>
 /// <param name="path">The path of the file to import.</param>
 /// <param name="name">The name used for storing/retrieving the imported reference.</param>
 /// <param name="store">The store in/from which the imported reference gets stored/retrieved.</param>
 public static async ValueTask <IJSObjectReference> ImportOrGetModuleAsync(this IJSRuntime jsRuntime, string path, string name, IJSObjectReferenceStore store)
 {
     return(jsRuntime is IJSInProcessRuntime
         ? await ImportOrGetModuleAsync <IJSInProcessObjectReference>(jsRuntime, path, name, store)
         : await ImportOrGetModuleAsync <IJSObjectReference>(jsRuntime, path, name, store));
 }