UNPKG

speech-rule-engine

Version:

A standalone speech rule engine for XML structures, based on the original engine from ChromeVox.

117 lines 4.09 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.Focus = void 0; const WalkerUtil = __importStar(require("./walker_util.js")); class Focus { static factory(primaryId, nodeIds, rebuilt, dom) { const idFunc = (id) => WalkerUtil.getBySemanticId(dom, id); const dict = rebuilt.nodeDict; const node = idFunc(primaryId); const nodes = nodeIds.map(idFunc); const snodes = nodeIds.map(function (primaryId) { return dict[primaryId]; }); const focus = new Focus(snodes, dict[primaryId]); focus.domNodes = nodes; focus.domPrimary_ = node; focus.allNodes = Focus.generateAllVisibleNodes_(nodeIds, nodes, dict, dom); return focus; } static generateAllVisibleNodes_(ids, nodes, dict, domNode) { let result = []; for (let i = 0, l = ids.length; i < l; i++) { if (nodes[i]) { const allNodes = Focus.getAllVisibleNodes([ids[i]], domNode); if (allNodes.length) { result = result.concat(allNodes); } else { result.push(nodes[i]); } continue; } const virtual = dict[ids[i]]; if (!virtual) { continue; } const childIds = virtual.childNodes.map((x) => x.id.toString()); const children = Focus.getAllVisibleNodes(childIds, domNode); result = result.concat(Focus.generateAllVisibleNodes_(childIds, children, dict, domNode)); } return result; } static getAllVisibleNodes(ids, domNode) { let result = []; for (const id of ids) { result = result.concat(WalkerUtil.getAllBySemanticId(domNode, id)); } return result; } constructor(nodes, primary) { this.nodes = nodes; this.primary = primary; this.domNodes = []; this.domPrimary_ = null; this.allNodes = []; } getSemanticPrimary() { return this.primary; } getSemanticNodes() { return this.nodes; } getNodes() { return this.allNodes; } getDomNodes() { return this.domNodes; } getDomPrimary() { return this.domPrimary_; } toString() { return 'Primary:' + this.domPrimary_ + ' Nodes:' + this.domNodes; } clone() { const focus = new Focus(this.nodes, this.primary); focus.domNodes = this.domNodes; focus.domPrimary_ = this.domPrimary_; focus.allNodes = this.allNodes; return focus; } } exports.Focus = Focus; //# sourceMappingURL=focus.js.map