solid-ui 2.4.23 → 2.4.24
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/main.js +2159 -5039
- package/dist/main.js.map +1 -1
- package/lib/acl/access-controller.js +4 -67
- package/lib/acl/access-controller.js.map +1 -1
- package/lib/acl/access-groups.js +59 -137
- package/lib/acl/access-groups.js.map +1 -1
- package/lib/acl/acl-control.js +14 -54
- package/lib/acl/acl-control.js.map +1 -1
- package/lib/acl/acl.js +32 -107
- package/lib/acl/acl.js.map +1 -1
- package/lib/acl/add-agent-buttons.js +0 -92
- package/lib/acl/add-agent-buttons.js.map +1 -1
- package/lib/acl/index.js +1 -3
- package/lib/acl/index.js.map +1 -1
- package/lib/acl/styles.js +1 -2
- package/lib/acl/styles.js.map +1 -1
- package/lib/chat/bookmarks.js +8 -80
- package/lib/chat/bookmarks.js.map +1 -1
- package/lib/chat/chatLogic.js +109 -180
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/dateFolder.js +6 -91
- package/lib/chat/dateFolder.js.map +1 -1
- package/lib/chat/infinite.js +33 -185
- package/lib/chat/infinite.js.map +1 -1
- package/lib/chat/message.js +37 -150
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/messageTools.js +23 -96
- package/lib/chat/messageTools.js.map +1 -1
- package/lib/chat/thread.js +33 -91
- package/lib/chat/thread.js.map +1 -1
- package/lib/create/create.js +19 -51
- package/lib/create/create.js.map +1 -1
- package/lib/create/index.js +0 -2
- package/lib/create/index.js.map +1 -1
- package/lib/debug.js +0 -8
- package/lib/debug.js.map +1 -1
- package/lib/folders.js +4 -27
- package/lib/folders.js.map +1 -1
- package/lib/footer/index.js +2 -24
- package/lib/footer/index.js.map +1 -1
- package/lib/footer/styleMap.js.map +1 -1
- package/lib/header/empty-profile.js.map +1 -1
- package/lib/header/index.js +3 -72
- package/lib/header/index.js.map +1 -1
- package/lib/header/styleMap.js +4 -3
- package/lib/header/styleMap.js.map +1 -1
- package/lib/iconBase.js +3 -4
- package/lib/iconBase.js.map +1 -1
- package/lib/index.js +5 -46
- package/lib/index.js.map +1 -1
- package/lib/jss/index.js +3 -9
- package/lib/jss/index.js.map +1 -1
- package/lib/log.js +15 -51
- package/lib/log.js.map +1 -1
- package/lib/login/login.js +74 -303
- package/lib/login/login.js.map +1 -1
- package/lib/matrix/index.js +0 -2
- package/lib/matrix/index.js.map +1 -1
- package/lib/matrix/matrix.js +7 -55
- package/lib/matrix/matrix.js.map +1 -1
- package/lib/media/index.js +0 -2
- package/lib/media/index.js.map +1 -1
- package/lib/media/media-capture.js +13 -33
- package/lib/media/media-capture.js.map +1 -1
- package/lib/messageArea.js +23 -64
- package/lib/messageArea.js.map +1 -1
- package/lib/noun_Camera_1618446_000000.js.map +1 -1
- package/lib/ns.js +5 -7
- package/lib/ns.js.map +1 -1
- package/lib/pad.js +48 -234
- package/lib/pad.js.map +1 -1
- package/lib/participation.js +10 -65
- package/lib/participation.js.map +1 -1
- package/lib/preferences.js +21 -42
- package/lib/preferences.js.map +1 -1
- package/lib/signup/config-default.js +1 -8
- package/lib/signup/config-default.js.map +1 -1
- package/lib/signup/signup.js +6 -13
- package/lib/signup/signup.js.map +1 -1
- package/lib/stories/decorators.js +0 -2
- package/lib/stories/decorators.js.map +1 -1
- package/lib/style.js +8 -5
- package/lib/style.js.map +1 -1
- package/lib/style_multiSelect.js +1 -5
- package/lib/style_multiSelect.js.map +1 -1
- package/lib/table.js +309 -322
- package/lib/table.js.map +1 -1
- package/lib/tabs.js +20 -100
- package/lib/tabs.js.map +1 -1
- package/lib/utils/headerFooterHelpers.js +4 -52
- package/lib/utils/headerFooterHelpers.js.map +1 -1
- package/lib/utils/index.js +41 -135
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/label.js +13 -34
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +4 -4
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons/iconLinks.js +0 -8
- package/lib/widgets/buttons/iconLinks.js.map +1 -1
- package/lib/widgets/buttons.js +115 -291
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/dragAndDrop.js +12 -41
- package/lib/widgets/dragAndDrop.js.map +1 -1
- package/lib/widgets/error.js +3 -9
- package/lib/widgets/error.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
- package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
- package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
- package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
- package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
- package/lib/widgets/forms/autocomplete/language.js +6 -55
- package/lib/widgets/forms/autocomplete/language.js.map +1 -1
- package/lib/widgets/forms/autocomplete/publicData.js +12 -131
- package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
- package/lib/widgets/forms/basic.js +12 -55
- package/lib/widgets/forms/basic.js.map +1 -1
- package/lib/widgets/forms/comment.js +1 -15
- package/lib/widgets/forms/comment.js.map +1 -1
- package/lib/widgets/forms/fieldFunction.js +3 -16
- package/lib/widgets/forms/fieldFunction.js.map +1 -1
- package/lib/widgets/forms/fieldParams.js +0 -12
- package/lib/widgets/forms/fieldParams.js.map +1 -1
- package/lib/widgets/forms/formStyle.js +1 -14
- package/lib/widgets/forms/formStyle.js.map +1 -1
- package/lib/widgets/forms.js +70 -474
- package/lib/widgets/forms.js.map +1 -1
- package/lib/widgets/index.js +0 -21
- package/lib/widgets/index.js.map +1 -1
- package/lib/widgets/multiSelect.js +48 -171
- package/lib/widgets/multiSelect.js.map +1 -1
- package/lib/widgets/peoplePicker.js +20 -90
- package/lib/widgets/peoplePicker.js.map +1 -1
- package/lib/widgets/widgetHelpers.js +2 -9
- package/lib/widgets/widgetHelpers.js.map +1 -1
- package/package.json +28 -28
package/lib/matrix/matrix.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix.js","names":["kb","solidLogicSingleton","store","matrixForQuery","dom","query","vx","vy","vvalue","options","whenDone","matrix","createElement","header","corner","appendChild","setAttribute","lastHeader","columns","rows","setCell","cell","x","y","value","firstChild","removeChild","style","textAlign","cellFunction","textContent","utils","label","old","rowFor","y1","toNT","tr","termType","fetcher","nowOrWhenFetched","uri","split","undefined","ok","_body","_response","i","length","$rdf","fromNT","dataValueNT","ele","nextSibling","yDecreasing","insertBefore","columnNumberFor","x1","xNT","col","xDecreasing","slice","concat","push","row","td","t","j","markOldCells","children","clearOldCells","colsUsed","rowsUsed","set_y","k","set_x","newcolumns","refresh","addCellFromBindings","bindings","toString","colNo"],"sources":["../../src/matrix/matrix.ts"],"sourcesContent":["// Build a 2D matrix of values\n//\n// dom AKA document\n// query a Query object of rdflib.js with a valid pattern\n// vx A variable object, the one to be used for the X variable (horiz)\n// vy A variable object, the one to be used for the Y variable (vertical)\n// vvalue A variable object, the one to be used for the cell value\n// returns A DOM element with the matrix in it, which has a .refresh() function.\n//\n// Options:\n// cellFunction(td, x, y, value) fill the TD element of a single cell\n// xDecreasing set true for x axis to be in decreasing order.\n// yDecreasing set true for y axis to be in decreasing order.\n// set_x array of X values to be define initial rows (order irrelevant)\n// set_y array of Y values to be define initial columns\n//\n// Features:\n// Header row at top (x axis) and left (y-axis) generated automatically.\n// Extra rows and columns are inserted as needed to hold new data points\n// matrix.refresh() will re-run the query and adjust the display\n\nimport * as utils from '../utils'\nimport * as $rdf from 'rdflib'\nimport { MatrixOptions } from './types'\nimport { solidLogicSingleton } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\nexport function matrixForQuery (\n dom: HTMLDocument,\n query: $rdf.Query,\n vx: $rdf.Variable,\n vy: $rdf.Variable,\n vvalue: $rdf.Variable,\n options: MatrixOptions,\n whenDone: () => void\n) {\n // @@ TODO Remove need to cast to any\n const matrix: any = dom.createElement('table')\n const header = dom.createElement('tr')\n const corner = header.appendChild(dom.createElement('td'))\n corner.setAttribute('class', 'MatrixCorner')\n matrix.appendChild(header) // just one for now\n matrix.lastHeader = header // Element before data\n let columns: any[] = [] // Vector\n const rows: any[] = [] // Associative array\n\n const setCell = function (cell, x, y, value) {\n while (cell.firstChild) {\n // Empty any previous\n cell.removeChild(cell.firstChild)\n }\n cell.setAttribute('style', '')\n cell.style.textAlign = 'center'\n\n if (options.cellFunction) {\n options.cellFunction(cell, x, y, value)\n } else {\n cell.textContent = utils.label(value)\n cell.setAttribute('style', 'padding: 0.3em')\n }\n delete cell.old\n }\n\n const rowFor = function (y1) {\n const y = y1.toNT()\n if (rows[y]) return rows[y]\n // @@ TODO Remove need for casting to any\n const tr: any = dom.createElement('tr')\n const header = tr.appendChild(dom.createElement('td'))\n header.setAttribute('style', 'padding: 0.3em;')\n header.textContent = utils.label(y1) // first approximation\n if (y1.termType === 'NamedNode') {\n kb.fetcher!.nowOrWhenFetched(y1.uri.split('#')[0], undefined, function (\n ok,\n _body,\n _response\n ) {\n if (ok) header.textContent = utils.label(y1)\n })\n }\n for (let i = 0; i < columns.length; i++) {\n setCell(\n tr.appendChild(dom.createElement('td')),\n $rdf.fromNT(columns[i]),\n y1,\n null\n )\n }\n tr.dataValueNT = y\n rows[y] = tr\n for (let ele = matrix.lastHeader.nextSibling; ele; ele = ele.nextSibling) {\n // skip header\n if (\n (y > ele.dataValueNT && options && options.yDecreasing) ||\n (y < ele.dataValueNT && !(options && options.yDecreasing))\n ) {\n return matrix.insertBefore(tr, ele) // return the tr\n }\n }\n return matrix.appendChild(tr) // return the tr\n }\n\n const columnNumberFor = function (x1): number {\n const xNT: any = x1.toNT() // xNT is a NT string\n let col: any = null\n // These are data columns (not headings)\n for (let i = 0; i < columns.length; i++) {\n if (columns[i] === xNT) {\n return i\n }\n\n if (\n (xNT > columns[i] && options.xDecreasing) ||\n (xNT < columns[i] && !options.xDecreasing)\n ) {\n columns = columns\n .slice(0, i)\n .concat([xNT])\n .concat(columns.slice(i))\n col = i\n break\n }\n }\n\n if (col === null) {\n col = columns.length\n columns.push(xNT)\n }\n\n // col is the number of the new column, starting from 0\n for (let row = matrix.firstChild; row; row = row.nextSibling) {\n // For every row header or not\n const y = row.dataValueNT\n const td = dom.createElement('td') // Add a new cell\n td.style.textAlign = 'center'\n if (row === matrix.firstChild) {\n td.textContent = utils.label(x1)\n } else {\n setCell(td, x1, $rdf.fromNT(y), null)\n }\n if (col === columns.length - 1) {\n row.appendChild(td)\n } else {\n let t = row.firstChild\n for (let j = 0; j < col + 1; j++) {\n // Skip header col too\n t = t.nextSibling\n }\n row.insertBefore(td, t)\n }\n }\n return col\n }\n\n const markOldCells = function () {\n for (let i = 1; i < matrix.children.length; i++) {\n const row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n row.children[j].old = true\n }\n }\n }\n\n const clearOldCells = function () {\n let row, cell\n const colsUsed: any[] = []\n const rowsUsed: any[] = []\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowsUsed[options.set_y[k]] = true\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n colsUsed[columnNumberFor(options.set_x[k]) + 1] = true\n }\n }\n\n for (let i = 1; i < matrix.children.length; i++) {\n row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n cell = row.children[j]\n if (cell.old) {\n const y = $rdf.fromNT(row.dataValueNT)\n const x = $rdf.fromNT(columns[j - 1])\n setCell(cell, x, y, null)\n } else {\n rowsUsed[row.dataValueNT] = true\n colsUsed[j] = true\n }\n }\n }\n\n for (let i = 0; i < matrix.children.length; i++) {\n row = matrix.children[i]\n if (i > 0 && !rowsUsed[row.dataValueNT]) {\n delete rows[row.dataValueNT]\n matrix.removeChild(row)\n } else {\n for (let j = row.children.length - 1; j > 0; j--) {\n // backwards\n const cell = row.children[j]\n if (!colsUsed[j]) {\n row.removeChild(cell)\n }\n }\n }\n }\n const newcolumns: any[] = []\n for (let j = 0; j < columns.length; j++) {\n if (colsUsed[j + 1]) {\n newcolumns.push(columns[j])\n }\n }\n columns = newcolumns\n }\n\n matrix.refresh = function () {\n markOldCells()\n kb.query(query, addCellFromBindings, undefined, clearOldCells)\n }\n\n const addCellFromBindings = function (bindings) {\n const x = bindings[vx.toString()]\n const y = bindings[vy.toString()]\n const value = bindings[(vvalue.toString())]\n const row = rowFor(y)\n const colNo = columnNumberFor(x)\n const cell = row.children[colNo + 1] // number of Y axis headings\n setCell(cell, x, y, value)\n }\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowFor(options.set_y[k])\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n columnNumberFor(options.set_x[k])\n }\n }\n\n kb.query(query, addCellFromBindings, undefined, whenDone) // Populate the matrix\n return matrix\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"matrix.js","names":["kb","solidLogicSingleton","store","matrixForQuery","dom","query","vx","vy","vvalue","options","whenDone","matrix","createElement","header","corner","appendChild","setAttribute","lastHeader","columns","rows","setCell","cell","x","y","value","firstChild","removeChild","style","textAlign","cellFunction","textContent","utils","label","old","rowFor","y1","toNT","tr","termType","fetcher","nowOrWhenFetched","uri","split","undefined","ok","_body","_response","i","length","$rdf","fromNT","dataValueNT","ele","nextSibling","yDecreasing","insertBefore","columnNumberFor","x1","xNT","col","xDecreasing","slice","concat","push","row","td","t","j","markOldCells","children","clearOldCells","colsUsed","rowsUsed","set_y","k","set_x","newcolumns","refresh","addCellFromBindings","bindings","toString","colNo"],"sources":["../../src/matrix/matrix.ts"],"sourcesContent":["// Build a 2D matrix of values\n//\n// dom AKA document\n// query a Query object of rdflib.js with a valid pattern\n// vx A variable object, the one to be used for the X variable (horiz)\n// vy A variable object, the one to be used for the Y variable (vertical)\n// vvalue A variable object, the one to be used for the cell value\n// returns A DOM element with the matrix in it, which has a .refresh() function.\n//\n// Options:\n// cellFunction(td, x, y, value) fill the TD element of a single cell\n// xDecreasing set true for x axis to be in decreasing order.\n// yDecreasing set true for y axis to be in decreasing order.\n// set_x array of X values to be define initial rows (order irrelevant)\n// set_y array of Y values to be define initial columns\n//\n// Features:\n// Header row at top (x axis) and left (y-axis) generated automatically.\n// Extra rows and columns are inserted as needed to hold new data points\n// matrix.refresh() will re-run the query and adjust the display\n\nimport * as utils from '../utils'\nimport * as $rdf from 'rdflib'\nimport { MatrixOptions } from './types'\nimport { solidLogicSingleton } from 'solid-logic'\n\nconst kb = solidLogicSingleton.store\n\nexport function matrixForQuery (\n dom: HTMLDocument,\n query: $rdf.Query,\n vx: $rdf.Variable,\n vy: $rdf.Variable,\n vvalue: $rdf.Variable,\n options: MatrixOptions,\n whenDone: () => void\n) {\n // @@ TODO Remove need to cast to any\n const matrix: any = dom.createElement('table')\n const header = dom.createElement('tr')\n const corner = header.appendChild(dom.createElement('td'))\n corner.setAttribute('class', 'MatrixCorner')\n matrix.appendChild(header) // just one for now\n matrix.lastHeader = header // Element before data\n let columns: any[] = [] // Vector\n const rows: any[] = [] // Associative array\n\n const setCell = function (cell, x, y, value) {\n while (cell.firstChild) {\n // Empty any previous\n cell.removeChild(cell.firstChild)\n }\n cell.setAttribute('style', '')\n cell.style.textAlign = 'center'\n\n if (options.cellFunction) {\n options.cellFunction(cell, x, y, value)\n } else {\n cell.textContent = utils.label(value)\n cell.setAttribute('style', 'padding: 0.3em')\n }\n delete cell.old\n }\n\n const rowFor = function (y1) {\n const y = y1.toNT()\n if (rows[y]) return rows[y]\n // @@ TODO Remove need for casting to any\n const tr: any = dom.createElement('tr')\n const header = tr.appendChild(dom.createElement('td'))\n header.setAttribute('style', 'padding: 0.3em;')\n header.textContent = utils.label(y1) // first approximation\n if (y1.termType === 'NamedNode') {\n kb.fetcher!.nowOrWhenFetched(y1.uri.split('#')[0], undefined, function (\n ok,\n _body,\n _response\n ) {\n if (ok) header.textContent = utils.label(y1)\n })\n }\n for (let i = 0; i < columns.length; i++) {\n setCell(\n tr.appendChild(dom.createElement('td')),\n $rdf.fromNT(columns[i]),\n y1,\n null\n )\n }\n tr.dataValueNT = y\n rows[y] = tr\n for (let ele = matrix.lastHeader.nextSibling; ele; ele = ele.nextSibling) {\n // skip header\n if (\n (y > ele.dataValueNT && options && options.yDecreasing) ||\n (y < ele.dataValueNT && !(options && options.yDecreasing))\n ) {\n return matrix.insertBefore(tr, ele) // return the tr\n }\n }\n return matrix.appendChild(tr) // return the tr\n }\n\n const columnNumberFor = function (x1): number {\n const xNT: any = x1.toNT() // xNT is a NT string\n let col: any = null\n // These are data columns (not headings)\n for (let i = 0; i < columns.length; i++) {\n if (columns[i] === xNT) {\n return i\n }\n\n if (\n (xNT > columns[i] && options.xDecreasing) ||\n (xNT < columns[i] && !options.xDecreasing)\n ) {\n columns = columns\n .slice(0, i)\n .concat([xNT])\n .concat(columns.slice(i))\n col = i\n break\n }\n }\n\n if (col === null) {\n col = columns.length\n columns.push(xNT)\n }\n\n // col is the number of the new column, starting from 0\n for (let row = matrix.firstChild; row; row = row.nextSibling) {\n // For every row header or not\n const y = row.dataValueNT\n const td = dom.createElement('td') // Add a new cell\n td.style.textAlign = 'center'\n if (row === matrix.firstChild) {\n td.textContent = utils.label(x1)\n } else {\n setCell(td, x1, $rdf.fromNT(y), null)\n }\n if (col === columns.length - 1) {\n row.appendChild(td)\n } else {\n let t = row.firstChild\n for (let j = 0; j < col + 1; j++) {\n // Skip header col too\n t = t.nextSibling\n }\n row.insertBefore(td, t)\n }\n }\n return col\n }\n\n const markOldCells = function () {\n for (let i = 1; i < matrix.children.length; i++) {\n const row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n row.children[j].old = true\n }\n }\n }\n\n const clearOldCells = function () {\n let row, cell\n const colsUsed: any[] = []\n const rowsUsed: any[] = []\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowsUsed[options.set_y[k]] = true\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n colsUsed[columnNumberFor(options.set_x[k]) + 1] = true\n }\n }\n\n for (let i = 1; i < matrix.children.length; i++) {\n row = matrix.children[i]\n for (let j = 1; j < row.children.length; j++) {\n cell = row.children[j]\n if (cell.old) {\n const y = $rdf.fromNT(row.dataValueNT)\n const x = $rdf.fromNT(columns[j - 1])\n setCell(cell, x, y, null)\n } else {\n rowsUsed[row.dataValueNT] = true\n colsUsed[j] = true\n }\n }\n }\n\n for (let i = 0; i < matrix.children.length; i++) {\n row = matrix.children[i]\n if (i > 0 && !rowsUsed[row.dataValueNT]) {\n delete rows[row.dataValueNT]\n matrix.removeChild(row)\n } else {\n for (let j = row.children.length - 1; j > 0; j--) {\n // backwards\n const cell = row.children[j]\n if (!colsUsed[j]) {\n row.removeChild(cell)\n }\n }\n }\n }\n const newcolumns: any[] = []\n for (let j = 0; j < columns.length; j++) {\n if (colsUsed[j + 1]) {\n newcolumns.push(columns[j])\n }\n }\n columns = newcolumns\n }\n\n matrix.refresh = function () {\n markOldCells()\n kb.query(query, addCellFromBindings, undefined, clearOldCells)\n }\n\n const addCellFromBindings = function (bindings) {\n const x = bindings[vx.toString()]\n const y = bindings[vy.toString()]\n const value = bindings[(vvalue.toString())]\n const row = rowFor(y)\n const colNo = columnNumberFor(x)\n const cell = row.children[colNo + 1] // number of Y axis headings\n setCell(cell, x, y, value)\n }\n\n if (options.set_y) {\n // Knows y values create rows\n for (let k = 0; k < options.set_y.length; k++) {\n rowFor(options.set_y[k])\n }\n }\n if (options.set_x) {\n for (let k = 0; k < options.set_x.length; k++) {\n columnNumberFor(options.set_x[k])\n }\n }\n\n kb.query(query, addCellFromBindings, undefined, whenDone) // Populate the matrix\n return matrix\n}\n"],"mappings":"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"}
|
package/lib/media/index.js
CHANGED
|
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.media = void 0;
|
|
7
|
-
|
|
8
7
|
var _mediaCapture = require("./media-capture");
|
|
9
|
-
|
|
10
8
|
var media = {
|
|
11
9
|
cameraCaptureControl: _mediaCapture.cameraCaptureControl,
|
|
12
10
|
cameraButton: _mediaCapture.cameraButton
|
package/lib/media/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["media","cameraCaptureControl","cameraButton"],"sources":["../../src/media/index.ts"],"sourcesContent":["import {\n cameraCaptureControl,\n cameraButton\n} from './media-capture'\n\nexport const media = {\n cameraCaptureControl,\n cameraButton\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["media","cameraCaptureControl","cameraButton"],"sources":["../../src/media/index.ts"],"sourcesContent":["import {\n cameraCaptureControl,\n cameraButton\n} from './media-capture'\n\nexport const media = {\n cameraCaptureControl,\n cameraButton\n}\n"],"mappings":";;;;;;AAAA;AAKO,IAAMA,KAAK,GAAG;EACnBC,oBAAoB,EAApBA,kCAAoB;EACpBC,YAAY,EAAZA;AACF,CAAC;AAAA"}
|
|
@@ -1,29 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.cameraButton = cameraButton;
|
|
11
9
|
exports.cameraCaptureControl = cameraCaptureControl;
|
|
12
|
-
|
|
13
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
14
|
-
|
|
15
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
16
|
-
|
|
17
12
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
18
|
-
|
|
19
13
|
var _iconBase = require("../iconBase");
|
|
20
|
-
|
|
21
14
|
var widgets = _interopRequireWildcard(require("../widgets"));
|
|
22
|
-
|
|
23
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
24
|
-
|
|
25
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
|
-
|
|
27
17
|
/// /////////////////////////////////////////////
|
|
28
18
|
//
|
|
29
19
|
// Media input widget
|
|
@@ -40,22 +30,22 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
40
30
|
//
|
|
41
31
|
|
|
42
32
|
/** @module mediaCapture */
|
|
43
|
-
var cameraIcon = _iconBase.icons.iconBase + 'noun_Camera_1618446_000000.svg'; // Get it from github
|
|
44
33
|
|
|
34
|
+
var cameraIcon = _iconBase.icons.iconBase + 'noun_Camera_1618446_000000.svg'; // Get it from github
|
|
45
35
|
var retakeIcon = _iconBase.icons.iconBase + 'noun_479395.svg'; // Get it from github
|
|
46
36
|
|
|
47
37
|
var canvasWidth = '640';
|
|
48
38
|
var canvasHeight = '480';
|
|
49
|
-
var controlStyle = "border-radius: 0.5em; margin: 0.8em; width: ".concat(canvasWidth, "; height:").concat(canvasHeight, ";");
|
|
50
|
-
|
|
39
|
+
var controlStyle = "border-radius: 0.5em; margin: 0.8em; width: ".concat(canvasWidth, "; height:").concat(canvasHeight, ";");
|
|
40
|
+
// const controlStyle = 'border-radius: 0.5em; margin: 0.8em; width: 320; height:240;'
|
|
51
41
|
var contentType = 'image/png';
|
|
42
|
+
|
|
52
43
|
/** A control to capture a picture using camera
|
|
53
44
|
* @param {Docuemnt} dom - The Document object
|
|
54
45
|
* @param {IndexedForumla} store - The quadstore to store data in
|
|
55
46
|
* @param {NamedNode} getImageDoc() - NN of the image file to be created
|
|
56
47
|
* @param {function} doneCallback - Called when a picture has been taken
|
|
57
48
|
*/
|
|
58
|
-
|
|
59
49
|
function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
|
|
60
50
|
var div = dom.createElement('div');
|
|
61
51
|
var destination, imageBlob, player, canvas;
|
|
@@ -83,7 +73,6 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
|
|
|
83
73
|
|
|
84
74
|
var sendButton = buttons.appendChild(dom.createElement('td')) // Confirm and save button
|
|
85
75
|
.appendChild(widgets.continueButton(dom)); // @@ or send icon??
|
|
86
|
-
|
|
87
76
|
sendButton.addEventListener('click', function (_event) {
|
|
88
77
|
saveBlob(imageBlob, destination);
|
|
89
78
|
});
|
|
@@ -94,24 +83,19 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
|
|
|
94
83
|
player.setAttribute('controls', '1');
|
|
95
84
|
player.setAttribute('autoplay', '1');
|
|
96
85
|
player.setAttribute('style', controlStyle);
|
|
97
|
-
|
|
98
86
|
if (!navigator.mediaDevices) {
|
|
99
87
|
throw new Error('navigator.mediaDevices not available');
|
|
100
88
|
}
|
|
101
|
-
|
|
102
89
|
navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
|
|
103
90
|
player.srcObject = stream;
|
|
104
91
|
shutterButton.style.visibility = 'visible'; // Enable
|
|
105
|
-
|
|
106
92
|
sendButton.style.visibility = 'collapse';
|
|
107
93
|
retakeButton.style.visibility = 'collapse';
|
|
108
94
|
});
|
|
109
95
|
}
|
|
110
|
-
|
|
111
96
|
var constraints = {
|
|
112
97
|
video: true
|
|
113
98
|
};
|
|
114
|
-
|
|
115
99
|
function retake() {
|
|
116
100
|
main.removeChild(canvas);
|
|
117
101
|
displayPlayer(); // Make new one as old one is stuck black
|
|
@@ -132,8 +116,8 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
|
|
|
132
116
|
debug.log(msg);
|
|
133
117
|
destination = getImageDoc();
|
|
134
118
|
imageBlob = blob; // save for review
|
|
135
|
-
|
|
136
|
-
|
|
119
|
+
reviewImage();
|
|
120
|
+
// alert(msg)
|
|
137
121
|
}, contentType); // toBlob
|
|
138
122
|
}
|
|
139
123
|
|
|
@@ -150,11 +134,11 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
|
|
|
150
134
|
});
|
|
151
135
|
}
|
|
152
136
|
}
|
|
153
|
-
|
|
154
137
|
function saveBlob(blob, destination) {
|
|
155
|
-
var contentType = blob.type;
|
|
156
|
-
|
|
157
|
-
debug.log('Putting ' + blob.size + ' bytes of ' + contentType + ' to ' + destination)
|
|
138
|
+
var contentType = blob.type;
|
|
139
|
+
// if (!confirm('Save picture to ' + destination + ' ?')) return
|
|
140
|
+
debug.log('Putting ' + blob.size + ' bytes of ' + contentType + ' to ' + destination)
|
|
141
|
+
// @@ TODO Remove casting
|
|
158
142
|
;
|
|
159
143
|
store.fetcher.webOperation('PUT', destination.uri, {
|
|
160
144
|
data: blob,
|
|
@@ -167,12 +151,13 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
|
|
|
167
151
|
stopVideo();
|
|
168
152
|
alert(err);
|
|
169
153
|
});
|
|
170
|
-
}
|
|
171
|
-
|
|
154
|
+
}
|
|
172
155
|
|
|
156
|
+
// Attach the video stream to the video element and autoplay.
|
|
173
157
|
displayPlayer();
|
|
174
158
|
return div;
|
|
175
159
|
}
|
|
160
|
+
|
|
176
161
|
/** A button to capture a picture using camera
|
|
177
162
|
* @param {Docuemnt} dom - The Document object
|
|
178
163
|
* @param {IndexedForumla} store - The quadstore to store data in
|
|
@@ -183,16 +168,13 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
|
|
|
183
168
|
* This expacts the buttton to a large control when it is pressed
|
|
184
169
|
*/
|
|
185
170
|
|
|
186
|
-
|
|
187
171
|
function cameraButton(dom, store, getImageDoc, doneCallback) {
|
|
188
172
|
var div = dom.createElement('div');
|
|
189
173
|
var but = widgets.button(dom, cameraIcon, 'Take picture');
|
|
190
174
|
var control;
|
|
191
|
-
|
|
192
175
|
function restoreButton(_x) {
|
|
193
176
|
return _restoreButton.apply(this, arguments);
|
|
194
177
|
}
|
|
195
|
-
|
|
196
178
|
function _restoreButton() {
|
|
197
179
|
_restoreButton = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(imageDoc) {
|
|
198
180
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
@@ -202,7 +184,6 @@ function cameraButton(dom, store, getImageDoc, doneCallback) {
|
|
|
202
184
|
div.removeChild(control);
|
|
203
185
|
div.appendChild(but);
|
|
204
186
|
doneCallback(imageDoc);
|
|
205
|
-
|
|
206
187
|
case 3:
|
|
207
188
|
case "end":
|
|
208
189
|
return _context.stop();
|
|
@@ -212,7 +193,6 @@ function cameraButton(dom, store, getImageDoc, doneCallback) {
|
|
|
212
193
|
}));
|
|
213
194
|
return _restoreButton.apply(this, arguments);
|
|
214
195
|
}
|
|
215
|
-
|
|
216
196
|
div.appendChild(but);
|
|
217
197
|
but.addEventListener('click', function (_event) {
|
|
218
198
|
div.removeChild(but);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-capture.js","names":["cameraIcon","icons","iconBase","retakeIcon","canvasWidth","canvasHeight","controlStyle","contentType","cameraCaptureControl","dom","store","getImageDoc","doneCallback","div","createElement","destination","imageBlob","player","canvas","table","appendChild","mainTR","main","setAttribute","buttons","widgets","cancelButton","addEventListener","_event","stopVideo","retakeButton","button","retake","style","visibility","shutterButton","grabCanvas","sendButton","continueButton","saveBlob","displayPlayer","navigator","mediaDevices","Error","getUserMedia","constraints","then","stream","srcObject","video","removeChild","context","getContext","drawImage","width","height","parentNode","toBlob","blob","msg","type","size","debug","log","reviewImage","getVideoTracks","forEach","track","stop","fetcher","webOperation","uri","data","_resp","err","alert","cameraButton","but","control","restoreButton","imageDoc"],"sources":["../../src/media/media-capture.ts"],"sourcesContent":["/// /////////////////////////////////////////////\n//\n// Media input widget\n//\n//\n// Workflow:\n// The HTML5 functionality (on mobille) is to prompt for either\n// a realtime camera capture , OR a selection from images already ont the device\n// (eg camera roll).\n//\n// The solid alternative is to either take a phtoto\n// or access cemra roll (etc) OR to access solid cloud storage of favorite photo almbums.\n// (Especially latest taken ones)\n//\nimport * as debug from '../debug'\n\n/** @module mediaCapture */\n\nimport { icons } from '../iconBase'\nimport * as widgets from '../widgets'\nimport { IndexedFormula, NamedNode } from 'rdflib'\n\nconst cameraIcon = icons.iconBase + 'noun_Camera_1618446_000000.svg' // Get it from github\nconst retakeIcon = icons.iconBase + 'noun_479395.svg' // Get it from github\n\nconst canvasWidth = '640'\nconst canvasHeight = '480'\n\nconst controlStyle = `border-radius: 0.5em; margin: 0.8em; width: ${canvasWidth}; height:${canvasHeight};`\n// const controlStyle = 'border-radius: 0.5em; margin: 0.8em; width: 320; height:240;'\nconst contentType = 'image/png'\n\n/** A control to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {NamedNode} getImageDoc() - NN of the image file to be created\n * @param {function} doneCallback - Called when a picture has been taken\n */\nexport function cameraCaptureControl (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n) {\n const div = dom.createElement('div')\n let destination, imageBlob, player, canvas\n\n const table = div.appendChild(dom.createElement('table'))\n const mainTR = table.appendChild(dom.createElement('tr'))\n const main = mainTR.appendChild(dom.createElement('td'))\n main.setAttribute('colspan', '4')\n\n const buttons = table.appendChild(dom.createElement('tr'))\n\n buttons\n .appendChild(dom.createElement('td')) // Cancel button\n .appendChild(widgets.cancelButton(dom))\n .addEventListener('click', _event => {\n stopVideo()\n doneCallback(null)\n })\n\n const retakeButton = buttons\n .appendChild(dom.createElement('td')) // Retake button\n .appendChild(widgets.button(dom, retakeIcon, 'Retake'))\n retakeButton.addEventListener('click', _event => {\n retake()\n })\n retakeButton.style.visibility = 'collapse' // Hide for now\n\n const shutterButton = buttons\n .appendChild(dom.createElement('td')) // Trigger capture button\n .appendChild(\n widgets.button(dom, icons.iconBase + 'noun_10636.svg', 'Snap')\n )\n shutterButton.addEventListener('click', grabCanvas)\n shutterButton.style.visibility = 'collapse' // Hide for now\n\n const sendButton = buttons\n .appendChild(dom.createElement('td')) // Confirm and save button\n .appendChild(widgets.continueButton(dom)) // @@ or send icon??\n sendButton.addEventListener('click', _event => {\n saveBlob(imageBlob, destination)\n })\n sendButton.style.visibility = 'collapse' // Hide for now\n\n function displayPlayer () {\n player = main.appendChild(dom.createElement('video'))\n player.setAttribute('controls', '1')\n player.setAttribute('autoplay', '1')\n player.setAttribute('style', controlStyle)\n if (!navigator.mediaDevices) {\n throw new Error('navigator.mediaDevices not available')\n }\n navigator.mediaDevices.getUserMedia(constraints).then(stream => {\n player.srcObject = stream\n shutterButton.style.visibility = 'visible' // Enable\n sendButton.style.visibility = 'collapse'\n retakeButton.style.visibility = 'collapse'\n })\n }\n\n const constraints = {\n video: true\n }\n\n function retake () {\n main.removeChild(canvas)\n displayPlayer() // Make new one as old one is stuck black\n }\n\n function grabCanvas () {\n // Draw the video frame to the canvas.\n canvas = dom.createElement('canvas')\n canvas.setAttribute('width', canvasWidth)\n canvas.setAttribute('height', canvasHeight)\n canvas.setAttribute('style', controlStyle)\n main.appendChild(canvas)\n\n const context = canvas.getContext('2d')\n context.drawImage(player, 0, 0, canvas.width, canvas.height)\n\n player.parentNode.removeChild(player)\n\n canvas.toBlob(blob => {\n const msg = `got blob type ${blob.type} size ${blob.size}`\n debug.log(msg)\n destination = getImageDoc()\n imageBlob = blob // save for review\n reviewImage()\n // alert(msg)\n }, contentType) // toBlob\n }\n\n function reviewImage () {\n sendButton.style.visibility = 'visible'\n retakeButton.style.visibility = 'visible'\n shutterButton.style.visibility = 'collapse' // Hide for now\n }\n\n function stopVideo () {\n if (player && player.srcObject) {\n player.srcObject.getVideoTracks().forEach(track => track.stop())\n }\n }\n function saveBlob (blob, destination) {\n const contentType = blob.type\n // if (!confirm('Save picture to ' + destination + ' ?')) return\n debug.log(\n 'Putting ' + blob.size + ' bytes of ' + contentType + ' to ' + destination\n )\n // @@ TODO Remove casting\n ;(store as any).fetcher\n .webOperation('PUT', destination.uri, {\n data: blob,\n contentType\n })\n .then(\n _resp => {\n debug.log('ok saved ' + destination)\n stopVideo()\n doneCallback(destination)\n },\n err => {\n stopVideo()\n alert(err)\n }\n )\n }\n\n // Attach the video stream to the video element and autoplay.\n displayPlayer()\n return div\n}\n\n/** A button to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {fuunction} getImageDoc - returns NN of the image file to be created\n * @param {function<Node>} doneCallback - called with the image taken\n * @returns {DomElement} - A div element with the buton in it\n *\n * This expacts the buttton to a large control when it is pressed\n */\n\nexport function cameraButton (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n): HTMLElement {\n const div = dom.createElement('div')\n const but = widgets.button(dom, cameraIcon, 'Take picture')\n let control\n async function restoreButton (imageDoc) {\n div.removeChild(control)\n div.appendChild(but)\n doneCallback(imageDoc)\n }\n div.appendChild(but)\n but.addEventListener('click', _event => {\n div.removeChild(but)\n control = cameraCaptureControl(\n dom,\n store,\n getImageDoc,\n restoreButton\n )\n div.appendChild(control)\n })\n return div\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media-capture.js","names":["cameraIcon","icons","iconBase","retakeIcon","canvasWidth","canvasHeight","controlStyle","contentType","cameraCaptureControl","dom","store","getImageDoc","doneCallback","div","createElement","destination","imageBlob","player","canvas","table","appendChild","mainTR","main","setAttribute","buttons","widgets","cancelButton","addEventListener","_event","stopVideo","retakeButton","button","retake","style","visibility","shutterButton","grabCanvas","sendButton","continueButton","saveBlob","displayPlayer","navigator","mediaDevices","Error","getUserMedia","constraints","then","stream","srcObject","video","removeChild","context","getContext","drawImage","width","height","parentNode","toBlob","blob","msg","type","size","debug","log","reviewImage","getVideoTracks","forEach","track","stop","fetcher","webOperation","uri","data","_resp","err","alert","cameraButton","but","control","restoreButton","imageDoc"],"sources":["../../src/media/media-capture.ts"],"sourcesContent":["/// /////////////////////////////////////////////\n//\n// Media input widget\n//\n//\n// Workflow:\n// The HTML5 functionality (on mobille) is to prompt for either\n// a realtime camera capture , OR a selection from images already ont the device\n// (eg camera roll).\n//\n// The solid alternative is to either take a phtoto\n// or access cemra roll (etc) OR to access solid cloud storage of favorite photo almbums.\n// (Especially latest taken ones)\n//\nimport * as debug from '../debug'\n\n/** @module mediaCapture */\n\nimport { icons } from '../iconBase'\nimport * as widgets from '../widgets'\nimport { IndexedFormula, NamedNode } from 'rdflib'\n\nconst cameraIcon = icons.iconBase + 'noun_Camera_1618446_000000.svg' // Get it from github\nconst retakeIcon = icons.iconBase + 'noun_479395.svg' // Get it from github\n\nconst canvasWidth = '640'\nconst canvasHeight = '480'\n\nconst controlStyle = `border-radius: 0.5em; margin: 0.8em; width: ${canvasWidth}; height:${canvasHeight};`\n// const controlStyle = 'border-radius: 0.5em; margin: 0.8em; width: 320; height:240;'\nconst contentType = 'image/png'\n\n/** A control to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {NamedNode} getImageDoc() - NN of the image file to be created\n * @param {function} doneCallback - Called when a picture has been taken\n */\nexport function cameraCaptureControl (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n) {\n const div = dom.createElement('div')\n let destination, imageBlob, player, canvas\n\n const table = div.appendChild(dom.createElement('table'))\n const mainTR = table.appendChild(dom.createElement('tr'))\n const main = mainTR.appendChild(dom.createElement('td'))\n main.setAttribute('colspan', '4')\n\n const buttons = table.appendChild(dom.createElement('tr'))\n\n buttons\n .appendChild(dom.createElement('td')) // Cancel button\n .appendChild(widgets.cancelButton(dom))\n .addEventListener('click', _event => {\n stopVideo()\n doneCallback(null)\n })\n\n const retakeButton = buttons\n .appendChild(dom.createElement('td')) // Retake button\n .appendChild(widgets.button(dom, retakeIcon, 'Retake'))\n retakeButton.addEventListener('click', _event => {\n retake()\n })\n retakeButton.style.visibility = 'collapse' // Hide for now\n\n const shutterButton = buttons\n .appendChild(dom.createElement('td')) // Trigger capture button\n .appendChild(\n widgets.button(dom, icons.iconBase + 'noun_10636.svg', 'Snap')\n )\n shutterButton.addEventListener('click', grabCanvas)\n shutterButton.style.visibility = 'collapse' // Hide for now\n\n const sendButton = buttons\n .appendChild(dom.createElement('td')) // Confirm and save button\n .appendChild(widgets.continueButton(dom)) // @@ or send icon??\n sendButton.addEventListener('click', _event => {\n saveBlob(imageBlob, destination)\n })\n sendButton.style.visibility = 'collapse' // Hide for now\n\n function displayPlayer () {\n player = main.appendChild(dom.createElement('video'))\n player.setAttribute('controls', '1')\n player.setAttribute('autoplay', '1')\n player.setAttribute('style', controlStyle)\n if (!navigator.mediaDevices) {\n throw new Error('navigator.mediaDevices not available')\n }\n navigator.mediaDevices.getUserMedia(constraints).then(stream => {\n player.srcObject = stream\n shutterButton.style.visibility = 'visible' // Enable\n sendButton.style.visibility = 'collapse'\n retakeButton.style.visibility = 'collapse'\n })\n }\n\n const constraints = {\n video: true\n }\n\n function retake () {\n main.removeChild(canvas)\n displayPlayer() // Make new one as old one is stuck black\n }\n\n function grabCanvas () {\n // Draw the video frame to the canvas.\n canvas = dom.createElement('canvas')\n canvas.setAttribute('width', canvasWidth)\n canvas.setAttribute('height', canvasHeight)\n canvas.setAttribute('style', controlStyle)\n main.appendChild(canvas)\n\n const context = canvas.getContext('2d')\n context.drawImage(player, 0, 0, canvas.width, canvas.height)\n\n player.parentNode.removeChild(player)\n\n canvas.toBlob(blob => {\n const msg = `got blob type ${blob.type} size ${blob.size}`\n debug.log(msg)\n destination = getImageDoc()\n imageBlob = blob // save for review\n reviewImage()\n // alert(msg)\n }, contentType) // toBlob\n }\n\n function reviewImage () {\n sendButton.style.visibility = 'visible'\n retakeButton.style.visibility = 'visible'\n shutterButton.style.visibility = 'collapse' // Hide for now\n }\n\n function stopVideo () {\n if (player && player.srcObject) {\n player.srcObject.getVideoTracks().forEach(track => track.stop())\n }\n }\n function saveBlob (blob, destination) {\n const contentType = blob.type\n // if (!confirm('Save picture to ' + destination + ' ?')) return\n debug.log(\n 'Putting ' + blob.size + ' bytes of ' + contentType + ' to ' + destination\n )\n // @@ TODO Remove casting\n ;(store as any).fetcher\n .webOperation('PUT', destination.uri, {\n data: blob,\n contentType\n })\n .then(\n _resp => {\n debug.log('ok saved ' + destination)\n stopVideo()\n doneCallback(destination)\n },\n err => {\n stopVideo()\n alert(err)\n }\n )\n }\n\n // Attach the video stream to the video element and autoplay.\n displayPlayer()\n return div\n}\n\n/** A button to capture a picture using camera\n * @param {Docuemnt} dom - The Document object\n * @param {IndexedForumla} store - The quadstore to store data in\n * @param {fuunction} getImageDoc - returns NN of the image file to be created\n * @param {function<Node>} doneCallback - called with the image taken\n * @returns {DomElement} - A div element with the buton in it\n *\n * This expacts the buttton to a large control when it is pressed\n */\n\nexport function cameraButton (\n dom: HTMLDocument,\n store: IndexedFormula,\n getImageDoc: () => NamedNode,\n doneCallback: (imageDoc) => Promise<void>\n): HTMLElement {\n const div = dom.createElement('div')\n const but = widgets.button(dom, cameraIcon, 'Take picture')\n let control\n async function restoreButton (imageDoc) {\n div.removeChild(control)\n div.appendChild(but)\n doneCallback(imageDoc)\n }\n div.appendChild(but)\n but.addEventListener('click', _event => {\n div.removeChild(but)\n control = cameraCaptureControl(\n dom,\n store,\n getImageDoc,\n restoreButton\n )\n div.appendChild(control)\n })\n return div\n}\n"],"mappings":"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"}
|