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.
Files changed (136) hide show
  1. package/dist/main.js +2159 -5039
  2. package/dist/main.js.map +1 -1
  3. package/lib/acl/access-controller.js +4 -67
  4. package/lib/acl/access-controller.js.map +1 -1
  5. package/lib/acl/access-groups.js +59 -137
  6. package/lib/acl/access-groups.js.map +1 -1
  7. package/lib/acl/acl-control.js +14 -54
  8. package/lib/acl/acl-control.js.map +1 -1
  9. package/lib/acl/acl.js +32 -107
  10. package/lib/acl/acl.js.map +1 -1
  11. package/lib/acl/add-agent-buttons.js +0 -92
  12. package/lib/acl/add-agent-buttons.js.map +1 -1
  13. package/lib/acl/index.js +1 -3
  14. package/lib/acl/index.js.map +1 -1
  15. package/lib/acl/styles.js +1 -2
  16. package/lib/acl/styles.js.map +1 -1
  17. package/lib/chat/bookmarks.js +8 -80
  18. package/lib/chat/bookmarks.js.map +1 -1
  19. package/lib/chat/chatLogic.js +109 -180
  20. package/lib/chat/chatLogic.js.map +1 -1
  21. package/lib/chat/dateFolder.js +6 -91
  22. package/lib/chat/dateFolder.js.map +1 -1
  23. package/lib/chat/infinite.js +33 -185
  24. package/lib/chat/infinite.js.map +1 -1
  25. package/lib/chat/message.js +37 -150
  26. package/lib/chat/message.js.map +1 -1
  27. package/lib/chat/messageTools.js +23 -96
  28. package/lib/chat/messageTools.js.map +1 -1
  29. package/lib/chat/thread.js +33 -91
  30. package/lib/chat/thread.js.map +1 -1
  31. package/lib/create/create.js +19 -51
  32. package/lib/create/create.js.map +1 -1
  33. package/lib/create/index.js +0 -2
  34. package/lib/create/index.js.map +1 -1
  35. package/lib/debug.js +0 -8
  36. package/lib/debug.js.map +1 -1
  37. package/lib/folders.js +4 -27
  38. package/lib/folders.js.map +1 -1
  39. package/lib/footer/index.js +2 -24
  40. package/lib/footer/index.js.map +1 -1
  41. package/lib/footer/styleMap.js.map +1 -1
  42. package/lib/header/empty-profile.js.map +1 -1
  43. package/lib/header/index.js +3 -72
  44. package/lib/header/index.js.map +1 -1
  45. package/lib/header/styleMap.js +4 -3
  46. package/lib/header/styleMap.js.map +1 -1
  47. package/lib/iconBase.js +3 -4
  48. package/lib/iconBase.js.map +1 -1
  49. package/lib/index.js +5 -46
  50. package/lib/index.js.map +1 -1
  51. package/lib/jss/index.js +3 -9
  52. package/lib/jss/index.js.map +1 -1
  53. package/lib/log.js +15 -51
  54. package/lib/log.js.map +1 -1
  55. package/lib/login/login.js +74 -303
  56. package/lib/login/login.js.map +1 -1
  57. package/lib/matrix/index.js +0 -2
  58. package/lib/matrix/index.js.map +1 -1
  59. package/lib/matrix/matrix.js +7 -55
  60. package/lib/matrix/matrix.js.map +1 -1
  61. package/lib/media/index.js +0 -2
  62. package/lib/media/index.js.map +1 -1
  63. package/lib/media/media-capture.js +13 -33
  64. package/lib/media/media-capture.js.map +1 -1
  65. package/lib/messageArea.js +23 -64
  66. package/lib/messageArea.js.map +1 -1
  67. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  68. package/lib/ns.js +5 -7
  69. package/lib/ns.js.map +1 -1
  70. package/lib/pad.js +48 -234
  71. package/lib/pad.js.map +1 -1
  72. package/lib/participation.js +10 -65
  73. package/lib/participation.js.map +1 -1
  74. package/lib/preferences.js +21 -42
  75. package/lib/preferences.js.map +1 -1
  76. package/lib/signup/config-default.js +1 -8
  77. package/lib/signup/config-default.js.map +1 -1
  78. package/lib/signup/signup.js +6 -13
  79. package/lib/signup/signup.js.map +1 -1
  80. package/lib/stories/decorators.js +0 -2
  81. package/lib/stories/decorators.js.map +1 -1
  82. package/lib/style.js +8 -5
  83. package/lib/style.js.map +1 -1
  84. package/lib/style_multiSelect.js +1 -5
  85. package/lib/style_multiSelect.js.map +1 -1
  86. package/lib/table.js +309 -322
  87. package/lib/table.js.map +1 -1
  88. package/lib/tabs.js +20 -100
  89. package/lib/tabs.js.map +1 -1
  90. package/lib/utils/headerFooterHelpers.js +4 -52
  91. package/lib/utils/headerFooterHelpers.js.map +1 -1
  92. package/lib/utils/index.js +41 -135
  93. package/lib/utils/index.js.map +1 -1
  94. package/lib/utils/label.js +13 -34
  95. package/lib/utils/label.js.map +1 -1
  96. package/lib/versionInfo.js +4 -4
  97. package/lib/versionInfo.js.map +1 -1
  98. package/lib/widgets/buttons/iconLinks.js +0 -8
  99. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  100. package/lib/widgets/buttons.js +115 -291
  101. package/lib/widgets/buttons.js.map +1 -1
  102. package/lib/widgets/dragAndDrop.js +12 -41
  103. package/lib/widgets/dragAndDrop.js.map +1 -1
  104. package/lib/widgets/error.js +3 -9
  105. package/lib/widgets/error.js.map +1 -1
  106. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
  107. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  108. package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
  109. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  110. package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
  111. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  112. package/lib/widgets/forms/autocomplete/language.js +6 -55
  113. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  114. package/lib/widgets/forms/autocomplete/publicData.js +12 -131
  115. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  116. package/lib/widgets/forms/basic.js +12 -55
  117. package/lib/widgets/forms/basic.js.map +1 -1
  118. package/lib/widgets/forms/comment.js +1 -15
  119. package/lib/widgets/forms/comment.js.map +1 -1
  120. package/lib/widgets/forms/fieldFunction.js +3 -16
  121. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  122. package/lib/widgets/forms/fieldParams.js +0 -12
  123. package/lib/widgets/forms/fieldParams.js.map +1 -1
  124. package/lib/widgets/forms/formStyle.js +1 -14
  125. package/lib/widgets/forms/formStyle.js.map +1 -1
  126. package/lib/widgets/forms.js +70 -474
  127. package/lib/widgets/forms.js.map +1 -1
  128. package/lib/widgets/index.js +0 -21
  129. package/lib/widgets/index.js.map +1 -1
  130. package/lib/widgets/multiSelect.js +48 -171
  131. package/lib/widgets/multiSelect.js.map +1 -1
  132. package/lib/widgets/peoplePicker.js +20 -90
  133. package/lib/widgets/peoplePicker.js.map +1 -1
  134. package/lib/widgets/widgetHelpers.js +2 -9
  135. package/lib/widgets/widgetHelpers.js.map +1 -1
  136. package/package.json +28 -28
@@ -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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"}
@@ -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
@@ -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":";;;;;;;AAAA;;AAKO,IAAMA,KAAK,GAAG;EACnBC,oBAAoB,EAApBA,kCADmB;EAEnBC,YAAY,EAAZA;AAFmB,CAAd"}
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, ";"); // const controlStyle = 'border-radius: 0.5em; margin: 0.8em; width: 320; height:240;'
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
- reviewImage(); // alert(msg)
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; // if (!confirm('Save picture to ' + destination + ' ?')) return
156
-
157
- debug.log('Putting ' + blob.size + ' bytes of ' + contentType + ' to ' + destination) // @@ TODO Remove casting
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
- } // Attach the video stream to the video element and autoplay.
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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"}