Skip to content

Latest commit

 

History

History
72 lines (61 loc) · 2.55 KB

File metadata and controls

72 lines (61 loc) · 2.55 KB
AppUtils(base = "/foo", export_fn_fe=True).wrap_app(app)

Add a container for IIB

+ gr.HTML("error", elem_id="bar_iib_container")
- gr.HTML("error", elem_id="infinite_image_browsing_container_wrapper")

Load index.js on the browser side.

const jscodeResp = await fetch("/file?path=/path/to/your/submodue-iib/index.js") // fake api
const jsText = await jscodeResp.text()
const js = jsText
  .replace("__iib_root_container__", "'#bar_iib_container'")
  .replace("__iib_should_maximize__", "false")
  .replace(/\/infinite_image_browsing/g, "/foo")
eval(js)
const iib = gradioApp().querySelector('#bar_iib_container iframe').contentWindow

const { insertTabPane, getTabList, getPageRef, createGridViewFile: f } = iib
// The createGridViewFile function is a helper function that simplifies the creation of a FileNodeInfo object.
const files = [
  // Create an array of files with their corresponding tags.
  f('/path/to/img/1', ['tag1', 'tag2']),
  f('/path/to/img/2', ['tag3', 'tag4', 'tag6']),
  f('/path/to/img/3', ['tag2', 'tag5']),
  f('/path/to/img/4', ['tag1', 'tag2'])
]

// Insert a new tab pane of grid view type and assign it to the gridView variable.
const gridView = insertTabPane({
  // Optional parameters for tab index and pane index.
  tabIdx: 0,
  paneIdx: 0,
  pane: {
    type: 'grid-view', // Other types are also available, see https://github.com/zanllp/sd-webui-infinite-image-browsing/tree/main/vue/src/store/useGlobalStore.ts#L15
    name: 'Grid View 1',
    removable: true, // Optional parameter to allow the files to be removed, default is false.
    allowDragAndDrop: true, // Optional parameter to allow drag and drop, default is false.
    files // Use the files array created earlier for this pane.
  }
})

// Retrieve the files from the gridView pane and set them back to the same pane.
const files = gridView.ref.getFiles()
gridView.ref.setFiles(files)

// Get the tab list
const tabList = getTabList()
tabList[0].panes.key

// Get the file list from the first pane of the first tab.
const pane = tabList[0].panes[0]
getPageRef(pane.key).getFiles()

// Insert a new tab pane of local type with the specified directory path.
const localDirPane = insertTabPane({
  pane: {
    type: 'local',
    path: 'E:/_归档/green'
  }
})
localDirPane.ref.close() // Closes the newly created tab pane

To learn more information, you can refer to the type definition in the following file: https://github.com/zanllp/sd-webui-infinite-image-browsing/tree/main/vue/src/store/useGlobalStore.ts#L15 and this file: define.